{"version":3,"file":"dhtmlxscheduler.js","sources":["../../sources/dhtmlx_hook.js","../../sources/global.js","../../sources/plugins/drag_highlight_pos.js","../../sources/plugins/undo_delete.js","../../sources/plugins/limit.js","../../sources/plugins/batch_update.js","../../sources/plugins/index.js","../../sources/core/utils/utils.js","../../sources/core/state.js","../../sources/core/common/assert.js","../../sources/core/common_errors.js","../../sources/core/connector.js","../../sources/core/nav_bar.js","../../sources/core/scheduler_resize_listener.js","../../sources/utils/eventable.js","../../sources/core/scheduler.js","../../sources/core/utils/event.js","../../sources/core/utils/scoped_event.js","../../sources/core/common.js","../../sources/core/wai_aria.js","../../sources/core/utils/dom_helpers.js","../../sources/utils/env.js","../../sources/core/destructor.js","../../sources/core/common/url_serialize.js","../../sources/core/utils/ajax.js","../../sources/core/base.js","../../sources/core/config.js","../../sources/core/event.js","../../sources/core/event_highlight.js","../../sources/core/loaders/xml.js","../../sources/core/loaders/json.js","../../sources/core/loaders/ical.js","../../sources/core/common/get_serializable_events.js","../../sources/core/load.js","../../sources/core/lightbox.js","../../sources/core/touch.js","../../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../../sources/core/skins.js","../../sources/core/jquery.js","../../sources/core/delay_render.js","../../sources/core/dataprocessor/dataprocessor_hooks.js","../../sources/core/dataprocessor/dataprocessor.js","../../sources/core/message.js","../../sources/locale/locale_ar.js","../../sources/locale/locale_be.js","../../sources/locale/locale_ca.js","../../sources/locale/locale_cn.js","../../sources/locale/locale_cs.js","../../sources/locale/locale_da.js","../../sources/locale/locale_de.js","../../sources/locale/locale_el.js","../../sources/locale/locale_en.js","../../sources/locale/locale_es.js","../../sources/locale/locale_fi.js","../../sources/locale/locale_fr.js","../../sources/locale/locale_he.js","../../sources/locale/locale_hu.js","../../sources/locale/locale_id.js","../../sources/locale/locale_it.js","../../sources/locale/locale_jp.js","../../sources/locale/locale_manager.js","../../sources/locale/locale_nb.js","../../sources/locale/locale_nl.js","../../sources/locale/locale_no.js","../../sources/locale/locale_pl.js","../../sources/locale/locale_pt.js","../../sources/locale/locale_ro.js","../../sources/locale/locale_ru.js","../../sources/locale/locale_si.js","../../sources/locale/locale_sk.js","../../sources/locale/locale_sv.js","../../sources/locale/locale_tr.js","../../sources/locale/locale_ua.js","../../sources/locale/index.js","../../sources/core/datepicker.js","../../sources/scheduler_factory_method.js","../../sources/ext/extension_manager.js","../../sources/scheduler_factory.js","../../sources/ext/active_links.js","../../sources/ext/agenda_legacy_view.js","../../sources/ext/agenda.js","../../sources/ext/all_timed.js","../../sources/ext/collision.js","../../sources/ext/container_autoresize.js","../../sources/ext/cookie.js","../../sources/ext/restricted_extensions/not_implemented_extension.js","../../sources/ext/restricted_extensions/daytimeline.js","../../sources/ext/restricted_extensions/drag_between.js","../../sources/ext/editors.js","../../sources/ext/expand.js","../../sources/ext/restricted_extensions/grid_view.js","../../sources/ext/html_templates.js","../../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../../sources/ext/keyboard_navigation/common/eventhandler.js","../../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../../sources/ext/keyboard_navigation/marker.js","../../sources/ext/keyboard_navigation/elements/scheduler_node.js","../../sources/ext/keyboard_navigation/elements/nav_node.js","../../sources/ext/keyboard_navigation/elements/header_cell.js","../../sources/ext/keyboard_navigation/elements/event.js","../../sources/ext/keyboard_navigation/elements/time_slot.js","../../sources/ext/keyboard_navigation/elements/minical_button.js","../../sources/ext/keyboard_navigation/elements/minical_cell.js","../../sources/ext/keyboard_navigation/elements/data_area.js","../../sources/ext/keyboard_navigation/modals.js","../../sources/ext/keyboard_navigation/core.js","../../sources/ext/keyboard_navigation/key_nav_legacy.js","../../sources/ext/keyboard_navigation/scheduler_handlers.js","../../sources/ext/keyboard_navigation/minical_handlers.js","../../sources/ext/key_nav.js","../../sources/ext/layer.js","../../sources/ext/limit.js","../../sources/ext/map_view/gMapAdapter.ts","../../sources/ext/map_view/osmMapAdapter.ts","../../sources/ext/map_view/mapboxAdapter.ts","../../sources/ext/map_view/index.ts","../../sources/ext/minical.js","../../sources/ext/monthheight.js","../../sources/ext/restricted_extensions/multisection.js","../../sources/ext/multiselect.js","../../sources/ext/multisource.js","../../sources/ext/mvc.js","../../sources/ext/outerdrag.js","../../sources/ext/pdf.js","../../sources/ext/quick_info.js","../../sources/ext/readonly.js","../../node_modules/rrule/dist/esm/weekday.js","../../node_modules/rrule/dist/esm/helpers.js","../../node_modules/rrule/dist/esm/dateutil.js","../../node_modules/rrule/dist/esm/iterresult.js","../../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../../node_modules/rrule/dist/esm/callbackiterresult.js","../../node_modules/rrule/dist/esm/nlp/i18n.js","../../node_modules/rrule/dist/esm/nlp/totext.js","../../node_modules/rrule/dist/esm/nlp/parsetext.js","../../node_modules/rrule/dist/esm/types.js","../../node_modules/rrule/dist/esm/nlp/index.js","../../node_modules/rrule/dist/esm/datetime.js","../../node_modules/rrule/dist/esm/parseoptions.js","../../node_modules/rrule/dist/esm/parsestring.js","../../node_modules/rrule/dist/esm/datewithzone.js","../../node_modules/rrule/dist/esm/optionstostring.js","../../node_modules/rrule/dist/esm/cache.js","../../node_modules/rrule/dist/esm/masks.js","../../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../../node_modules/rrule/dist/esm/iterinfo/easter.js","../../node_modules/rrule/dist/esm/iterinfo/index.js","../../node_modules/rrule/dist/esm/iter/poslist.js","../../node_modules/rrule/dist/esm/iter/index.js","../../node_modules/rrule/dist/esm/rrule.js","../../node_modules/rrule/dist/esm/iterset.js","../../node_modules/rrule/dist/esm/rrulestr.js","../../node_modules/rrule/dist/esm/rruleset.js","../../sources/ext/recurring.js","../../sources/ext/recurring_legacy.js","../../sources/ext/serialize.js","../../sources/ext/restricted_extensions/timeline.js","../../sources/ext/tooltip/tooltip.ts","../../sources/ext/tooltip/tooltipManager.ts","../../sources/ext/tooltip/index.ts","../../sources/ext/restricted_extensions/treetimeline.js","../../sources/ext/restricted_extensions/units.js","../../sources/ext/url.js","../../sources/ext/restricted_extensions/week_agenda.js","../../sources/ext/wp.js","../../sources/ext/year_view.js","../../sources/ext/export_api/index.js","../../sources/ext/extensions_gpl.js","../../sources/dhtmlxscheduler.gpl.js"],"sourcesContent":["\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '<div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div>';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '<div id=\"' + obj.id + '\" class=\"dhx_cal_container\" style=\"width:100%; height:100%;\"><div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div>' + tabs + '</div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div></div>';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n    let dndMarkers = [];\r\n    let dragStarted = false;\r\n    let eventNode = null;\r\n    let event = null;\r\n\r\n    function isEnabled() { \r\n        return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n    }\r\n\r\n    function checkViewName(viewName){\r\n        const viewObj = scheduler.getView(viewName);\r\n        if(viewObj){\r\n            return viewObj.layout;\r\n        }\r\n        return viewName;\r\n    }\r\n\r\n    function checkSectionPropertyName(viewName){\r\n        const viewObj = scheduler.getView(viewName);\r\n        if(viewObj.y_property){\r\n            return viewObj.y_property;\r\n        }\r\n        if(viewObj.map_to){\r\n            return viewObj.map_to;\r\n        }\r\n    }\r\n\r\n    function setRequiredStylesToMarker(eventNode, layout){\r\n        switch (layout) {\r\n            case \"month\":\r\n                eventNode.style.top = \"\";\r\n                eventNode.style.left = \"\";\r\n                break;\r\n            case \"timeline\":\r\n                eventNode.style.left = \"\";\r\n                eventNode.style.marginLeft = \"1px\";\r\n                break;\r\n            default:\r\n                eventNode.style.top = \"\";\r\n                break;\r\n        }\r\n    }\r\n    \r\n    function createMarkerConfig(configSettings){\r\n        const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n        setRequiredStylesToMarker(eventNode, layout);\r\n        const sections = {};\r\n        let markerObject = {\r\n            start_date: event.start_date,\r\n            end_date: event.end_date,\r\n            css: \"dhx_scheduler_dnd_marker\",\r\n            html: eventNode\r\n        };\r\n        if (layout == \"timeline\" || layout == \"month\" ){\r\n            // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n            markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n        }\r\n        if (sectionId){\r\n            sections[viewName] = sectionId;\r\n            markerObject.sections = sections;\r\n        }\r\n        return markerObject;\r\n    }\r\n\r\n    function createViewMarker(settings){\r\n        const { layout } = settings;\r\n        let markerConfigs;\r\n        switch (layout) {\r\n            case \"month\": \r\n                markerConfigs = getMonthViewMarkers(settings);\r\n                break;\r\n            case 'timeline':\r\n            case 'units':\r\n                markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n                break;\r\n            default: \r\n                markerConfigs = getColumnViewMarkers(settings);\r\n                break;\r\n        }\r\n        markerConfigs.forEach((cfg) => {\r\n            dndMarkers.push(scheduler.markTimespan(cfg));\r\n        });\r\n    }\r\n\r\n    function getColumnViewMarkers(settings){\r\n        const {event, layout, viewName, sectionId} = settings;\r\n        let columnViewMarkersArray = [];\r\n            let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n            if(eventNodes){\r\n                for (let i = 0; i < eventNodes.length; i++) {\r\n                    let eventNodeClone = eventNodes[i].cloneNode(true);\r\n                    let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n                    let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n                    let dates = {start_date: startDate, end_date: endDate};\r\n                    const configSettings = {\r\n                        event: dates, \r\n                        layout, \r\n                        viewName, \r\n                        sectionId, \r\n                        eventNode:eventNodeClone\r\n                    };\r\n                    columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n                }\t\r\n            }\r\n        return columnViewMarkersArray;\r\n    }\r\n\r\n    function getMonthViewMarkers(settings){\r\n        let monthViewMarkersArray = [];\r\n        const {event, layout, viewName, sectionId} = settings;\r\n        const weekDates = [];\r\n        let currDate = new Date(event.start_date);\r\n        while(currDate.valueOf() < event.end_date.valueOf()){\r\n            let obj = {start_date: currDate};\r\n            weekDates.push(obj);\r\n            currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n        }\r\n        let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n        for (let i = 0; i < cells.length; i++) {\r\n            const configSettings = {\r\n                event: weekDates[i], \r\n                layout, \r\n                viewName, \r\n                sectionId, \r\n                eventNode: cells[i].cloneNode(true)\r\n            };\r\n            monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n        }\r\n        return monthViewMarkersArray;\r\n    }\r\n\r\n    function getTimelineAndUnitsViewMarkers(settings){\r\n        let unitMarkersArray = [];\r\n        const {event, layout, viewName, eventNode} = settings;\r\n        let sectionPropertyName = checkSectionPropertyName(viewName);\r\n            if (sectionPropertyName){\r\n            const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n            const formatedSections = sections.map(element => String(element));\r\n            const elems = [];\r\n            for (let i = 0; i < formatedSections.length; i++) {\r\n                elems[i] = eventNode.cloneNode(true);\r\n                const configSettings = {\r\n                    event, \r\n                    layout, \r\n                    viewName, \r\n                    sectionId: formatedSections[i],\r\n                    eventNode: elems[i]\r\n                };\r\n                unitMarkersArray.push(createMarkerConfig(configSettings));\r\n            }\r\n        }\r\n        return unitMarkersArray;\r\n    }\r\n    \r\n    scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n        if (isEnabled()) {\r\n            dragStarted = true;\r\n            event = scheduler.getEvent(id);\r\n            eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n            const viewName = scheduler.getState().mode;\r\n            const layout = checkViewName(viewName);\r\n            // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n            if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n                scheduler.unselect(id);\r\n                eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n            }\r\n        }\r\n        return true;\r\n    });\r\n\r\n    scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n        if(dragStarted && isEnabled()){\r\n            dragStarted = false;// insert element only once after dnd start\r\n            const viewName = scheduler.getState().mode;\r\n            const layout = checkViewName(viewName);\r\n            const sectionId = scheduler.getActionData(e).section;\r\n            if (event) {\r\n                const settings = {\r\n                    event, \r\n                    layout, \r\n                    viewName, \r\n                    sectionId, \r\n                    eventNode\r\n                };\r\n                createViewMarker(settings);\r\n            }\r\n        }\r\n    });\r\n\r\n    scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n        for (let i = 0; i < dndMarkers.length; i++) {\r\n            scheduler.unmarkTimespan(dndMarkers[i]);\r\n        }\r\n        dndMarkers = [];\r\n        eventNode = null;\r\n        event = null;\r\n    });\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `<div class=\"dhx_info_message\">\r\n                            <span class=\"undo_popup_text\">Event deleted</span>\r\n                            <button class=\"undo_button\" data-deleted-event-id=\"${ev.id}\">Undo</button>\r\n                        </div>`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStart<eventEnd && markerEnd>eventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p<evs.length; p++) {\r\n\t\t\tvar res = true;\r\n\t\t\tvar ev = evs[p];\r\n\t\t\t// Event could have old _timed property (e.g. we are creating event with DND on timeline view and crossed day)\r\n\t\t\tev._timed = scheduler.isOneDayEvent(ev);\r\n\r\n\t\t\tres = (c.limit_start && c.limit_end) ? (ev.start_date.valueOf() >= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i<blocked_timeline_zones.length; i++) {\r\n\t\t\t\tzones = this._add_timespan_zones(zones, blocked_timeline_zones[i].zones);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn zones;\r\n\t};\r\n\tscheduler._get_relevant_blocked_zones = function(day_index, day_value, zones, timespan_type) {\r\n\t\tvar resultZones;\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tresultZones = (zones[day_value] && zones[day_value][timespan_type]) ? zones[day_value][timespan_type] :\r\n\t\t\t(zones[day_index] && zones[day_index][timespan_type]) ? zones[day_index][timespan_type] : [];\r\n\t\t}else{\r\n\t\t\tresultZones = [];\r\n\t\t\tif(zones[day_value] && zones[day_value][timespan_type]){\r\n\t\t\t\tresultZones = resultZones.concat(zones[day_value][timespan_type]);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif((zones[day_index] && zones[day_index][timespan_type])){\r\n\t\t\t\tresultZones = resultZones.concat(zones[day_index][timespan_type]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn resultZones;\r\n\t};\r\n\tfunction getZones(ev, timespans, day_index, day_value, timespan_type){\r\n\t\tvar s = scheduler;\r\n\t\t//containers for 'unit' and 'timeline' views, and related 'section_id' properties\r\n\t\tvar zones = [];\r\n\t\tvar containers = {\r\n\t\t\t'_props':'map_to',\r\n\t\t\t'matrix':'y_property'};\r\n\t\t//check blocked sections in all units and timelines\r\n\t\tfor(var container in containers){\r\n\t\t\tvar property = containers[container];\r\n\t\t\tif(s[container]){\r\n\t\t\t\tfor(var view in s[container]){\r\n\t\t\t\t\tvar view_config = s[container][view];\r\n\t\t\t\t\tvar linker = view_config[property];\r\n\t\t\t\t\tif(!ev[linker]) continue;\r\n\t\t\t\t\tzones =  s._add_timespan_zones(zones,\r\n\t\t\t\t\t\tscheduler._get_blocked_zones(timespans[view], ev[linker], day_index, day_value, timespan_type));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// now need to add day blocks\r\n\t\tzones = s._add_timespan_zones(zones, scheduler._get_blocked_zones(timespans, 'global', day_index, day_value, timespan_type));\r\n\t\treturn zones;\r\n\t}\r\n\r\n\tscheduler._mark_now = function(hide) {\r\n\t\t// day, week, units views\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tif (!this._els[dhx_now_time]) {\r\n\t\t\tthis._els[dhx_now_time] = [];\r\n\t\t}\r\n\t\tvar now = scheduler._currentDate();\r\n\t\tvar cfg = this.config;\r\n\t\tscheduler._remove_mark_now(); // delete previous marks if they exist\r\n\t\tif (!hide && cfg.mark_now && now < this._max_date && now > this._min_date && now.getHours() >= cfg.first_hour && now.getHours()<cfg.last_hour) {\r\n\t\t\tvar day_index = this.locate_holder_day(now);\r\n\t\t\tthis._els[dhx_now_time] = scheduler._append_mark_now(day_index, now);\r\n\t\t}\r\n\t};\r\n\tscheduler._append_mark_now = function(day_index, now) {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar zone_start= scheduler._get_zone_minutes(now);\r\n\t\tvar options = {\r\n\t\t\tzones: [zone_start, zone_start+1],\r\n\t\t\tcss: dhx_now_time,\r\n\t\t\ttype: dhx_now_time\r\n\t\t};\r\n\t\tif (!this._table_view) {\r\n\t\t\tif (this._props && this._props[this._mode]) { // units view\r\n\t\t\t\tvar start_index,\r\n\t\t\t\t\tend_index;\r\n\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\tif (view.days > 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else {  // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i<els.length; i++) {\r\n\t\t\tvar div = els[i];\r\n\t\t\tvar parent = div.parentNode;\r\n\t\t\tif (parent) {\r\n\t\t\t\tparent.removeChild(div);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._els[dhx_now_time] = [];\r\n\t};\r\n\r\n\t/*\r\n\tscheduler._marked_timespans = {\r\n\t\t\"global\": {\r\n\t\t\t\"0\": {\r\n\t\t\t\t\"default\": [\r\n\t\t\t\t\t{  // sunday\r\n\t\t\t\t\t\tzones: [0, 100, 500, 600],\r\n\t\t\t\t\t\tcss: \"yellow_box\",\r\n\t\t\t\t\t\ttype: \"default\",\r\n\t\t\t\t\t\tview: \"global\",\r\n\t\t\t\t\t\tday: 0\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t\t\"112121312\": {\r\n\t\t\t\t\"my_special_type\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tzones: [600, 900],\r\n\t\t\t\t\t\ttype: \"block\",\r\n\t\t\t\t\t\tcss: \"some_class\",\r\n\t\t\t\t\t\tview: \"global\",\r\n\t\t\t\t\t\tday: 112121312\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"units\": {\r\n\t\t\t\"5_id\": {\r\n\t\t\t\t\"3\": {\r\n\t\t\t\t\t\"special_type\": [ {}, {}, {} ],\r\n\t\t\t\t\t\"another_type\": [ {} ]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"6_id\": {\r\n\t\t\t\t\"11212127\": {\r\n\t\t\t\t\t...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n\tscheduler._marked_timespans = { global: {} };\r\n\r\n\tscheduler._get_zone_minutes = function(date) {\r\n\t\treturn date.getHours()*60 + date.getMinutes();\r\n\t};\r\n\tscheduler._prepare_timespan_options = function(config) { // receives 1 option, returns array of options\r\n\t\tvar r_configs = []; // resulting configs\r\n\t\tvar temp_configs = [];\r\n\r\n\t\tif (config.days == \"fullweek\")\r\n\t\t\tconfig.days = [0,1,2,3,4,5,6];\r\n\r\n\t\tif (config.days instanceof Array) {\r\n\t\t\tvar t_days = config.days.slice();\r\n\t\t\tfor (var i=0; i<t_days.length; i++) {\r\n\t\t\t\tvar cloned_config = scheduler._lame_clone(config);\r\n\t\t\t\tcloned_config.days = t_days[i];\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._prepare_timespan_options(cloned_config));\r\n\t\t\t}\r\n\t\t\treturn r_configs;\r\n\t\t}\r\n\r\n\t\tif ( !config ||\r\n\t\t\t!((config.start_date && config.end_date && config.end_date > config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs;  // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i<ids.length; i++) {\r\n\t\t\t\t\t\tvar t_config = scheduler._lame_copy({}, config);\r\n\t\t\t\t\t\tt_config.sections = {};\r\n\t\t\t\t\t\tt_config.sections[view_key] = ids[i];\r\n\t\t\t\t\t\ttemp_configs.push(t_config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttemp_configs.push(config);\r\n\t\t}\r\n\r\n\t\tfor (var k=0; k<temp_configs.length; k++) {\r\n\t\t\tvar c_config = temp_configs[k]; // config to be checked\r\n\r\n\t\t\tvar start_date = c_config.start_date;\r\n\t\t\tvar end_date = c_config.end_date;\r\n\r\n\t\t\tif (start_date && end_date) {\r\n\t\t\t\tvar t_sd = scheduler.date.date_part(new Date(start_date)); // e.g. 05 october\r\n\t\t\t\tvar t_ed= scheduler.date.add(t_sd, 1, \"day\");  // 06 october, will both be incremented in the loop\r\n\r\n\t\t\t\twhile (t_sd < end_date) {\r\n\t\t\t\t\tvar t_config = scheduler._lame_copy({}, c_config);\r\n\t\t\t\t\tdelete t_config.start_date;\r\n\t\t\t\t\tdelete t_config.end_date;\r\n\t\t\t\t\tt_config.days = t_sd.valueOf();\r\n\t\t\t\t\tvar zone_start = (start_date > t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block  = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i<divs.length; i++) {\r\n\t\t\tvar div = divs[i];\r\n\t\t\t// parent may no longer be present if we switched views, navigated\r\n\t\t\tif (div.parentNode) {\r\n\t\t\t\tdiv.parentNode.removeChild(div);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tscheduler._addMarkerTimespanConfig = function(config){\r\n\t\tvar global = \"global\";\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar id = config.id;\r\n\r\n\t\tvar ids = scheduler._marked_timespans_ids;\r\n\t\tif (!ids[id])\r\n\t\t\tids[id] = [];\r\n\r\n\r\n\t\tvar day = config.days;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tvar type = config.type; // default or specified\r\n\t\tconfig.id = id;\r\n\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tif (!timespans[view_key])\r\n\t\t\t\t\t\ttimespans[view_key] = {};\r\n\t\t\t\t\tvar unit_id = sections[view_key];\r\n\t\t\t\t\tvar timespans_view = timespans[view_key];\r\n\t\t\t\t\tif (!timespans_view[unit_id])\r\n\t\t\t\t\t\ttimespans_view[unit_id] = {};\r\n\t\t\t\t\tif (!timespans_view[unit_id][day])\r\n\t\t\t\t\t\ttimespans_view[unit_id][day] = {};\r\n\t\t\t\t\tif (!timespans_view[unit_id][day][type]){\r\n\t\t\t\t\t\ttimespans_view[unit_id][day][type] = [];\r\n\t\t\t\t\t\tif(!scheduler._marked_timespans_types)\r\n\t\t\t\t\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t\t\t\t\tif(!scheduler._marked_timespans_types[type])\r\n\t\t\t\t\t\t\tscheduler._marked_timespans_types[type] = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar day_configs = timespans_view[unit_id][day][type];\r\n\t\t\t\t\tconfig._array = day_configs;\r\n\t\t\t\t\tday_configs.push(config);\r\n\t\t\t\t\tids[id].push(config);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!timespans[global][day])\r\n\t\t\t\ttimespans[global][day] = {};\r\n\t\t\tif (!timespans[global][day][type])\r\n\t\t\t\ttimespans[global][day][type] = [];\r\n\r\n\t\t\tif(!scheduler._marked_timespans_types)\r\n\t\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t\tif(!scheduler._marked_timespans_types[type])\r\n\t\t\t\tscheduler._marked_timespans_types[type] = true;\r\n\r\n\t\t\tvar day_configs = timespans[global][day][type];\r\n\t\t\tconfig._array = day_configs;\r\n\t\t\tday_configs.push(config);\r\n\t\t\tids[id].push(config);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tscheduler._marked_timespans_ids = {};\r\n\t// adds marked timespan to collections, persistent\r\n\tscheduler.addMarkedTimespan = function(configuration) {\r\n\t\tvar configs = scheduler._prepare_timespan_options(configuration);\r\n\t\tif (!configs.length)\r\n\t\t\treturn; // options are incorrect, nothing to mark\r\n\r\n\t\tvar id = configs[0].id;\r\n\t\tfor (var i=0; i<configs.length; i++) {\r\n\t\t\tscheduler._addMarkerTimespanConfig(configs[i]);\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\t// not used for now\r\n\tscheduler._add_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tzones = zones.slice();\r\n\r\n\t\tif (!resulting_zones.length)\r\n\t\t\treturn zones;\r\n\r\n\t\tfor (var i=0; i<resulting_zones.length; i+=2) {\r\n\t\t\tvar c_zone_start = resulting_zones[i];\r\n\t\t\tvar c_zone_end = resulting_zones[i+1];\r\n\t\t\tvar isLast = (i+2 == resulting_zones.length);\r\n\r\n\t\t\tfor (var k=0; k<zones.length; k+=2) {\r\n\t\t\t\tvar zone_start = zones[k];\r\n\t\t\t\tvar zone_end = zones[k+1];\r\n\t\t\t\tif ((zone_end > c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i<resulting_zones.length; i+=2 ) {\r\n\t\t\tvar c_zone_start = resulting_zones[i];// current_zone_start\r\n\t\t\tvar c_zone_end = resulting_zones[i+1];\r\n\t\t\tfor (var k=0; k<zones.length; k+=2) {\r\n\t\t\t\tvar zone_start = zones[k];\r\n\t\t\t\tvar zone_end = zones[k+1];\r\n\t\t\t\tif (zone_end > c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i<configs.length; i++) {\r\n\t\t\t\tvar config = configs[i];\r\n\t\t\t\tvar parent_array = config._array;\r\n\t\t\t\tfor (var k=0; k<parent_array.length; k++) {\r\n\t\t\t\t\tif (parent_array[k] == config) {\r\n\t\t\t\t\t\tparent_array.splice(k, 1);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_config = function(config) {\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar sections = config.sections;\r\n\t\tvar day = config.days;\r\n\t\tvar type = config.type||default_timespan_type;\r\n\t\tvar viewspans;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key) && timespans[view_key]) {\r\n\t\t\t\t\tvar unit_id = sections[view_key];\r\n\t\t\t\t\tif (timespans[view_key][unit_id]){\r\n\t\t\t\t\t\tviewspans = timespans[view_key][unit_id];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tviewspans = timespans.global;\r\n\t\t}\r\n\r\n\t\tif(viewspans) {\r\n\t\t\tif (day !== undefined) {\r\n\t\t\t\tif (viewspans[day] && viewspans[day][type]) {\r\n\t\t\t\t\tscheduler._addMarkerTimespanConfig(config); // register config in order to be able to delete recurring timespan from a specific day\r\n\t\t\t\t\tscheduler._delete_marked_timespans_list(viewspans[day][type], config);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (var d in viewspans) {\r\n\t\t\t\t\tif (viewspans[d][type]) {\r\n\t\t\t\t\t\tvar dayConfig = scheduler._lame_clone(config);\r\n\t\t\t\t\t\tconfig.days = d;\r\n\t\t\t\t\t\tscheduler._addMarkerTimespanConfig(dayConfig); // register config in order to be able to delete recurring timespan from a specific day\r\n\t\t\t\t\t\tscheduler._delete_marked_timespans_list(viewspans[d][type], config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._delete_marked_timespans_list = function(day_timespans, config){\r\n\t\tfor (var i=0; i<day_timespans.length; i++) {\r\n\t\t\tvar d_t = day_timespans[i];\r\n\t\t\tvar zones = scheduler._subtract_timespan_zones(d_t.zones, config.zones);\r\n\t\t\tif (zones.length)\r\n\t\t\t\td_t.zones = zones;\r\n\t\t\telse {\r\n\t\t\t\tday_timespans.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t\t// need to update ids collection\r\n\t\t\t\tvar related_zones = scheduler._marked_timespans_ids[d_t.id];\r\n\t\t\t\tfor (var k=0; k<related_zones.length; k++) {\r\n\t\t\t\t\tif (related_zones[k] == d_t) {\r\n\t\t\t\t\t\trelated_zones.splice(k, 1);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler.deleteMarkedTimespan = function(configuration) {\r\n\t\t// delete everything\r\n\t\tif (!arguments.length) {\r\n\t\t\tscheduler._marked_timespans = { global: {} };\r\n\t\t\tscheduler._marked_timespans_ids = {};\r\n\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t}\r\n\r\n\t\tif (typeof configuration != \"object\") { // id was passed\r\n\t\t\tscheduler._delete_marked_timespan_by_id(configuration);\r\n\t\t} else { // normal configuration was passed\r\n\r\n\t\t\tif(!(configuration.start_date && configuration.end_date)){\r\n\t\t\t\tif(configuration.days === undefined && !configuration.type)\r\n\t\t\t\t\tconfiguration.days = \"fullweek\";\r\n\t\t\t\tif(!configuration.zones)\r\n\t\t\t\t\tconfiguration.zones = \"fullday\";\r\n\t\t\t}\r\n\r\n\t\t\tvar types = [];\r\n\t\t\tif(!configuration.type){\r\n\t\t\t\t//if type not specified - delete timespans of all types\r\n\t\t\t\tfor(var type in scheduler._marked_timespans_types){\r\n\t\t\t\t\ttypes.push(type);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\ttypes.push(configuration.type);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar configs = scheduler._prepare_timespan_options(configuration);\r\n\r\n\t\t\tfor (var i=0; i<configs.length; i++) {\r\n\r\n\t\t\t\tvar config = configs[i];\r\n\t\t\t\tfor( var t=0; t < types.length; t++){\r\n\t\t\t\t\tvar typedConfig = scheduler._lame_clone(config);\r\n\t\t\t\t\ttypedConfig.type = types[t];\r\n\t\t\t\t\tscheduler._delete_marked_timespan_by_config(typedConfig);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t};\r\n\tscheduler._get_types_to_render = function(common, specific) {\r\n\t\tvar types_to_render = (common) ? scheduler._lame_copy({},common) : {};\r\n\t\tfor (var type in specific||{} ) {\r\n\t\t\tif (specific.hasOwnProperty(type)) {\r\n\t\t\t\ttypes_to_render[type] = specific[type];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn types_to_render;\r\n\t};\r\n\tscheduler._get_configs_to_render = function(types) {\r\n\t\tvar configs = [];\r\n\t\tfor (var type in types) {\r\n\t\t\tif (types.hasOwnProperty(type)) {\r\n\t\t\t\tconfigs.push.apply(configs, types[type]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn configs;\r\n\t};\r\n\r\n\tscheduler._on_scale_add_marker = function(area, day){\r\n\t\tif (scheduler._table_view && scheduler._mode != \"month\")\r\n\t\t\treturn;\r\n\r\n\t\tvar day_index = day.getDay();\r\n\t\tvar day_value = day.valueOf();\r\n\t\tvar mode = this._mode;\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar r_configs = [];\r\n\t\tvar divs = [];\r\n\t\tif (this._props && this._props[mode]) { // we are in the units view and need to draw it's sections as well\r\n\t\t\tvar view = this._props[mode]; // units view object\r\n\t\t\tvar units = view.options;\r\n\t\t\tvar index = scheduler._get_unit_index(view, day);\r\n\t\t\tvar unit = units[index]; // key, label\r\n\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i<r_configs.length; i++) {\r\n\t\t\tdivs.push.apply(divs, (scheduler._render_marked_timespan(r_configs[i], area, day)));\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.attachEvent(\"onScaleAdd\", function(){\r\n\t\tscheduler._on_scale_add_marker.apply(scheduler, arguments);\r\n\t});\r\n\r\n\tscheduler.dblclick_dhx_marked_timespan = function(e,src){\r\n\t\tscheduler.callEvent(\"onScaleDblClick\",[scheduler.getActionData(e).date,src,e]);\r\n\r\n\t\tif (scheduler.config.dblclick_create){\r\n\t\t\tscheduler.addEventNow(scheduler.getActionData(e).date,null,e);\r\n\t\t}\r\n\t};\r\n\r\n}","function createMethod(scheduler){\r\n\tvar methods = {};\r\n\tvar isActive = false;\r\n\tfunction disableMethod(methodName, dummyMethod){\r\n\t\tdummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function(){};\r\n\r\n\t\tif(!methods[methodName]){\r\n\t\t\tmethods[methodName] = this[methodName];\r\n\t\t\tthis[methodName] = dummyMethod;\r\n\t\t}\r\n\t}\r\n\tfunction restoreMethod(methodName){\r\n\t\tif(methods[methodName]){\r\n\t\t\tthis[methodName] = methods[methodName];\r\n\t\t\tmethods[methodName] = null;\r\n\t\t}\r\n\t}\r\n\tfunction disableMethods(methodsHash){\r\n\t\tfor(var i in methodsHash){\r\n\t\t\tdisableMethod.call(this, i, methodsHash[i]);\r\n\t\t}\r\n\t}\r\n\tfunction restoreMethods(){\r\n\t\tfor(var i in methods){\r\n\t\t\trestoreMethod.call(this, i);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction batchUpdatePayload(callback){\r\n\t\ttry{\r\n\t\t\tcallback();\r\n\t\t}catch(e){\r\n\t\t\twindow.console.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.$stateProvider.registerProvider(\"batchUpdate\", function(){\r\n\t\treturn {\r\n\t\t\tbatch_update: isActive\r\n\t\t};\r\n\t}, false);\r\n\r\n\treturn function batchUpdate(callback, noRedraw) {\r\n\t\tif(isActive){\r\n\t\t\t// batch mode is already active\r\n\t\t\tbatchUpdatePayload(callback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar call_dp = (this._dp && this._dp.updateMode != \"off\");\r\n\t\tvar dp_mode;\r\n\t\tif (call_dp){\r\n\t\t\tdp_mode = this._dp.updateMode;\r\n\t\t\tthis._dp.setUpdateMode(\"off\");\r\n\t\t}\r\n\r\n\t\t// temporary disable some methods while updating multiple events\r\n\r\n\t\tconst calls = {\r\n\t\t\tsetModeDate: {date: null, mode: null},\r\n\t\t\tneedRender: false,\r\n\t\t\tneedUpdateView: false,\r\n\t\t\trepaintEvents: {}\r\n\r\n\t\t};\r\n\r\n\t\tconst rememberModeDate = (date, mode) => {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n    undoDelete(scheduler);\r\n    dragHighlightPos(scheduler);\r\n    limit(scheduler);\r\n    batchUpdate(scheduler);\r\n}","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"<div id='scheduler_here' class='dhx_cal_container' style='width:100%; height:600px;'> \\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth  < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date =  base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj  || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj)  - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj  || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj  || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()<this.config.last_hour) || scheduler._allow_dnd ){\r\n\t\t\t\tev.start_date=new_start;\r\n\t\t\t\tev.end_date=new Date(end);\r\n\t\t\t\tif (this.config.update_render){\r\n\t\t\t\t\t//fix for repaint after dnd and scroll issue, #231\r\n\t\t\t\t\tvar sx = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\t\tthis.update_view();\r\n\t\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = sx;\r\n\t\t\t\t} else\r\n\t\t\t\t\tthis.updateEvent(this._drag_id);\r\n\t\t\t}\r\n\t\t\tif (this._table_view) {\r\n\t\t\t\tthis.for_rendered(this._drag_id,function(r){\r\n\t\t\t\t\tr.className+=\" dhx_in_move dhx_cal_event_drag\";\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onEventDrag\", [this._drag_id, this._drag_mode, e]);\r\n\t\t}\r\n\t}  else {\r\n\t\tif (scheduler.checkEvent(\"onMouseMove\")){\r\n\t\t\tvar id = this._locate_event(e.target||e.srcElement);\r\n\t\t\tthis.callEvent(\"onMouseMove\",[id,e]);\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._on_mouse_down=function(e,src) {\r\n\t// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\r\n\t// let's ignore right mouse button then\r\n\tif (e.button == 2)\r\n\t\treturn;\r\n\r\n\tif (this.config.readonly || this._drag_mode) return;\r\n\tsrc = src||(e.target||e.srcElement);\r\n\tvar classname = scheduler._getClassName(src).split(\" \")[0];\r\n\r\n\tif (this.config.drag_event_body && classname == \"dhx_body\") {\r\n\t\tif(src.parentNode && src.parentNode.className.indexOf(\"dhx_cal_select_menu\") === -1){\r\n\t\t\tclassname = \"dhx_event_move\";\r\n\t\t\tthis._dragEventBody = true;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (classname) {\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\":\r\n\t\t\tif (this._table_view)\r\n\t\t\t\tthis._drag_mode=\"move\"; //item in table mode\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_event_move\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\t\tthis._drag_mode=\"move\";\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_event_resize\":\r\n\t\t\tthis._drag_mode=\"resize\";\r\n\t\t\tvar fullClass = scheduler._getClassName(src);\r\n\t\t\tif((fullClass).indexOf(\"dhx_event_resize_end\") < 0){\r\n\t\t\t\tscheduler._drag_from_start = true;\r\n\t\t\t}else{\r\n\t\t\t\tscheduler._drag_from_start = false;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_matrix_cell\":\r\n\t\tcase \"dhx_marked_timespan\":\r\n\t\t\tthis._drag_mode=\"create\";\r\n\t\t\tbreak;\r\n\t\tcase \"\":\r\n\t\t\tif (src.parentNode)\r\n\t\t\t\treturn scheduler._on_mouse_down(e,src.parentNode);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tif (!scheduler.checkEvent(\"onMouseDown\") || scheduler.callEvent(\"onMouseDown\", [classname, e])) {\r\n\t\t\t\tif (src.parentNode && src != this && classname != \"dhx_body\") {\r\n\t\t\t\t\treturn scheduler._on_mouse_down(e,src.parentNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_id=null;\r\n\t\t\tbreak;\r\n\t}\r\n\tif (this._drag_mode){\r\n\t\tvar id = this._locate_event(src);\r\n\t\tif (!this.config[\"drag_\"+this._drag_mode] || !this.callEvent(\"onBeforeDrag\",[id, this._drag_mode, e]))\r\n\t\t\tthis._drag_mode=this._drag_id=0;\r\n\t\telse {\r\n\t\t\tthis._drag_id= id;\r\n\r\n\t\t\tif (this._edit_id!=this._drag_id || (this._edit_id && this._drag_mode == \"create\"))\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tthis._drag_event = scheduler._lame_clone(this.getEvent(this._drag_id) || {});\r\n\t\t\tthis._drag_pos = this._mouse_coords(e);\r\n\t\t}\r\n\t}\r\n\tthis._drag_start=null;\r\n};\r\n\r\n\r\nscheduler._get_private_properties = function(event){\r\n\tvar fields = {};\r\n\tfor(var i in event){\r\n\t\tif(i.indexOf(\"_\") === 0){\r\n\t\t\tfields[i] = true;\r\n\t\t}\r\n\t}\r\n\treturn fields;\r\n};\r\nscheduler._clear_temporary_properties = function(clean, flagged_event){\r\n\tvar initial = this._get_private_properties(clean);\r\n\tvar current_state = this._get_private_properties(flagged_event);\r\n\tfor(var i in current_state){\r\n\t\tif(!initial[i]){\r\n\t\t\tdelete flagged_event[i];\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nscheduler._on_mouse_up=function(e){\r\n\tif (e && e.button == 2 && this._mobile) return;\r\n\tif (this._drag_mode && this._drag_id){\r\n\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"default\";\r\n\t\t//drop\r\n\r\n\t\tvar drag_id = this._drag_id;\r\n\t\tvar mode = this._drag_mode;\r\n\r\n\t\tvar moved = !this._drag_pos || this._drag_pos.has_moved;\r\n\t\tdelete this._drag_event._move_event_shift;\r\n\r\n\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\tif (moved && (this._drag_event._dhx_changed || !this._drag_event.start_date || ev.start_date.valueOf()!=this._drag_event.start_date.valueOf() || ev.end_date.valueOf()!=this._drag_event.end_date.valueOf())){\r\n\t\t\tvar is_new=(this._drag_mode==\"new-size\");\r\n\t\t\tif (!this.callEvent(\"onBeforeEventChanged\",[ev, e, is_new, this._drag_event])){\r\n\t\t\t\tif (is_new)\r\n\t\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._drag_event._dhx_changed = false;\r\n\t\t\t\t\tthis._clear_temporary_properties(ev, this._drag_event);\r\n\t\t\t\t\tscheduler._lame_copy(ev, this._drag_event);\r\n\t\t\t\t\tthis.updateEvent(ev.id);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis._drag_id = this._drag_mode = null;\r\n\t\t\t\tif (is_new && this.config.edit_on_create){\r\n\t\t\t\t\tthis.unselect();\r\n\t\t\t\t\tthis._new_event=new Date();//timestamp of creation\r\n\t\t\t\t\t//if selection disabled - force lightbox usage\r\n\t\t\t\t\tif (this._table_view || this.config.details_on_create || !this.config.select || !this.isOneDayEvent(this.getEvent(drag_id))) {\r\n\t\t\t\t\t\tscheduler.callEvent(\"onDragEnd\", [drag_id, mode, e]);\r\n\t\t\t\t\t\treturn this.showLightbox(drag_id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._drag_pos = true; //set flag to trigger full redraw\r\n\t\t\t\t\tthis._select_id = this._edit_id = drag_id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!this._new_event)\r\n\t\t\t\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[drag_id,this.getEvent(drag_id)]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._drag_pos && (this._drag_pos.has_moved || this._drag_pos === true)) {\r\n\t\t\tthis._drag_id = this._drag_mode = null; // set null to prevent _sorder recalculation for drag event\r\n\t\t\tthis.render_view_data(); //redraw even if there is no real changes - necessary for correct positioning item after drag\r\n\t\t}\r\n\t\tscheduler.callEvent(\"onDragEnd\", [drag_id, mode, e]);\r\n\t}\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode=null;\r\n\tthis._drag_pos=null;\r\n\tthis._drag_event = null;\r\n\tthis._drag_from_start = null;\r\n};\r\n\r\nscheduler._trigger_dyn_loading = function(){\r\n\tif (this._load_mode && this._load()){\r\n\t\tthis._render_wait = true;\r\n\t\treturn true;\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.update_view=function(){\r\n\tthis._reset_ignores();\r\n\tthis._update_nav_bar(\r\n\t\tthis.config.header,\r\n\t\tthis.$container.querySelector(\".dhx_cal_navline\"));\r\n\r\n\tvar view = this[this._mode + \"_view\"];\r\n\tif(view){\r\n\t\tview.call(this, true);\r\n\t}else{\r\n\t\tthis._reset_scale();\r\n\t}\r\n\r\n\tif (this._trigger_dyn_loading()){\r\n\t\treturn true;\r\n\t}\r\n\tthis.render_view_data();\r\n};\r\n\r\nscheduler.isViewExists = function(mode){\r\n\treturn !!(scheduler[mode+ \"_view\"] ||\r\n\t\t(scheduler.date[mode+ \"_start\"] && scheduler.templates[mode+ \"_date\"] && scheduler.templates[mode+ \"_scale_date\"]));\r\n};\r\n\r\nscheduler._set_aria_buttons_attrs = function(){\r\n\tvar buttonGroups = [\"dhx_cal_next_button\", \"dhx_cal_prev_button\", \"dhx_cal_tab\", \"dhx_cal_today_button\"];\r\n\tfor(var i = 0; i < buttonGroups.length; i++){\r\n\t\tvar group = this._els[buttonGroups[i]];\r\n\t\tfor(var j = 0; group && j < group.length; j++ ){\r\n\t\t\tvar name = group[j].getAttribute(\"data-tab\") || group[j].getAttribute(\"name\");\r\n\t\t\tvar label = this.locale.labels[buttonGroups[i]];\r\n\t\t\tif(name){\r\n\t\t\t\tlabel = this.locale.labels[name + \"_tab\"] || this.locale.labels[name] || label;\r\n\t\t\t}\r\n\t\t\tif(buttonGroups[i] == \"dhx_cal_next_button\"){\r\n\t\t\t\tlabel = this.locale.labels.next;\r\n\t\t\t}else if(buttonGroups[i] == \"dhx_cal_prev_button\"){\r\n\t\t\t\tlabel = this.locale.labels.prev;\r\n\t\t\t}\r\n\t\t\tthis._waiAria.headerButtonsAttributes(group[j], label || \"\");\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.updateView = function(date, mode) {\r\n\r\n\tif (!this.$container) {\r\n\t\tthrow new Error(\"The scheduler is not initialized. \\n **scheduler.updateView** or **scheduler.setCurrentView** can be called only after **scheduler.init**\");\r\n\t}\r\n\r\n\tdate = date || this._date;\r\n\tmode = mode || this._mode;\r\n\tvar dhx_cal_data = 'dhx_cal_data';\r\n\r\n\tif(!this.locale.labels.icon_form){\r\n\t\tthis.locale.labels.icon_form = this.locale.labels.icon_edit;\r\n\t}\r\n\r\n\tvar container = this._obj;\r\n\tvar oldClass = \"dhx_scheduler_\" + this._mode;\r\n\tvar newClass = \"dhx_scheduler_\" + mode;\r\n\r\n\tif (!this._mode || (container.className.indexOf(oldClass) == -1)){\r\n\t\tcontainer.className += \" \" + newClass;\r\n\t} else {\r\n\t\tcontainer.className = container.className.replace(oldClass, newClass);\r\n\t}\r\n\r\n\tvar dhx_multi_day = 'dhx_multi_day';\r\n\r\n\tvar prev_scroll = (this._mode == mode && this.config.preserve_scroll) ? this._els[dhx_cal_data][0].scrollTop : false; // saving current scroll\r\n\r\n\tvar multidayScroll;\r\n\tif(this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tmultidayScroll = this._els[dhx_multi_day][0].scrollTop;\r\n\t}\r\n\r\n\t//hide old custom view\r\n\tif (this[this._mode + \"_view\"] && mode && this._mode != mode)\r\n\t\tthis[this._mode + \"_view\"](false);\r\n\r\n\tthis._close_not_saved();\r\n\r\n\tif (this._els[dhx_multi_day]) {\r\n\t\tthis._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);\r\n\t\tthis._els[dhx_multi_day] = null;\r\n\t}\r\n\r\n\tthis._mode = mode;\r\n\tthis._date = date;\r\n\tthis._table_view = (this._mode == \"month\");\r\n\r\n\tthis._dy_shift = 0;//correction for multiday section in week/day views\r\n\r\n\t//show new view\r\n\tthis.update_view();\r\n\r\n\tthis._set_aria_buttons_attrs();\r\n\r\n\tvar tabs = this._els[\"dhx_cal_tab\"];\r\n\tif(tabs){//calendar can work without view tabs\r\n\t\tfor (var i = 0; i < tabs.length; i++) {\r\n\t\t\tvar tab = tabs[i];\r\n\r\n\t\t\tif (tab.getAttribute(\"data-tab\") == this._mode || tab.getAttribute(\"name\") == this._mode + \"_tab\"){\r\n\t\t\t\ttab.classList.add(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, true);\r\n\t\t\t}else{\r\n\t\t\t\ttab.classList.remove(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (typeof prev_scroll == \"number\") // if we are updating or working with the same view scrollTop should be saved\r\n\t\tthis._els[dhx_cal_data][0].scrollTop = prev_scroll; // restoring original scroll\r\n\r\n\tif(typeof multidayScroll == \"number\" && this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tthis._els[dhx_multi_day][0].scrollTop = multidayScroll;\r\n\t}\r\n\r\n};\r\nscheduler.setCurrentView = function(date, mode) {\r\n\tif (!this.callEvent(\"onBeforeViewChange\", [this._mode, this._date, mode || this._mode, date || this._date])) return;\r\n\tthis.updateView(date, mode);\r\n\tthis.callEvent(\"onViewChange\", [this._mode, this._date]);\r\n};\r\n\r\nscheduler.render = function(date, mode){\r\n\tscheduler.setCurrentView(date, mode);\r\n};\r\n\r\nscheduler._render_x_header = function(i,left,date,container, offset_top){\r\n\toffset_top = offset_top || 0;\r\n\t//header scale\r\n\tvar head=document.createElement(\"div\");\r\n\thead.className = \"dhx_scale_bar\";\r\n\r\n\tif(this.templates[this._mode+\"_scalex_class\"]){\r\n\t\t//'_scalex_class' - timeline already have similar template, use the same name\r\n\t\thead.className += ' ' + this.templates[this._mode+\"_scalex_class\"](date);\r\n\t}\r\n\r\n\tvar width = this._cols[i];\r\n\r\n\tif (this._mode == \"month\" && i === 0 && this.config.left_border) {\r\n\t\thead.className += \" dhx_scale_bar_border\";\r\n\t\tleft = left+1;\r\n\t}\r\n\r\n\tthis.set_xy(head, width, this.xy.scale_height-1, left, offset_top);\r\n\r\n\tvar columnHeaderText = this.templates[this._mode+\"_scale_date\"](date,this._mode); //TODO - move in separate method\r\n\thead.innerHTML = columnHeaderText;\r\n\r\n\tthis._waiAria.dayHeaderAttr(head, columnHeaderText);\r\n\r\n\tcontainer.appendChild(head);\r\n};\r\n\r\nscheduler._get_columns_num = function(from, to){\r\n\tvar count = 7;\r\n\tif (!scheduler._table_view){\r\n\t\tvar count_n = scheduler.date[\"get_\"+scheduler._mode+\"_end\"];\r\n\t\tif (count_n) to = count_n(from);\r\n\t\tcount = Math.round((to.valueOf()-from.valueOf())/(1000*60*60*24));\r\n\t}\r\n\treturn count;\r\n};\r\nscheduler._get_timeunit_start = function(){\r\n\t//start date of currently displayed time unit(day, week,...)\r\n\treturn this.date[this._mode+\"_start\"](new Date(this._date.valueOf()));\r\n};\r\n\r\nscheduler._get_view_end = function(){\r\n\tvar dd = this._get_timeunit_start();\r\n\tvar ed = scheduler.date.add(dd, 1, this._mode);\r\n\tif (!scheduler._table_view){\r\n\t\tvar count_n = scheduler.date[\"get_\"+scheduler._mode+\"_end\"];\r\n\t\tif (count_n) ed = count_n(dd);\r\n\t}\r\n\treturn ed;\r\n};\r\nscheduler._calc_scale_sizes = function(width, from, to){//\r\n\t//calculates number of displayed columns(days/units/month view cols) and their widths\r\n\tvar rtl = this.config.rtl;\r\n\tvar summ = width; //border delta\r\n\tvar count = this._get_columns_num(from, to);\r\n\t//if (this.config.rtl) this._process_ignores(scheduler.date.add(to, -1, \"day\"), count, \"day\", -1);\r\n\t//else\r\n\tthis._process_ignores(from, count, \"day\", 1);\r\n\tvar realcount = count - this._ignores_detected;\r\n\tfor (var i=0; i<count; i++){\r\n\t\tif (this._ignores[i]){\r\n\t\t\tthis._cols[i] = 0;\r\n\t\t\trealcount++;\r\n\t\t} else {\r\n\t\t\tthis._cols[i]=Math.floor(summ/(realcount-i));\r\n\t\t}\r\n\t\tsumm-=this._cols[i];\r\n\t\tthis._colsS[i]=(this._cols[i-1]||0)+(this._colsS[i-1]||(this._table_view?0:(rtl ? this.xy.scroll_width : this.xy.scale_width)));\r\n\t\t//this._colsS[j]=(this._cols[rtl ? j+1 : (i-1)]||0)+(this._colsS[rtl ? j+1 : (i-1)]||(this._table_view?0:(rtl?this.xy.scroll_width:this.xy.scale_width)+2));\r\n\t}\r\n\tthis._colsS['col_length'] = count;\r\n\tthis._colsS[count] = (this._cols[count-1]+this._colsS[count-1]) || 0;\r\n\t//this._colsS[count] = (this._cols[rtl ? 0 : count-1]+this._colsS[rtl ? 0 : count-1]) || 0;\r\n};\r\n\r\nscheduler._set_scale_col_size = function(div, width, left){\r\n\tvar c = this.config;\r\n\tthis.set_xy(div, width, c.hour_size_px*(c.last_hour-c.first_hour), left+this.xy.scale_width + 1, 0);//-1 for border\r\n};\r\n\r\nscheduler._render_scales = function(header, data_area){\r\n\t//render columns in week/units view, or header in month view\r\n\tvar sd = new Date(scheduler._min_date),\r\n\t\ted = new Date(scheduler._max_date),\r\n\t\ttoday = this.date.date_part( scheduler._currentDate());\r\n\r\n\tvar summ = parseInt(header.style.width,10) - 1;\r\n\tvar d = new Date(this._min_date);\r\n\t// if (this.config.rtl) {\r\n\t// \td = new Date(scheduler.date.add(this._max_date, -1, \"day\"));\r\n\t// }\r\n\tvar count = this._get_columns_num(sd, ed);\r\n\tthis._calc_scale_sizes(summ, sd, ed);\r\n\tvar left=0;\r\n\r\n\theader.innerHTML = \"\";\r\n\tfor (var i=0; i<count; i++){\r\n\t\tif (!this._ignores[i]){\r\n\t\t\tthis._render_x_header(i,left,d,header);\r\n\t\t}\r\n\t\tif (!this._table_view){\r\n\t\t\tvar scales=document.createElement(\"div\");\r\n\t\t\tvar cls = \"dhx_scale_holder\";\r\n\t\t\tif (d.valueOf() == today.valueOf()) cls += \" dhx_scale_holder_now\";\r\n\r\n\t\t\tscales.setAttribute(\"data-column-index\", i);\r\n\t\t\tif (this._ignores_detected && this._ignores[i]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i=this.config.first_hour*1; i < this.config.last_hour; i++) {\r\n\t\t\t\tconst firstHalf = document.createElement(\"div\");\r\n\t\t\t\tfirstHalf.className=\"dhx_scale_time_slot dhx_scale_time_slot_hour_start\";\r\n\t\t\t\tfirstHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\t\r\n\t\t\t\tlet slotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 0);\r\n\t\t\t\tfirstHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\r\n\t\t\t\tlet htmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\tif(htmlContent){\r\n\t\t\t\t\tfirstHalf.innerHTML = htmlContent;\r\n\t\t\t\t}\r\n\t\t\t\tlet cssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\tif(cssClass){\r\n\t\t\t\t\tfirstHalf.classList.add(cssClass);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscales.appendChild(firstHalf);\r\n\r\n\t\t\t\tconst secondHalf = document.createElement(\"div\");\r\n\t\t\t\tsecondHalf.className=\"dhx_scale_time_slot\";\r\n\t\t\t\tslotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 30);\r\n\t\t\t\tsecondHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\t\t\t\tsecondHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\thtmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\tif(htmlContent){\r\n\t\t\t\t\tsecondHalf.innerHTML = htmlContent;\r\n\t\t\t\t}\r\n\t\t\t\tcssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\tif(cssClass){\r\n\t\t\t\t\tsecondHalf.classList.add(cssClass);\r\n\t\t\t\t}\r\n\t\t\t\tscales.appendChild(secondHalf);\r\n\t\t\t}\r\n\r\n\t\t\tscales.className = cls+\" \"+this.templates.week_date_class(d,today);\r\n\t\t\tthis._waiAria.dayColumnAttr(scales, d);\r\n\t\t\tthis._set_scale_col_size(scales, this._cols[i], left);\r\n\r\n\t\t\tdata_area.appendChild(scales);\r\n\t\t\tthis.callEvent(\"onScaleAdd\",[scales, d]);\r\n\t\t}\r\n\t\tleft+=this._cols[i];\r\n\t\t//if (this.config.rtl) d=this.date.add(d,-1,\"day\");\r\n\t\t//else\r\n\t\td=this.date.add(d,1,\"day\");\r\n\t\td = this.date.day_start(d);\r\n\t}\r\n};\r\n\r\nscheduler._getNavDateElement = function(){\r\n\treturn this.$container.querySelector(\".dhx_cal_date\");\r\n};\r\n\r\nscheduler._reset_scale=function(){\r\n\t//current mode doesn't support scales\r\n\t//we mustn't call reset_scale for such modes, so it just to be sure\r\n\tif (!this.templates[this._mode + \"_date\"]) return;\r\n\r\n\tvar header = this._els[\"dhx_cal_header\"][0];\r\n\tvar data_area = this._els[\"dhx_cal_data\"][0];\r\n\tvar c = this.config;\r\n\r\n\theader.innerHTML = \"\";\r\n\t//data_area.scrollTop = 0; //fix flickering in FF; makes IE8 flicker instead\r\n\tdata_area.innerHTML = \"\";\r\n\r\n\tvar str = ((c.readonly || (!c.drag_resize)) ? \" dhx_resize_denied\" : \"\") + ((c.readonly || (!c.drag_move)) ? \" dhx_move_denied\" : \"\");\r\n\tdata_area.className = \"dhx_cal_data\" + str;\r\n\r\n\tthis._scales = {};\r\n\tthis._cols = [];\t//store for data section\r\n\tthis._colsS = {height: 0};\r\n\tthis._dy_shift = 0;\r\n\r\n\tthis.set_sizes();\r\n\r\n\tvar d,sd;\r\n\tvar dd = this._get_timeunit_start(),\r\n\t\ted = scheduler._get_view_end();\r\n\r\n\td = sd = this._table_view ? scheduler.date.week_start(dd) : dd;\r\n\r\n\r\n\tthis._min_date=d;\r\n\r\n\tvar navBarDateStr = this.templates[this._mode+\"_date\"](dd,ed,this._mode);\r\n\r\n\tvar scaleElement = this._getNavDateElement();\r\n\tif(scaleElement){\r\n\t\tscaleElement.innerHTML = navBarDateStr;\r\n\t\tthis._waiAria.navBarDateAttr(scaleElement, navBarDateStr);\r\n\t}\r\n\r\n\tthis._max_date = ed;\r\n\tscheduler._render_scales(header, data_area);\r\n\r\n\tif (this._table_view) // month view\r\n\t\tthis._reset_month_scale(data_area,dd,sd);\r\n\telse{\r\n\t\tthis._reset_hours_scale(data_area,dd,sd);\r\n\t\tif (c.multi_day) {\r\n\t\t\tvar dhx_multi_day = 'dhx_multi_day';\r\n\r\n\t\t\tif(this._els[dhx_multi_day]) {\r\n\t\t\t\tthis._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);\r\n\t\t\t\tthis._els[dhx_multi_day] = null;\r\n\t\t\t}\r\n\r\n\t\t\tvar c1 = document.createElement(\"div\");\r\n\t\t\tc1.className = dhx_multi_day;\r\n\t\t\tc1.style.visibility=\"hidden\";\r\n\t\t\tc1.style.display=\"none\";\r\n\t\t\tvar totalWidth = this._colsS[this._colsS.col_length];\r\n\t\t\tvar offset = c.rtl ? this.xy.scale_width : this.xy.scroll_width;\r\n\t\t\tvar hiddenWidth = Math.max(totalWidth + offset, 0);\r\n\t\t\tthis.set_xy(c1, hiddenWidth, 0, 0); // 2 extra borders, dhx_header has -1 bottom margin\r\n\t\t\tdata_area.parentNode.insertBefore(c1,data_area);\r\n\r\n\t\t\tvar c2 = c1.cloneNode(true);\r\n\t\t\tc2.className = dhx_multi_day+\"_icon\";\r\n\t\t\tc2.style.visibility=\"hidden\";\r\n\t\t\tc2.style.display=\"none\";\r\n\t\t\tthis.set_xy(c2, this.xy.scale_width + 1, 0, 0); // dhx_header has -1 bottom margin\r\n\r\n\t\t\tc1.appendChild(c2);\r\n\t\t\tthis._els[dhx_multi_day]=[c1,c2];\r\n\t\t\tscheduler.event(this._els[dhx_multi_day][0], \"click\", this._click.dhx_cal_data);\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._reset_hours_scale=function(b,dd,sd){\r\n\tvar c=document.createElement(\"div\");\r\n\tc.className=\"dhx_scale_holder\";\r\n\r\n\tvar date = new Date(1980,1,1,this.config.first_hour,0,0);\r\n\tfor (var i=this.config.first_hour*1; i < this.config.last_hour; i++) {\r\n\t\tvar cc=document.createElement(\"div\");\r\n\t\tcc.className=\"dhx_scale_hour\";\r\n\t\tcc.style.height=this.config.hour_size_px+\"px\";\r\n\t\tvar width = this.xy.scale_width;\r\n\t\tif (this.config.left_border) {\r\n\t\t\tcc.className += \" dhx_scale_hour_border\";\r\n\t\t}\r\n\t\tcc.style.width = width + \"px\";\r\n\r\n\t\tvar content = scheduler.templates.hour_scale(date);\r\n\t\tcc.innerHTML = content;\r\n\t\tthis._waiAria.hourScaleAttr(cc, content);\r\n\r\n\t\tc.appendChild(cc);\r\n\t\tdate=this.date.add(date,1,\"hour\");\r\n\t}\r\n\tb.appendChild(c);\r\n\tif (this.config.scroll_hour)\r\n\t\tb.scrollTop = this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour);\r\n};\r\n\r\nscheduler._currentDate = function(){\r\n\tif(scheduler.config.now_date){\r\n\t\treturn new Date(scheduler.config.now_date);\r\n\t}\r\n\treturn new Date();\r\n};\r\n\r\nscheduler._reset_ignores = function(){\r\n\tthis._ignores={};\r\n\tthis._ignores_detected = 0;\r\n};\r\n\r\nscheduler._process_ignores = function(sd, n, mode, step, preserve){\r\n\tthis._reset_ignores();\r\n\tvar ignore = scheduler[\"ignore_\"+this._mode];\r\n\tif (ignore){\r\n\t\tvar ign_date = new Date(sd);\r\n\t\tfor (var i=0; i<n; i++){\r\n\t\t\tif (ignore(ign_date)){\r\n\t\t\t\tthis._ignores_detected += 1;\r\n\t\t\t\tthis._ignores[i] = true;\r\n\t\t\t\tif (preserve)\r\n\t\t\t\t\tn++;\r\n\t\t\t}\r\n\t\t\tign_date = scheduler.date.add(ign_date, step, mode);\r\n\t\t\tif(scheduler.date[mode + '_start'])\r\n\t\t\t\tign_date = scheduler.date[mode + '_start'](ign_date);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._render_month_scale = function(div, dd/*month start*/, sd/*view start*/, rows ){\r\n\t//renders month view layout\r\n\r\n\tvar ed=scheduler.date.add(dd,1,\"month\"),\r\n\t\tview_start = new Date(sd);\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\tvar tdwidths=[];\r\n\r\n\tfor (var i=0; i<=7; i++) {\r\n\t\tvar cell_width = this._cols[i] || 0;\r\n\t\tif(!isNaN(Number(cell_width))){\r\n\t\t\tcell_width = cell_width + \"px\";\r\n\t\t}\r\n\t\ttdwidths[i] = cell_width;\r\n\t}\r\n\r\n\tfunction getCellHeight(row){\r\n\t\tvar h = scheduler._colsS.height;\r\n\t\tif(scheduler._colsS.heights[row + 1] !== undefined ){\r\n\t\t\th = scheduler._colsS.heights[row + 1] - (scheduler._colsS.heights[row]||0);\r\n\t\t}\r\n\t\treturn h;\r\n\t}\r\n\r\n\r\n\tvar cellheight = 0;\r\n\r\n\tconst table = document.createElement(\"div\");\r\n\ttable.classList.add(\"dhx_cal_month_table\");\r\n\r\n\tvar rendered_dates = [];\r\n\tfor (var i=0; i<rows; i++){\r\n\t\tvar row = document.createElement(\"div\");\r\n\t\trow.classList.add(\"dhx_cal_month_row\");\r\n\t\trow.style.height = getCellHeight(i) + \"px\";\r\n\t\ttable.appendChild(row);\r\n\t\t// var row_height = Math.max(getCellHeight(i) - scheduler.xy.month_head_height, 0);\r\n\t\tfor (var j=0; j<7; j++) {\r\n\t\t\tvar cell = document.createElement(\"div\");\r\n\t\t\trow.appendChild(cell);\r\n\r\n\t\t\tvar cls = \"dhx_cal_month_cell\";\r\n\t\t\tif (sd<dd)\r\n\t\t\t\tcls += ' dhx_before';\r\n\t\t\telse if (sd>=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i<sections.length; i++) {\r\n\t\tif(sections[i].map_to == property) {\r\n\t\t\tvar options = sections[i].options;\r\n\t\t\tfor (var j=0; j<options.length; j++) {\r\n\t\t\t\tif(options[j].key == key) {\r\n\t\t\t\t\treturn options[j].label;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn \"\";\r\n};\r\nscheduler.updateCollection = function(list_name, collection) {\r\n\tvar list = scheduler.serverList(list_name);\r\n\tif (!list) return false;\r\n\tlist.splice(0, list.length);\r\n\tlist.push.apply(list, collection || []);\r\n\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\tscheduler.resetLightbox();\r\n\tscheduler.hideCover();\r\n\treturn true;\r\n};\r\nscheduler._lame_clone = function(object, cache) {\r\n\tvar i, t, result; // iterator, types array, result\r\n\r\n\tcache = cache || [];\r\n\r\n\tfor (i=0; i<cache.length; i+=2)\r\n\t\tif(object === cache[i])\r\n\t\t\treturn cache[i+1];\r\n\r\n\tif (object && typeof object == \"object\") {\r\n\t\tresult = Object.create(object); // preserve prototype methods\r\n\t\tt = [Array,Date,Number,String,Boolean];\r\n\t\tfor (i=0; i<t.length; i++) {\r\n\t\t\tif (object instanceof t[i])\r\n\t\t\t\tresult = i ? new t[i](object) : new t[i](); // first one is array\r\n\t\t}\r\n\t\tcache.push(object, result);\r\n\t\tfor (i in object) {\r\n\t\t\tif (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\tresult[i] = scheduler._lame_clone(object[i], cache);\r\n\t\t}\r\n\t}\r\n\treturn result || object;\r\n};\r\nscheduler._lame_copy = function(target, source) {\r\n\tfor (var key in source) {\r\n\t\tif (source.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n};\r\nscheduler._get_date_from_pos = function(pos) {\r\n\tvar start=this._min_date.valueOf()+(pos.y*this.config.time_step+(this._table_view?0:pos.x)*24*60)*60000;\r\n\t//if (this.config.rtl) start=scheduler.date.add(this._max_date, -1, \"day\").valueOf()+(pos.y*this.config.time_step-(this._table_view?0:pos.x)*24*60)*60000;\r\n\treturn new Date(this._correct_shift(start));\r\n};\r\n// n_ev - native event\r\nscheduler.getActionData = function(n_ev) {\r\n\tvar pos = this._mouse_coords(n_ev);\r\n\treturn {\r\n\t\tdate:this._get_date_from_pos(pos),\r\n\t\tsection:pos.section\r\n\t};\r\n};\r\nscheduler._focus = function(node, select){\r\n\tif (node && node.focus){\r\n\t\tif (this._mobile){\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tnode.focus();\r\n\t\t\t},10);\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tif (select && node.select && node.offsetWidth) {\r\n\t\t\t\t\tnode.select();\r\n\t\t\t\t}\r\n\t\t\t\tnode.focus();\r\n\t\t\t} catch (e) {\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getDaysDifference(startDate, endDate) {\r\n\tconst start = new Date(startDate);\r\n\tconst end = new Date(endDate);\r\n\tconst differenceInTime = end.getTime() - start.getTime();\r\n\tconst differenceInDays = differenceInTime / (1000 * 3600 * 24);\r\n\treturn Math.abs(differenceInDays);\r\n}\r\n\r\n//non-linear scales\r\nscheduler._get_real_event_length=function(startDate, endDate, config){ // config may be a timeline view or a configuration object\r\n\tvar eventLength = endDate - startDate;\r\n\r\n\t// excludedDuration - duration between [00:00, first_hour] and [last_hour, 23:59]\r\n\t// var excludedDuration = (config._start_correction + config._end_correction)||0;\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar startColumnIndex = 0,\r\n\t\tendColumnIndex;\r\n\tif (config.render){\r\n\t\tstartColumnIndex = this._get_date_index(config, startDate);\r\n\t\tendColumnIndex = this._get_date_index(config, endDate);\r\n\r\n\t\tif(startDate.valueOf() < scheduler.getState().min_date.valueOf()){\r\n\t\t\tstartColumnIndex = -getDaysDifference(startDate, scheduler.getState().min_date);\r\n\t\t}\r\n\t\tif(endDate.valueOf() > scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\t\t\t// GS-2580: if the end date of the events is quals to the last_hour config, need to include that date\r\n\t\t\tif(intervalStart.valueOf() <= leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"&#39;\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop  = box.top +  scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop  = box.top +  scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node)  || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t *     @desc: Calculate absolute position of html object\r\n\t *     @type: private\r\n\t *     @param: htmlObject - html object\r\n\t *     @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t *     @desc: Calculate absolute position of html object\r\n\t *     @type: private\r\n\t *     @param: htmlObject - html object\r\n\t *     @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop  = box.top +  scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop  = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" &ndash; \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" &ndash; \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"<a>View more(\"+count+\" events)</a>\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"<b>Event:</b> \" + event.text + \"<br/><b>Start date:</b> \" + scheduler.templates.tooltip_date_format(start) + \"<br/><b>End date:</b> \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\")  ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\")  ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px);  // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue;  //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"<textarea class='dhx_cal_editor'>\" + ev.text + \"</textarea>\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `<div class='dhx_menu_icon ${currentIcon}' title='${this.locale.labels[currentIcon]}' ${ariaAttr}></div>`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"<div class='dhx_menu_head'></div>\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `<div event_id=\"${id}\" ${this.config.event_attribute}=\"${id}\" class=\"${cs}\"\r\n\t\t\t\tstyle=\"position:absolute; top:${y}px; ${((this.config.rtl) ? 'right:':'left:')}${x}px; width:${boxWidth}px; height:${h}px; ${(style || \"\")}\" \r\n\t\t\t\tdata-bar-start=\"${ev.start_date.valueOf()}\" data-bar-end=\"${ev.end_date.valueOf()}\">\r\n\t\t\t\t</div>`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '<div class=\"dhx_event_move dhx_header\" >&nbsp;</div>';\r\n\t\tinner_html += '<div class=\"dhx_event_move dhx_title\">' + contentA + '</div>';\r\n\t\tinner_html += '<div class=\"dhx_body\">' + contentB + '</div>'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '<div class=\"' + footer_class + '\" style=\" width:' + (bottom ? ' margin-top:-1px;' : '') + '\" ></div>';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset =  order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"<div class='dhx_event_resize dhx_event_resize_start'></div>\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"<div class='dhx_event_resize dhx_event_resize_end'></div>\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"<div event_id='\" + ev.id + \"' \" + this.config.event_attribute + \"='\" + ev.id + \"' class='\"+ cs + \"' style='\"+style_text+\"'\"+this._waiAria.eventBarAttrString(ev)+\">\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `<span class='dhx_cal_event_clear_date'>${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}</span>`;\r\n\t}\r\n\r\n\thtml += \"<div class='dhx_cal_event_line_content'>\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '</div>';\r\n\thtml += \"</div>\";\r\n\thtml += '</div>';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i<rendered_events.length; i++) {\r\n\t\tvar rendered_event = rendered_events[i];\r\n\t\tif (rendered_event.getAttribute(scheduler.config.event_attribute) == id) {\r\n\t\t\treturn rendered_event;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\nscheduler.showEvent = function(id, mode) {\r\n\tvar section;\r\n\tif(id && typeof id === \"object\"){\r\n\t\tmode = id.mode;\r\n\t\tsection = id.section;\r\n\t\tid = id.section;\r\n\t}\r\n\tvar ev = (typeof id == \"number\" || typeof id == \"string\") ? scheduler.getEvent(id) : id;\r\n\tmode = mode||scheduler._mode;\r\n\r\n\tif (!ev || (this.checkEvent(\"onBeforeEventDisplay\") && !this.callEvent(\"onBeforeEventDisplay\", [ev, mode])))\r\n\t\treturn;\r\n\r\n\tvar scroll_hour = scheduler.config.scroll_hour;\r\n\tscheduler.config.scroll_hour = ev.start_date.getHours();\r\n\tvar preserve_scroll = scheduler.config.preserve_scroll;\r\n\tscheduler.config.preserve_scroll = false;\r\n\r\n\tvar original_color = ev.color;\r\n\tvar original_text_color = ev.textColor;\r\n\tif (scheduler.config.highlight_displayed_event) {\r\n\t\tev.color = scheduler.config.displayed_event_color;\r\n\t\tev.textColor = scheduler.config.displayed_event_text_color;\r\n\t}\r\n\r\n\tscheduler.setCurrentView(new Date(ev.start_date), mode);\r\n\r\n\tfunction restoreOriginalColors(){\r\n\t\tev.color = original_color;\r\n\t\tev.textColor = original_text_color;\r\n\t}\r\n\r\n\tscheduler.config.scroll_hour = scroll_hour;\r\n\tscheduler.config.preserve_scroll = preserve_scroll;\r\n\r\n\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\tvar timeline = scheduler.getView();\r\n\t\tvar property = timeline.y_property;\r\n\r\n\t\tvar event = scheduler.getEvent(ev.id);\r\n\r\n\t\tif(event){\r\n\t\t\tif(!section){\r\n\t\t\t\tvar section = event[property];\r\n\t\t\t\tif(Array.isArray(section)){\r\n\t\t\t\t\tsection = section[0];\r\n\t\t\t\t}else if(typeof section === \"string\" && scheduler.config.section_delimiter && section.indexOf(scheduler.config.section_delimiter) > -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache)    url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"<div class='dhx_cal_ltext dhx_cal_template' ></div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `<div class='dhx_cal_ltext'><textarea ${placeholder}></textarea></div>`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"<div class='dhx_cal_ltext dhx_cal_select'><select style='width:100%;'>\";\r\n\t\t\tfor (var i=0; i < sns.options.length; i++)\r\n\t\t\t\thtml+=\"<option value='\"+sns.options[i].key+\"'>\"+sns.options[i].label+\"</option>\";\r\n\t\t\thtml+=\"</select></div>\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"<option value='\" + (i) + \"'>\" + (i) + \"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+this.locale.date.month_full[i]+\"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+i+\"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i<last){\r\n\t\t\t\t\t\t\tvar time=this.templates.time_picker(dt);\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+time+\"</option>\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \"<select class='\"+selectBoxClass+\"' \"+readonly + ariaAttrs+\">\"+options+\"</select> \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"<div class='dhx_section_time'>\"+html+\"<span style='font-weight:normal; font-size:10pt;' class='dhx_section_time_spacer'> &nbsp;&ndash;&nbsp; </span>\"+html+\"</div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> \"+scheduler.locale.labels.full_day+\"&nbsp;</label></input>\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k<time_values.length; k++) {\r\n\t\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ts[i+map[0]].value=(value_found)?direct_value:fixed_value;\r\n\t\t\t\tif(!(value_found || fixed_value)){\r\n\t\t\t\t\ts[i+map[0]].selectedIndex = -1;//show empty select in FF\r\n\t\t\t\t}\r\n\t\t\t\ts[i+map[1]].value=d.getDate();\r\n\t\t\t\ts[i+map[2]].value=d.getMonth();\r\n\t\t\t\ts[i+map[3]].value=d.getFullYear();\r\n\t\t\t}\r\n\r\n\t\t\t_fill_lightbox_select(s,0,ev.start_date);\r\n\t\t\t_fill_lightbox_select(s,4,ev.end_date);\r\n\t\t},\r\n\t\tget_value:function(node, ev, config) {\r\n\t\t\tvar s = node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\r\n\t\t\tev.start_date=new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\tev.end_date=new Date(s[map[3]+4].value,s[map[2]+4].value,s[map[1]+4].value,0,s[map[0]+4].value);\r\n\r\n\t\t\tif(!(s[map[3]].value && s[map[3]+4].value)){\r\n\t\t\t\t// use the previous date if start/end years are empty (outside lightbox range)\r\n\t\t\t\tvar original = scheduler.getEvent(scheduler._lightbox_id);\r\n\t\t\t\tif(original){\r\n\t\t\t\t\tev.start_date = original.start_date;\r\n\t\t\t\t\tev.end_date = original.end_date;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.end_date<=ev.start_date)\r\n\t\t\t\tev.end_date=scheduler.date.add(ev.start_date,scheduler.config.time_step,\"minute\");\r\n\t\t\treturn {\r\n\t\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\t\tend_date: new Date(ev.end_date)\r\n\t\t\t};\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tscheduler._focus(node.getElementsByTagName(\"select\")[0]);\r\n\t\t}\r\n\t}\r\n\r\n};\r\n\r\n\t// GS-2214. Attaching the lightbox to the BODY element is not considered secure.\r\n\t// Attach it to Scheduler container for Salesforce and other secure environments\r\n\tfunction getLightboxRoot(){\r\n\t\tconst cspEnvironment = scheduler.config.csp === true;\r\n\t\tconst salesforceEnvironment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"] || ('$shadowResolver$' in document.body);\r\n\t\tif (cspEnvironment || salesforceEnvironment) {\r\n\t\t\treturn scheduler.$root;\r\n\t\t} else {\r\n\t\t\treturn document.body;\r\n\t\t}\r\n\t}\r\n\r\nscheduler._setLbPosition = function(box) {\r\n\tif(!box){\r\n\t\treturn;\r\n\t}\r\n\r\n\tbox.style.top = Math.max(getLightboxRoot().offsetHeight / 2 - box.offsetHeight/2, 0) + \"px\";\r\n\tbox.style.left = Math.max(getLightboxRoot().offsetWidth / 2 - box.offsetWidth/2, 0) + \"px\";\r\n\r\n};\r\n\r\nscheduler.showCover=function(box){\r\n\tif (box){\r\n\t\tbox.style.display=\"block\";\r\n\r\n\t\tthis._setLbPosition(box);\r\n\t}\r\n\tif(scheduler.config.responsive_lightbox){\r\n\t\tdocument.documentElement.classList.add(\"dhx_cal_overflow_container\");\r\n\t\tgetLightboxRoot().classList.add(\"dhx_cal_overflow_container\");\r\n\t}\r\n\tthis.show_cover();\r\n\tthis._cover.style.display = \"\";\r\n};\r\nscheduler.showLightbox=function(id){\r\n\tif (!id) return;\r\n\tif (!this.callEvent(\"onBeforeLightbox\",[id])) {\r\n\t\tif (this._new_event)\r\n\t\t\tthis._new_event = null;\r\n\t\treturn;\r\n\t}\r\n\tthis.showCover(box);\r\n\tvar box = this.getLightbox();\r\n\tthis._setLbPosition(box);\r\n\tthis._fill_lightbox(id,box);\r\n\tthis._waiAria.lightboxVisibleAttr(box);\r\n\t\r\n\tthis.callEvent(\"onLightbox\",[id]);\r\n};\r\nscheduler._fill_lightbox = function(id, box) {\r\n\tvar ev = this.getEvent(id);\r\n\tvar s = box.getElementsByTagName(\"span\");\r\n\tvar lightboxHeader = [];\r\n\r\n\tif (scheduler.templates.lightbox_header) {\r\n\t\tlightboxHeader.push(\"\");\r\n\t\tvar headerContent = scheduler.templates.lightbox_header(ev.start_date, ev.end_date, ev);\r\n\t\tlightboxHeader.push(headerContent);\r\n\t\ts[1].innerHTML = \"\";\r\n\t\ts[2].innerHTML = headerContent;\r\n\t} else {\r\n\t\tvar headerDate = this.templates.event_header(ev.start_date, ev.end_date, ev);\r\n\t\tvar headerTitle = (this.templates.event_bar_text(ev.start_date, ev.end_date, ev) || \"\").substr(0, 70); //IE6 fix;\r\n\r\n\t\tlightboxHeader.push(headerDate);\r\n\t\tlightboxHeader.push(headerTitle);\r\n\t\ts[1].innerHTML = headerDate;\r\n\t\ts[2].innerHTML = headerTitle;\r\n\t}\r\n\r\n\tthis._waiAria.lightboxHeader(box,  lightboxHeader.join(\" \"));\r\n\r\n\tvar sns = this.config.lightbox.sections;\r\n\tfor (var i = 0; i < sns.length; i++) {\r\n\t\tvar current_sns = sns[i];\r\n\t\tvar node = scheduler._get_lightbox_section_node(current_sns);\r\n\t\tvar block = this.form_blocks[current_sns.type];\r\n\t\tvar value = (ev[current_sns.map_to] !== undefined) ? ev[current_sns.map_to] : current_sns.default_value;\r\n\t\tblock.set_value.call(this, node, value, ev, current_sns);\r\n\t\tif (sns[i].focus)\r\n\t\t\tblock.focus.call(this, node);\r\n\t}\r\n\r\n\tscheduler._lightbox_id = id;\r\n};\r\n\r\nscheduler._get_lightbox_section_node = function(section){\r\n\treturn scheduler._lightbox.querySelector(`#${section.id}`).nextSibling;\r\n};\r\n\r\nscheduler._lightbox_out=function(ev){\r\n\tvar sns = this.config.lightbox.sections;\r\n\tfor (var i=0; i < sns.length; i++) {\r\n\t\tvar node = scheduler._lightbox.querySelector(`#${sns[i].id}`);\r\n\t\tnode=(node?node.nextSibling:node);\r\n\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\tvar res=block.get_value.call(this,node,ev, sns[i]);\r\n\t\tif (sns[i].map_to!=\"auto\")\r\n\t\t\tev[sns[i].map_to]=res;\r\n\t}\r\n\treturn ev;\r\n};\r\nscheduler._empty_lightbox=function(data){\r\n\tvar id=scheduler._lightbox_id;\r\n\tvar ev=this.getEvent(id);\r\n\t//var box=this.getLightbox();\r\n\r\n\tthis._lame_copy(ev, data);\r\n\r\n\tthis.setEvent(ev.id,ev);\r\n\tthis._edit_stop_event(ev,true);\r\n\tthis.render_view_data();\r\n};\r\nscheduler.hide_lightbox=function(id){\r\n\tscheduler.endLightbox(false, this.getLightbox());\r\n};\r\n\r\nscheduler.hideCover=function(box){\r\n\tif (box) box.style.display=\"none\";\r\n\tthis.hide_cover();\r\n\tif(scheduler.config.responsive_lightbox){\r\n\t\tdocument.documentElement.classList.remove(\"dhx_cal_overflow_container\");\r\n\t\tgetLightboxRoot().classList.remove(\"dhx_cal_overflow_container\");\r\n\t}\r\n};\r\nscheduler.hide_cover=function(){\r\n\tif (this._cover)\r\n\t\tthis._cover.parentNode.removeChild(this._cover);\r\n\tthis._cover=null;\r\n};\r\n\r\nscheduler.show_cover=function(){\r\n\tif(this._cover) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis._cover=document.createElement(\"div\");\r\n\tthis._cover.className=\"dhx_cal_cover\";\r\n\tthis._cover.style.display = \"none\";\r\n\r\n\tscheduler.event(this._cover, \"mousemove\", scheduler._move_while_dnd);\r\n\tscheduler.event(this._cover, \"mouseup\", scheduler._finish_dnd);\r\n\r\n\tgetLightboxRoot().appendChild(this._cover);\r\n};\r\nscheduler.save_lightbox=function(){\r\n\tvar data = this._lightbox_out({}, this._lame_copy(this.getEvent(this._lightbox_id)));\r\n\tif (this.checkEvent(\"onEventSave\") && !this.callEvent(\"onEventSave\",[this._lightbox_id, data, this._new_event]))\r\n\t\treturn;\r\n\tthis._empty_lightbox(data);\r\n\tthis.hide_lightbox();\r\n};\r\nscheduler.startLightbox = function(id, box){\r\n\tthis._lightbox_id = id;\r\n\tthis._custom_lightbox = true;\r\n\r\n\tthis._temp_lightbox = this._lightbox;\r\n\tthis._lightbox = box;\r\n\tthis.showCover(box);\r\n};\r\nscheduler.endLightbox = function(mode, box){\r\n\tvar box = box || scheduler.getLightbox();\r\n\r\n\tvar event = scheduler.getEvent(this._lightbox_id);\r\n\tif(event)\r\n\t\tthis._edit_stop_event(event, mode);\r\n\tif (mode)\r\n\t\tscheduler.render_view_data();\r\n\tthis.hideCover(box);\r\n\r\n\tif (this._custom_lightbox){\r\n\t\tthis._lightbox = this._temp_lightbox;\r\n\t\tthis._custom_lightbox = false;\r\n\t}\r\n\tthis._temp_lightbox = this._lightbox_id = null; // in case of custom lightbox user only calls endLightbox so we need to reset _lightbox_id\r\n\tthis._waiAria.lightboxHiddenAttr(box);\r\n\tthis.resetLightbox();\r\n\tthis.callEvent(\"onAfterLightbox\",[]);\r\n};\r\nscheduler.resetLightbox = function(){\r\n\tif (scheduler._lightbox && !scheduler._custom_lightbox)\r\n\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\tscheduler._lightbox = null;\r\n};\r\nscheduler.cancel_lightbox=function(){\r\n\tif(this._lightbox_id){\r\n\t\tthis.callEvent(\"onEventCancel\",[this._lightbox_id, !!this._new_event]);\r\n\t}\r\n\r\n\tthis.hide_lightbox();\r\n};\r\nscheduler.hideLightbox = scheduler.cancel_lightbox;// GS-1650 need to use cancel in order to fire onEventCancel event, which is important to refresh the state of recurring series\r\n\r\nscheduler._init_lightbox_events=function(){\r\n\tif(this.getLightbox().$_eventAttached){\r\n\t\treturn;\t\r\n\t}\r\n\tconst lightbox = this.getLightbox();\r\n\tlightbox.$_eventAttached = true;\r\n\r\n\tscheduler.event(lightbox, \"click\", function(e){\r\n\r\n\t\tif(e.target.closest(\".dhx_cal_ltitle_close_btn\")){\r\n\t\t\tscheduler.cancel_lightbox();\r\n\t\t}\r\n\t\t\r\n\t\tconst buttonTarget = scheduler.$domHelpers.closest(e.target, \".dhx_btn_set\");\r\n\t\tif(!buttonTarget) {\r\n\t\t\tconst sectionButton = scheduler.$domHelpers.closest(e.target, \".dhx_custom_button[data-section-index]\");\r\n\t\t\tif(sectionButton){\r\n\t\t\t\tconst index = Number(sectionButton.getAttribute(\"data-section-index\"));\r\n\t\t\t\tconst block = scheduler.form_blocks[scheduler.config.lightbox.sections[index].type];\r\n\t\t\t\tblock.button_click(scheduler.$domHelpers.closest(sectionButton, \".dhx_cal_lsection\"), sectionButton, e);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tconst action = buttonTarget ? buttonTarget.getAttribute(\"data-action\") : null;\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"dhx_save_btn\":\r\n\t\t\tcase \"save\":\r\n\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.save_lightbox();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dhx_delete_btn\":\r\n\t\t\tcase \"delete\":\r\n\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar c=scheduler.locale.labels.confirm_deleting;\r\n\r\n\t\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback: function(){\r\n\t\t\t\t\tscheduler.deleteEvent(scheduler._lightbox_id);\r\n\t\t\t\t\tscheduler._new_event = null; //clear flag, if it was unsaved event\r\n\t\t\t\t\tscheduler.hide_lightbox();\r\n\t\t\t\t},\r\n\t\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}});\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dhx_cancel_btn\":\r\n\t\t\tcase \"cancel\":\r\n\t\t\t\tscheduler.cancel_lightbox();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tscheduler.callEvent(\"onLightboxButton\", [action, buttonTarget, e]);\r\n\t\t}\r\n\t});\r\n\tscheduler.event(lightbox, \"keydown\", function(e){\r\n\t\tvar event = e || window.event;\r\n\t\tvar target = e.target || e.srcElement;\r\n\t\tvar buttonTarget = target.querySelector(\"[dhx_button]\");\r\n\r\n\t\tif(!buttonTarget){\r\n\t\t\tbuttonTarget = target.parentNode.querySelector(\".dhx_custom_button, .dhx_readonly\");\r\n\t\t}\r\n\r\n\t\tswitch((e||event).keyCode){\r\n\t\t\tcase 32:{//space\r\n\t\t\t\tif ((e||event).shiftKey) return;\r\n\t\t\t\tif(buttonTarget && buttonTarget.click){\r\n\t\t\t\t\tbuttonTarget.click();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase scheduler.keys.edit_save:\r\n\t\t\t\tif ((e||event).shiftKey) return;\r\n\t\t\t\tif(buttonTarget && buttonTarget.click){\r\n\t\t\t\t\tbuttonTarget.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.save_lightbox();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase scheduler.keys.edit_cancel:\r\n\t\t\t\tscheduler.cancel_lightbox();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t});\r\n};\r\nscheduler.setLightboxSize=function(){\r\n\treturn;\r\n/* TODO: inspect and remove in 7.0\r\n\tvar d = this._lightbox;\r\n\tif (!d) return;\r\n\r\n\tvar con = d.childNodes[1];\r\n\tcon.style.height=\"0px\";\r\n\tcon.style.height=con.scrollHeight+\"px\";\r\n\td.style.height=con.scrollHeight+scheduler.xy.lightbox_additional_height+\"px\";\r\n\tcon.style.height=con.scrollHeight+\"px\"; //it is incredible , how ugly IE can be*/\r\n};\r\n\r\nscheduler._init_dnd_events = function(){\r\n\tscheduler.event(getLightboxRoot(), \"mousemove\", scheduler._move_while_dnd);\r\n\tscheduler.event(getLightboxRoot(), \"mouseup\", scheduler._finish_dnd);\r\n\tscheduler._init_dnd_events = function(){};\r\n };\r\nscheduler._move_while_dnd = function(e){\r\n\tif (scheduler._dnd_start_lb){\r\n\t\tif (!document.dhx_unselectable){\r\n\t\t\tgetLightboxRoot().classList.add(\"dhx_unselectable\");\r\n\t\t\tdocument.dhx_unselectable = true;\r\n\t\t}\r\n\t\tvar lb = scheduler.getLightbox();\r\n\t\tvar now = [e.pageX, e.pageY];\r\n\t\tlb.style.top = scheduler._lb_start[1]+now[1]-scheduler._dnd_start_lb[1]+\"px\";\r\n\t\tlb.style.left = scheduler._lb_start[0]+now[0]-scheduler._dnd_start_lb[0]+\"px\";\r\n\t}\r\n};\r\nscheduler._ready_to_dnd = function(e){\r\n\tvar lb = scheduler.getLightbox();\r\n\tscheduler._lb_start = [lb.offsetLeft, lb.offsetTop];\r\n\tscheduler._dnd_start_lb = [e.pageX, e.pageY];\r\n};\r\nscheduler._finish_dnd = function(){\r\n\tif (scheduler._lb_start){\r\n\t\tscheduler._lb_start = scheduler._dnd_start_lb = false;\r\n\t\tgetLightboxRoot().classList.remove(\"dhx_unselectable\");\r\n\t\tdocument.dhx_unselectable = false;\r\n\t}\r\n};\r\nscheduler.getLightbox=function(){ //scheduler.config.wide_form=true;\r\n\tif (!this._lightbox){\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\td.className=\"dhx_cal_light\";\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\td.className+=\" dhx_cal_light_wide\";\r\n\t\tif (scheduler.form_blocks.recurring)\r\n\t\t\td.className+=\" dhx_cal_light_rec\";\r\n\t\tif (scheduler.config.rtl)\r\n\t\t\td.className+=\" dhx_cal_light_rtl\";\r\n\t\tif (scheduler.config.responsive_lightbox)\r\n\t\t\td.className += \" dhx_cal_light_responsive\";\r\n\r\n\t\td.style.visibility=\"hidden\";\r\n\t\tvar html = this._lightbox_template;\r\n\r\n\t\tvar buttons = this.config.buttons_left;\r\n\r\n\r\n\t\thtml += \"<div class='dhx_cal_lcontrols'>\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"<div \"+ariaAttr+\" data-action='\"+ buttons[i]+\"' class='dhx_btn_set dhx_\"+(scheduler.config.rtl?\"right\":\"left\")+\"_btn_set \" + buttons[i] + \"_set'><div class='dhx_btn_inner \" + buttons[i] + \"'></div><div>\" + scheduler.locale.labels[buttons[i]] + \"</div></div>\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"<div class='dhx_cal_lcontrols_push_right'></div>\";\r\n\r\n\t\t\thtml += \"<div \"+ariaAttr+\" data-action='\"+ buttons[i]+\"' class='dhx_btn_set dhx_\"+(rtl?\"left\":\"right\")+\"_btn_set \" +\r\n\t\t\t\t\t\tbuttons[i] + \"_set'><div class='dhx_btn_inner \" +\r\n\t\t\t\t\t\tbuttons[i] + \"'></div><div>\" + scheduler.locale.labels[buttons[i]] + \"</div></div>\";\r\n\t\t}\r\n\t\thtml += \"</div>\";\r\n\t\thtml+=\"</div>\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"<div \"+ariaAttr+\" class='dhx_custom_button' data-section-index='\"+i+\"' index='\"+i+\"'><div class='dhx_custom_button_\"+sns[i].button+\"'></div><div>\"+this.locale.labels[\"button_\"+sns[i].button]+\"</div></div>\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"<div class='dhx_wrap_section'>\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"<div id='\"+sns[i].id+\"' class='dhx_cal_lsection dhx_cal_lsection_\"+sns[i].name+\"'>\"+button+ \"<label>\"+label_name+\"</label></div>\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"</div>\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i<ds.length; i++) {\r\n\t\t\tvar t_ds = ds[i];\r\n\t\t\tvar className = scheduler._getClassName(t_ds);\r\n\t\t\tif (className == \"dhx_cal_larea\") {\r\n\t\t\t\tt_ds.innerHTML = html;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// bind labels to lightbox inputs\r\n\t\tscheduler._bindLightboxLabels(sns);\r\n\r\n\t\t//sizes\r\n\t\tthis.setLightboxSize();\r\n\r\n\t\tthis._init_lightbox_events(this);\r\n\t\t//d.style.display=\"none\";\r\n\t\td.style.visibility=\"visible\";\r\n\t}\r\n\r\n\r\n\treturn this._lightbox;\r\n};\r\n\r\nscheduler._bindLightboxLabels = function(sections){\r\n\t// link section labels to controls using label[for] attribute and label.onclick=control.focus as a fallback\r\n\t// label[for] is preferable for accessibility reasons\r\n\r\n\tfor(var i = 0; i < sections.length; i++){\r\n\t\tvar section = sections[i];\r\n\t\tif(!section.id || !scheduler._lightbox.querySelector(`#${section.id}`))\r\n\t\t\tcontinue;\r\n\r\n\t\tvar labelBlock = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\t\tvar label = labelBlock.querySelector(\"label\");\r\n\r\n\t\tvar inputBlock = scheduler._get_lightbox_section_node(section);\r\n\t\twhile(inputBlock && !inputBlock.querySelector){\r\n\t\t\tinputBlock = inputBlock.nextSibling;\r\n\t\t}\r\n\r\n\t\tvar fallback = true;\r\n\r\n\t\tif(inputBlock) {\r\n\t\t\tvar input = inputBlock.querySelector(\"input, select, textarea\");\r\n\t\t\tif(input){\r\n\t\t\t\tsection.inputId = input.id || \"input_\" + scheduler.uid();\r\n\t\t\t\tif(!input.id)\r\n\t\t\t\t\tinput.id = section.inputId;\r\n\t\t\t\tlabel.setAttribute(\"for\", section.inputId);\r\n\t\t\t\tfallback = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// use control.focus if failed to bind input using label[for]\r\n\t\tif(fallback){\r\n\t\t\tvar control = scheduler.form_blocks[section.type];\r\n\t\t\tif(control.focus){\r\n\t\t\t\tscheduler.event(label, \"click\", (function(section){\r\n\t\t\t\t\treturn function(){\r\n\r\n\t\t\t\t\t\tvar block = scheduler.form_blocks[section.type];\r\n\t\t\t\t\t\tvar node = scheduler._get_lightbox_section_node(section);\r\n\r\n\t\t\t\t\t\tif(block && block.focus)\r\n\t\t\t\t\t\t\tblock.focus.call(scheduler, node);\r\n\t\t\t\t\t};\r\n\t\t\t\t})(section));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(old_id, new_id){\r\n\tif(this._lightbox_id == old_id)\r\n\t\tthis._lightbox_id = new_id;\r\n});\r\n\r\nscheduler._lightbox_template= `<div class='dhx_cal_ltitle'><div class=\"dhx_cal_ltitle_descr\"><span class='dhx_mark'>&nbsp;</span><span class='dhx_time'></span><span class='dhx_title'></span>\r\n</div>\r\n<div class=\"dhx_cal_ltitle_controls\">\r\n<a class=\"dhx_cal_ltitle_close_btn scheduler_icon close\"></a>\r\n</div></div><div class='dhx_cal_larea'></div>`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch  &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1)   ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1)       ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1)    ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"<div>\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"</div>\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '<div class=\"dhx_cal_navline\">' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_prev_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_next_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_today_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_date\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"day\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"week\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"month\"></div>' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_header\">' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_data\">' +\r\n\t\t\t\t\t'</div>';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\"<div class='dhx_cal_scale_placeholder'>\" +\r\n\t\t\t\"</div>\"+\r\n\t\t\"<div>\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\t\"<div class='dhx_cal_data'>\" +\r\n\t\t\t\t\t\"<div class='dhx_cal_event'><div class='dhx_body'></div>\"+\r\n\t\t\t\t\"</div>\"+\r\n\t\t\t\"<div>\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"<span class='dhx_scale_h'>\"+ date.getHours() +\"</span>\"+\r\n\t\t\"<span class='dhx_scale_m'>&nbsp;\"+ min +\"</span>\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"<div class='dhx_cal_ltitle'><span class='dhx_mark'>&nbsp;</span><span class='dhx_time'></span><span class='dhx_title'></span><div class='dhx_close_icon'></div></div><div class='dhx_cal_larea'></div>\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' +  config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp  = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '<div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div><div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div></div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div>';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns:   true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param:   mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param:   mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn  this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_prepareItemForJson(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (let i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop){\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForJson(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t\t}\r\n\t\t\t} else if (prop !== undefined){\r\n\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareItemForForm(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop) {\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForForm(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[i] = \"\"; // for all falthy values\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareDataItem: function(item) {\r\n\t\tif(this._serializeAsJson){\r\n\t\t\treturn this._prepareItemForJson(item);\r\n\t\t}else {\r\n\t\t\treturn this._prepareItemForForm(item);\r\n\t\t}\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `<div ${buttonAriaAttrs} class='scheduler_popup_button dhtmlx_popup_button ${buttonCss}' data-result='${result}' result='${result}' ><div>${text}</div></div>`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"<div>\" + text.text + \"</div>\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n            if(text.callback) {\r\n                text.callback.call(this, e);\r\n            }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '<div class=\"scheduler_popup_title dhtmlx_popup_title\">' + config.title + '</div>';\r\n\t\tinner += '<div class=\"scheduler_popup_text dhtmlx_popup_text\" id=\"' + contentId + '\"><span>' + (config.content ? '' : config.text) + '</span></div><div  class=\"scheduler_popup_controls dhtmlx_popup_controls\">';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '</div>';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kes&auml;kuu\", \"Hein&auml;kuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei k&auml;yt&ouml;ss&auml;\",\r\n\t\tbutton_recurring_open: \"K&auml;yt&ouml;ss&auml;\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"P&auml;ivitt&auml;in\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"p&auml;iv&auml;\",\r\n\t\trepeat_radio_day_type2: \"Joka arkip&auml;iv&auml;\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko n&auml;in&auml; p&auml;ivin&auml;:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"p&auml;iv&auml;n&auml; joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"p&auml;iv&auml;\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston j&auml;lkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kes&auml;kuu\", \"Hein&auml;kuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d&quot;achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか？\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか？\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか？\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tfilterDays: null,\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date, filterDays} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tif(!(filterDays && filterDays(currentDate))){\r\n\t\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\t\tdayElement.innerText = label;\r\n\t\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\t\t\t}\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks, filterDays} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tconst weekLength = daysOfWeekContainer.children.length;\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\t\tif(weekLength !== 7){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-week-length\", weekLength);\r\n\t\t}\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tif(!(filterDays && filterDays(currDate))){\r\n\r\n\t\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\t}\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"<a data-link-date='\" + d_s(date) + \"' href='#'>\" + week_x(date) + \"</a>\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" &ndash; \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"<div \"+rowAttr+\" class='dhx_agenda_line dhx_agenda_line_header'>\" +\r\n\t\t\t\t\"<div \"+dateHeader+\">\"+l.date+\"</div>\" +\r\n\t\t\t\t\"<span class = 'description_header' style='padding-left:25px' \"+descriptionHeader+\">\"+l.description+\"</span>\" +\r\n\t\t\t\t\"</div>\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"<div class='dhx_agenda_area' \"+tableAttr+\">\";\r\n\t\tfor (var i=0; i<events.length; i++){\r\n\t\t\tvar ev = events[i];\r\n\t\t\tvar bg_color = (ev.color?(\"--dhx-scheduler-event-background:\"+ev.color+\";\"):\"\");\r\n\t\t\tvar color = (ev.textColor?(\"--dhx-scheduler-event-color:\"+ev.textColor+\";\"):\"\");\r\n\t\t\tvar ev_class = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\t\tagendaEventAttrString = scheduler._waiAria.agendaEventAttrString(ev);\r\n\t\t\tvar agendaDetailsButtonAttr = scheduler._waiAria.agendaDetailsBtnString();\r\n\r\n\t\t\thtml+=\"<div \"+agendaEventAttrString+\" class='dhx_agenda_line\"+(ev_class?' '+ev_class:'')+\r\n\t\t\t\t\t\"' event_id='\"+ev.id+\"' \"+scheduler.config.event_attribute+\"='\"+ev.id+\"' style='\"+color+\"\"+bg_color+\"\"+\r\n\t\t\t\t\t(ev._text_style||\"\")+\"'><div class='dhx_agenda_event_time'>\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"</div>\";\r\n\t\t\thtml+=`<div ${agendaDetailsButtonAttr} class='dhx_event_icon icon_details'><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t\t<path d=\"M15.4444 16.4H4.55556V7.6H15.4444V16.4ZM13.1111 2V3.6H6.88889V2H5.33333V3.6H4.55556C3.69222 3.6 3 4.312 3 5.2V16.4C3 16.8243 3.16389 17.2313 3.45561 17.5314C3.74733 17.8314 4.143 18 4.55556 18H15.4444C15.857 18 16.2527 17.8314 16.5444 17.5314C16.8361 17.2313 17 16.8243 17 16.4V5.2C17 4.312 16.3 3.6 15.4444 3.6H14.6667V2H13.1111ZM13.8889 10.8H10V14.8H13.8889V10.8Z\" fill=\"#A1A4A6\"/>\r\n\t\t\t</svg></div>`;\r\n\t\t\thtml+=\"<span>\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"</span></div>\";\r\n\t\t}\r\n\t\thtml+=\"<div class='dhx_v_border'></div></div>\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `<div class=\"dhx_agenda_day_date\">${dayDateToStr(date)}</div>\r\n\t\t<div class=\"dhx_agenda_day_dow\">${dayDowToStr(date)}</div>`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\tif(scheduler.ignore_agenda && scheduler.ignore_agenda(new Date(day*1))){\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `<div class=\"dhx_cal_agenda_no_events\">${scheduler.locale.labels.agenda_tab}</div>`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n<div class=\"dhx_cal_agenda_day\" data-date=\"${scheduler.templates.format_date(day)}\" data-day=\"${day.getDay()}\">\r\n\t<div class=\"dhx_cal_agenda_day_header\">${scheduler.templates.agenda_day(day)}</div>\r\n\t<div class=\"dhx_cal_agenda_day_events\">\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `</div></div>`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `<div class=\"dhx_cal_agenda_event_line ${cls||\"\"} ${calendarEvent.id == selectedId ? \"dhx_cal_agenda_event_line_selected\" : \"\"}\" ${style} ${scheduler.config.event_attribute}=\"${calendarEvent.id}\">\r\n\t<div class=\"dhx_cal_agenda_event_line_marker\"></div>\r\n\t<div class=\"dhx_cal_agenda_event_line_time\">${dates}</div>\r\n\t<div class=\"dhx_cal_agenda_event_line_text\">${description}</div>\r\n</div>`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif((edited_ev.rrule && !edited_ev.recurring_event_id) || edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rrule || ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k<evs_dates.length; k++) {\r\n\t\t\tvar tevs = scheduler.getEvents(evs_dates[k].start_date, evs_dates[k].end_date);\r\n\t\t\tfor(var j=0; j<tevs.length; j++) {\r\n\t\t\t\tif ((tevs[j].event_pid || tevs[j].id || tevs[j].recurring_event_id) != ev.id )\r\n\t\t\t\t\tevs.push(tevs[j]);\r\n\t\t\t}\r\n\t\t}\r\n\t} else {\r\n\t\tevs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\tfor (var i=0; i<evs.length; i++) {\r\n\t\t\tvar concurrent = evs[i];\r\n\t\t\t// for recurring legacy\r\n\t\t\tif (concurrent.id == ev.id || (concurrent.event_length && [concurrent.event_pid, concurrent.event_length].join(\"#\") == ev.id)) {\r\n\t\t\t\tevs.splice(i,1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t//for recurring rrule\r\n\t\t\tif (concurrent.recurring_event_id && [concurrent.recurring_event_id, concurrent._pid_time].join(\"#\") == ev.id) {\r\n\t\t\t\tevs.splice(i,1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tvar map_to = scheduler._get_section_property();\r\n\r\n\tvar single = true;\r\n\tif (checked_mode) { // custom view\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++){\r\n\t\t\tif (evs[i].id != ev.id && this._check_sections_collision(evs[i], ev))\r\n\t\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\tif (count >= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows && rows.length) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight =  this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value +  (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.<br>\r\n\t\tYou may need a <a href=\"https://docs.dhtmlx.com/scheduler/editions_comparison.html\" target=\"_blank\">Professional version of the component</a>.<br>\r\n\t\tContact us at <a href=\"https://dhtmlx.com/docs/contact.shtml\" target=\"_blank\">https://dhtmlx.com/docs/contact.shtml</a> if you have any questions.`);\r\n\t}\r\n};","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"<div class='\"+sns.type+\"' ></div>\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `<div class='dhx_cal_ltext dhx_cal_radio ${sns.vertical ? \"dhx_cal_radio_vertical\": \"\"}' style='max-height:${sns.height}px;'>`;\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\tvar id = scheduler.uid();\r\n\t\t\tres += \"<label class='dhx_cal_radio_item' for='\"+id+\"'><input id='\"+id+\"' type='radio' name='\"+sns.name+\"' value='\"+sns.options[i].key+\"'><span>\"+\" \"+sns.options[i].label+\"</span></label>\";\r\n\t\t}\r\n\t\tres += \"</div>\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i<radiobuttons.length; i++) {\r\n\t\t\tif(radiobuttons[i].checked) {\r\n\t\t\t\treturn radiobuttons[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['checkbox']={\r\n\trender:function(sns) {\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\treturn '<div class=\"dhx_cal_wide_checkbox\"></div>';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"<input id='\"+id+\"' type='checkbox' value='true' name='\"+config.name+\"'\"+((isChecked)?\"checked='true'\":'')+\"'>\";\r\n\t\tvar label_html = \"<label for='\"+id+\"'>\"+(scheduler.locale.labels[\"section_\"+config.name]||config.name)+\"</label>\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t<g>\r\n\t<line x1=\"0.5\" y1=\"5\" x2=\"0.5\" y2=\"3.0598e-08\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"0.5\" x2=\"5\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"0.5\" y1=\"11\" x2=\"0.5\" y2=\"16\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"15.5\" x2=\"5\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"0.5\" x2=\"16\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"2.18557e-08\" x2=\"15.5\" y2=\"5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"15.5\" x2=\"16\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"16\" x2=\"15.5\" y2=\"11\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t</g>\r\n\t</svg>\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\",  function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad  number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex =  currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate  = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours &&  last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date =  new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode =  this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode =  this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\t\t\t// GS-2527: if the event has multiple sections, it will be inserted into the initial sections.\r\n\t\t\tif(scheduler.config.multisection && ev[property] && scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(ev)) \r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) {  // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) {  // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) {  dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\")  return false;\r\n\t\t\t\tif (z==\"true_deleted\")  return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n        var _cloneObj = function(obj){\r\n            if(obj === null || typeof(obj) != 'object')\r\n                return obj;\r\n            var temp = new obj.constructor();\r\n            for(var key in obj)\r\n                temp[key] = _cloneObj(obj[key]);\r\n            return temp;\r\n        };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tscheduler.config['lightbox_'+scheduler.layers[i].name] = { };\r\n            scheduler.config['lightbox_'+scheduler.layers[i].name].sections = _cloneObj(scheduler.config.lightbox.sections);\r\n\t\t\tscheduler._layers_zindex[scheduler.layers[i].name] = scheduler.config.initial_layer_zindex||5 + i*3;\r\n\t\t\tif(scheduler.layers[i].url) {\r\n\t\t\t\tvar dp = scheduler.createDataProcessor({\r\n\t\t\t\t\turl: scheduler.layers[i].url\r\n\t\t\t\t});\r\n\t\t\t\tdp.layer = scheduler.layers[i].name;\r\n\t\t\t\tscheduler._dataprocessors.push(dp);\r\n\t\t\t\tscheduler._dataprocessors[i].init(scheduler);\r\n\t\t\t}\r\n\t\t\tif(scheduler.layers[i].isDefault)\r\n\t\t\t\tscheduler.defaultLayer = scheduler.layers[i].name;\r\n\t\t}\r\n\t})();\r\n\r\n\r\n\tscheduler.showLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, true);\r\n\t};\r\n\r\n\tscheduler.hideLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, false);\r\n\t};\r\n\r\n\tscheduler.toggleLayer = function(tlayer, visible) { // visible is optional\r\n\t\tvar layer = this.getLayer(tlayer);\r\n\r\n\t\tif(typeof visible != 'undefined')\r\n\t\t\tlayer.visible = !!visible;\r\n\t\telse\r\n\t\t\tlayer.visible = !layer.visible;\r\n\r\n\t\tthis.setCurrentView(this._date, this._mode);\r\n\t};\r\n\r\n\tscheduler.getLayer = function(tlayer) { // either string with layer name or event with layer property\r\n\t\tvar layer,\r\n\t\t\tlayer_name;\r\n\t\tif(typeof tlayer == 'string')\r\n\t\t\tlayer_name = tlayer;\r\n\t\tif(typeof tlayer == 'object')\r\n\t\t\tlayer_name = tlayer.layer;\r\n\t\tfor (var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tif(scheduler.layers[i].name == layer_name)\r\n\t\t\t\tlayer = scheduler.layers[i];\r\n\t\t}\r\n\t\treturn layer;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function (event_id){\r\n\t\tvar ev = this.getEvent(event_id);\r\n        this.config.lightbox.sections = this.config['lightbox_'+ev.layer].sections;\r\n        scheduler.resetLightbox();\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\tvar ev = scheduler.getEvent(event_id);\r\n        return !scheduler.getLayer(ev.layer).noMenu;\r\n\t});\r\n\r\n\tscheduler.attachEvent('onEventCollision', function(ev, evs) {\r\n\t\tvar layer = this.getLayer(ev);\r\n\t\tif(!layer.checkCollision)\r\n\t\t\treturn false;\r\n\t\tvar count = 0;\r\n\t\tfor(var i = 0; i<evs.length; i++) {\r\n\t\t\tif(evs[i].layer == layer.name && evs[i].id != ev.id)\r\n\t\t\t\tcount++;\r\n\t\t}\r\n\t\treturn (count >= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\")  ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\")  ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date =  base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('<div class=') == -1)\r\n\t\t\tcontentA = (scheduler.templates['event_header_'+ev.layer])?scheduler.templates['event_header_'+ev.layer](ev.start_date,ev.end_date,ev):contentA;\r\n\t\tif(contentB.indexOf('<div class=') == -1)\r\n\t\tcontentB = (scheduler.templates['event_text_'+ev.layer])?scheduler.templates['event_text_'+ev.layer](ev.start_date,ev.end_date,ev):contentB;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = \"dhx_cal_event\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar borderBox = scheduler._border_box_events();\r\n\r\n\t\tvar borderBoxWidth = w - 2;\r\n\t\tvar boxWidth = borderBox ? borderBoxWidth : (w-4),\r\n\t\theaderWidth = borderBox ? borderBoxWidth : (w-6),\r\n\t\tbodyWidth = borderBox ? borderBoxWidth : (w-14),\r\n\t\tfooterWidth = borderBox ? (borderBoxWidth - 2) : (w-8);\r\n\r\n\t\tvar bodyHeight = borderBox ? (h - this.xy.event_header_height) : (h-30 + 1);\r\n\r\n\t\tvar html='<div event_id=\"'+id+'\" '+scheduler.config.event_attribute+'=\"'+id+'\" class=\"'+cs+'\" style=\"position:absolute; top:'+y+'px; left:'+x+'px; width:'+boxWidth+'px; height:'+h+'px;'+(style||\"\")+'\">';\r\n\t\thtml+='<div class=\"dhx_header\" style=\" width:'+headerWidth+'px;\" >&nbsp;</div>';\r\n\t\thtml+='<div class=\"dhx_title\">'+contentA+'</div>';\r\n\t\thtml+='<div class=\"dhx_body\" style=\" width:'+bodyWidth+'px; height:'+bodyHeight+'px;\">'+contentB+'</div>';\r\n\t\thtml+='<div class=\"dhx_footer\" style=\" width:'+footerWidth+'px;'+(bottom?' margin-top:-1px;':'')+'\" ></div></div>';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='<div event_id=\"'+ev.id+'\" '+this.config.event_attribute+'=\"'+ev.id+'\" class=\"'+cs+'\" style=\"position:absolute; top:'+y+'px; left:'+x+'px; width:'+(x2-x-15)+'px;'+(ev._text_style||\"\")+'\">';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '</div>)');\r\n\t\thtml+='</div>';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"<textarea class='dhx_cal_editor'>\"+ev.text+\"</textarea>\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i<icons.length; i++)\r\n\t\t\t\ticons_str+=\"<div class='dhx_menu_icon \"+icons[i]+\"' title='\"+this.locale.labels[icons[i]]+\"'></div>\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"<div class='dhx_menu_head'></div>\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n    scheduler.filter_agenda = function(id, event) {\r\n        var layer = scheduler.getLayer(event.layer);\r\n        return (layer && layer.visible);\r\n    };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end   = null;\r\nscheduler.config.limit_view  = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end =  scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n    });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng:  options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise<void> {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise<IMapPosition> {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i <  this._markers.length; i++) {\r\n\t\t\t\tif (event.id ==  this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\":  \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize:     [25, 41],\r\n\t\t\tshadowSize:   [30, 65],\r\n\t\t\ticonAnchor:   [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise<IMapPosition> {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\":  \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i <  this._markers.length; i++) {\r\n                const popup = this._markers[i].marker.getPopup();\r\n                if (popup.isOpen()){\r\n                    popup.remove();\r\n                }\r\n\t\t\t\tif (event.id ==  this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n        let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n        const map = new mapboxgl.Map({\r\n            container: container, \r\n            center: [options.initial_position.lng, options.initial_position.lat], \r\n            zoom:  options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n        });\r\n        map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n        this.map = map;\r\n        this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n        while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n        container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n        let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n            .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n            .setHTML(this.scheduler.templates.map_info_content(event));\r\n        const marker = new mapboxgl.Marker()\r\n            .setLngLat(config)\r\n            .setPopup(popup)\r\n            .addTo(this.map);\r\n        const markerInfo = {event, marker};    \r\n        this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n                this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i <this._markers.length; i++) {\r\n\t\t\tthis._markers[i].marker.remove();\r\n\t\t}\r\n\t\tthis._markers = [];\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter([longitude, latitude]);\r\n        this.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise<IMapPosition> {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import  { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate  = false;  // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false;  // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t   lat: 48.724,\r\n\t   lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t   lat: 15,\r\n\t   lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" &ndash; \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" &ndash; \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n    return `<div><b>Event's text:</b> ${event.text}\r\n\t\t\t\t<div><b>Location:</b> ${event.event_location}</div>\r\n\t\t\t\t<div><b>Starts:</b> ${scheduler.templates.tooltip_date_format(event.start_date)}</div>\r\n\t\t\t\t<div><b>Ends:</b> ${scheduler.templates.tooltip_date_format(event.end_date)}</div>\r\n\t\t\t</div>`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve ||  options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date:  scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n  eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n    scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate  = false;\r\n\t\treturn true;\r\n    }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n    scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n      \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n    }),\r\n    scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n    }),\r\n    scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n    })\r\n  );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve  !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t    }\r\n\t\t  \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"<div \"+ariaAttr+\" class='dhx_map_area'>\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"<div \"+ariaAttr+\" class='\" + event_class + \"' event_id='\" + ev.id + \"' \"+scheduler.config.event_attribute+\"='\"+ev.id+\"' style='\" + bg_color + \"\" + color + \"\" + (ev._text_style || \"\") + \" width: \" + (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + \"px;'><div class='dhx_map_event_time' style='width: \" + scheduler.xy.map_date_width + \"px;' >\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"</div>\";\r\n\t\t\thtml += `<div ${ariaButtonAttr} class='dhx_event_icon icon_details'><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t\t<path d=\"M15.4444 16.4H4.55556V7.6H15.4444V16.4ZM13.1111 2V3.6H6.88889V2H5.33333V3.6H4.55556C3.69222 3.6 3 4.312 3 5.2V16.4C3 16.8243 3.16389 17.2313 3.45561 17.5314C3.74733 17.8314 4.143 18 4.55556 18H15.4444C15.857 18 16.2527 17.8314 16.5444 17.5314C16.8361 17.2313 17 16.8243 17 16.4V5.2C17 4.312 16.3 3.6 15.4444 3.6H14.6667V2H13.1111ZM13.8889 10.8H10V14.8H13.8889V10.8Z\" fill=\"#A1A4A6\"/>\r\n\t\t\t</svg></div>`;\r\n\t\t\thtml += \"<div class='line_description' style='width:\" + (scheduler.xy.map_description_width - scheduler.xy.map_icon_width) + \"px;'>\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"</div></div>\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"<div class='dhx_v_border' style=\"+(scheduler.config.rtl ? \"'right: \" : \"'left: \") + (scheduler.xy.map_date_width - 1) + \"px;'></div><div class='dhx_v_border_description'></div></div>\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"<div class='dhx_map_head' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"px;' ><div class='headline_date' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscheduler.xy.map_date_width + \"px;'>\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"</div><div class='headline_description' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscheduler.xy.map_description_width + \"px;'>\" + l.description + \"</div></div>\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\"&nbsp;\", \"&nbsp;\"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"<div class='dhx_year_month'></div>\" +\r\n\t\t\t\"<div class='dhx_year_grid\" +\r\n\t\t\t(scheduler.config.rtl ? \" dhx_grid_rtl'>\" : \"'>\") +\r\n\t\t\t\"<div class='dhx_year_week'>\"+(week_template ? week_template.innerHTML : \"\")+\"</div>\" +\r\n\t\t\t\"<div class='dhx_year_body'></div>\" +\r\n\t\t\"</div>\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"<span class='dhx_minical_input_wrapper'><input class='dhx_readonly dhx_minical_input' type='text' readonly='true'></span>\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1;  // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" <select class='dhx_lightbox_time_select'>\";\r\n\t\tfor (var i = first; i < last; i += this.config.time_step * 1) { // `<` to exclude last \"00:00\" option\r\n\t\t\tvar time = this.templates.time_picker(dt);\r\n\t\t\thtml += \"<option value='\" + i + \"'>\" + time + \"</option>\";\r\n\t\t\tsns._time_values.push(i);\r\n\t\t\tdt = this.date.add(dt, this.config.time_step, \"minute\");\r\n\t\t}\r\n\t\thtml += \"</select>\";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"<div class='dhx_section_time dhx_lightbox_minical'>\" + html + \"<span class='dhx_lightbox_minical_spacer'> &nbsp;&ndash;&nbsp; </span>\" + html + \"</div>\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> \" + scheduler.locale.labels.full_day + \"&nbsp;</label></input>\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"<div class='\"+css+\"' style='overflow: auto; max-height: \"+sns.height+\"px; position: relative;' >\";\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\t_result += \"<label><input type='checkbox' value='\"+sns.options[i].key+\"'/>\"+sns.options[i].label+\"</label>\";\r\n\t\t}\r\n\t\t_result += \"</div>\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev =  model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"<br[^>]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"</\"+tag+\">\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"<scale mode='\" + mode + \"' today='\" + scheduler._els.dhx_cal_date[0].innerHTML + \"'>\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"<column>\" + clean_html(xh[i].innerHTML) + \"</column>\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"<column>\" + clean_html(xh[0].innerHTML) + \"</column><column>\" + clean_html(xh[1].innerHTML) + \"</column>\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"<month label='\" + clean_html(xh[i].querySelector(\".dhx_year_month\").innerHTML) + \"'>\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"</month>\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"<x>\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"</x>\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"<y>\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"<row><![CDATA[\" + clean_html(el.cells[0].innerHTML) + \"]]></row>\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"</y>\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"<y>\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n<row><![CDATA[\" + clean_html(yh[i].innerHTML) + \"]]></row>\";\r\n\t\t\t\txml += \"</y>\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"</scale>\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n<row height='\" + cells[0].offsetHeight + \"'><![CDATA[\" + clean_html(days.join(\"|\")) + \"]]></row>\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n<column><![CDATA[\" + clean_html(xh[i].innerHTML) + \"]]></column>\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n<column second_scale='\" + top_col + \"'><![CDATA[\" + clean_html(xhs[i].innerHTML) + \"]]></column>\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n                xml += \"<event><head><![CDATA[\" + clean_html(evs[i].childNodes[0].innerHTML) + \"]]></head><body><![CDATA[\" + clean_html(evs[i].childNodes[2].innerHTML) + \"]]></body></event>\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"<event day='\" + evs[i].parentNode.getAttribute(\"day\") + \"'><body>\" + clean_html(evs[i].innerHTML) + \"</body></event>\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"<event day='\" + (day % 7) + \"' week='\" + Math.floor(day / 7) + \"' month='\" + m + \"' backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'></event>\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n<event><body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].innerHTML) + \"]]></body></event>\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n                if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n<event week='\" + week + \"' day='\" + day + \"' type='\" + e_type + \"' x='\" + zx + \"' y='\" + zy + \"' width='\" + zdx + \"' height='\" + zdy + \"' len='\" + length + \"'>\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"<header><![CDATA[\" + clean_html(evs[i].childNodes[1].innerHTML) + \"]]></header>\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"<body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].childNodes[2].innerHTML) + \"]]></body>\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"<body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].innerHTML) + \"]]></body>\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"</event>\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '<form id=\"' + uid + '\" method=\"post\" target=\"_blank\" action=\"' + url + '\" accept-charset=\"utf-8\" enctype=\"application/x-www-form-urlencoded\"><input type=\"hidden\" name=\"mycoolxmlbody\"/> </form>';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"<data>\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"</data>\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t *     { source: scheduler1, mode: \"color\" },\r\n\t *     { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t *     { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i<events.length; i++){\r\n\t\tscheduler.attachEvent(events[i], hiding_function);\r\n\t}\r\n})();\r\n\r\nscheduler.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };\r\nscheduler.templates.quick_info_content = function(start, end, ev){ return ev.details || \"\"; };\r\nscheduler.templates.quick_info_date = function(start, end, ev){\r\n\tif (scheduler.isOneDayEvent(ev) && scheduler.config.rtl){\r\n\t\treturn scheduler.templates.day_date(start, end, ev) + \" \" +scheduler.templates.event_header(end, start, ev);\r\n\t} else if (scheduler.isOneDayEvent(ev)) {\r\n\t\treturn scheduler.templates.day_date(start, end, ev) + \" \" +scheduler.templates.event_header(start, end, ev);\r\n\t} else if (scheduler.config.rtl) {\r\n\t\treturn scheduler.templates.week_date(end, start, ev);\r\n\t} else {\r\n\t\treturn scheduler.templates.week_date(start, end, ev);\r\n\t}\r\n};\r\n\r\nscheduler.showQuickInfo = function(id){\r\n\tif (id == this._quick_info_box_id) return;\r\n\tthis.hideQuickInfo(true);\r\n\tif(this.callEvent(\"onBeforeQuickInfo\", [id]) === false){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet pos;\r\n\tif(clickedElementPosition && clickedElementPosition.id == id){\r\n\t\tpos = clickedElementPosition.position;\r\n\t} else {\r\n\t\tpos = this._get_event_counter_part(id);\r\n\t}\r\n\r\n\r\n\tif (pos){\r\n\t\tthis._quick_info_box = this._init_quick_info(pos);\r\n\t\tthis._fill_quick_data(id);\r\n\t\tthis._show_quick_info(pos);\r\n\r\n\t\tthis.callEvent(\"onQuickInfo\", [id]);\r\n\t}\r\n};\r\n\r\n(function(){\r\n\r\nfunction cssTimeToMs(time) {\r\n\ttime = time || \"\";\r\n\r\n\tvar num = parseFloat(time),\r\n\t\tunit = time.match(/m?s/),\r\n\t\tmilliseconds;\r\n\r\n\tif (unit) {\r\n\t\tunit = unit[0];\r\n\t}\r\n\r\n\tswitch (unit) {\r\n\t\tcase \"s\": // seconds\r\n\t\t\tmilliseconds = num * 1000;\r\n\t\t\tbreak;\r\n\t\tcase \"ms\": // milliseconds\r\n\t\t\tmilliseconds = num;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tmilliseconds = 0;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\treturn milliseconds;\r\n}\r\n\r\nscheduler.hideQuickInfo = function(forced){\r\n\tvar qi = this._quick_info_box;\r\n\tvar eventId = this._quick_info_box_id;\r\n\tthis._quick_info_box_id = 0;\r\n\r\n\tif (qi && qi.parentNode){\r\n\t\tvar width = qi.offsetWidth;\r\n\t\tif (scheduler.config.quick_info_detached) {\r\n\t\t\tthis.callEvent(\"onAfterQuickInfo\", [eventId]);\r\n\t\t\treturn qi.parentNode.removeChild(qi);\r\n\t\t}\r\n\r\n\t\tif (qi.style.right == \"auto\")\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\t\telse\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\tif (forced) {\r\n\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t}else{\r\n\r\n\t\t\tvar style;\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tstyle = window.getComputedStyle(qi, null);\r\n\t\t\t}else if(qi.currentStyle){\r\n\t\t\t\tstyle = qi.currentStyle;\r\n\t\t\t}\r\n\t\t\tvar delay = cssTimeToMs(style[\"transition-delay\"]) + cssTimeToMs(style[\"transition-duration\"]);\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(qi.parentNode){\r\n\t\t\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t\t\t}\r\n\t\t\t}, delay);\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterQuickInfo\", [eventId]);\r\n\t}\r\n};\r\n\r\n})();\r\n\r\nscheduler.event(window, \"keydown\", function(e){\r\n\tif (e.keyCode == 27)\r\n\t\tscheduler.hideQuickInfo();\r\n});\r\n\r\nscheduler._show_quick_info = function(pos){\r\n\tvar qi = scheduler._quick_info_box;\r\n\tscheduler._obj.appendChild(qi);\r\n\tvar width = qi.offsetWidth;\r\n\tvar height = qi.offsetHeight;\r\n\r\n\tif (scheduler.config.quick_info_detached){\r\n\t\tvar left = pos.left - pos.dx*(width - pos.width);\r\n\t\tif(scheduler.getView() && scheduler.getView()._x_scroll){\r\n\t\t\t// scrollable timeline\r\n\t\t\tif(scheduler.config.rtl){\r\n\t\t\t\tleft += scheduler.getView()._x_scroll;\r\n\t\t\t}else{\r\n\t\t\t\tleft -= scheduler.getView()._x_scroll;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tvar right = left + width;\r\n\t\tif(right > window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t<div class=\"dhx_cal_qi_tcontrols\">\r\n\t\t\t<a class=\"dhx_cal_qi_close_btn scheduler_icon close\"></a>\r\n\t\t</div>\r\n\t\t<div class=\"dhx_cal_qi_title\" ${ariaAttr}>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"dhx_cal_qi_tcontent\"></div>\r\n\t\t\t\t<div class=\"dhx_cal_qi_tdate\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"dhx_cal_qi_content\"></div>`;\r\n\r\n\t//buttons\r\n\t\thtml += \"<div class=\\\"dhx_cal_qi_controls\\\">\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `<div ${ariaAttr} class=\"dhx_qi_big_icon ${buttons[i]}\" title=\"${scheduler.locale.labels[buttons[i]]}\">\r\n\t\t\t\t<div class='dhx_menu_icon ${buttons[i]}'></div><div>${scheduler.locale.labels[buttons[i]]}</div></div>`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"</div>\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data  = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `<span>${header.content}</span>`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n    'MO',\n    'TU',\n    'WE',\n    'TH',\n    'FR',\n    'SA',\n    'SU',\n];\nvar Weekday = /** @class */ (function () {\n    function Weekday(weekday, n) {\n        if (n === 0)\n            throw new Error(\"Can't create weekday with n == 0\");\n        this.weekday = weekday;\n        this.n = n;\n    }\n    Weekday.fromStr = function (str) {\n        return new Weekday(ALL_WEEKDAYS.indexOf(str));\n    };\n    // __call__ - Cannot call the object directly, do it through\n    // e.g. RRule.TH.nth(-1) instead,\n    Weekday.prototype.nth = function (n) {\n        return this.n === n ? this : new Weekday(this.weekday, n);\n    };\n    // __eq__\n    Weekday.prototype.equals = function (other) {\n        return this.weekday === other.weekday && this.n === other.n;\n    };\n    // __repr__\n    Weekday.prototype.toString = function () {\n        var s = ALL_WEEKDAYS[this.weekday];\n        if (this.n)\n            s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n        return s;\n    };\n    Weekday.prototype.getJsWeekday = function () {\n        return this.weekday === 6 ? 0 : this.weekday + 1;\n    };\n    return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n    return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n    return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n    return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n    if (end === void 0) { end = start; }\n    if (arguments.length === 1) {\n        end = start;\n        start = 0;\n    }\n    var rang = [];\n    for (var i = start; i < end; i++)\n        rang.push(i);\n    return rang;\n};\nexport var clone = function (array) {\n    return [].concat(array);\n};\nexport var repeat = function (value, times) {\n    var i = 0;\n    var array = [];\n    if (isArray(value)) {\n        for (; i < times; i++)\n            array[i] = [].concat(value);\n    }\n    else {\n        for (; i < times; i++)\n            array[i] = value;\n    }\n    return array;\n};\nexport var toArray = function (item) {\n    if (isArray(item)) {\n        return item;\n    }\n    return [item];\n};\nexport function padStart(item, targetLength, padString) {\n    if (padString === void 0) { padString = ' '; }\n    var str = String(item);\n    targetLength = targetLength >> 0;\n    if (str.length > targetLength) {\n        return String(str);\n    }\n    targetLength = targetLength - str.length;\n    if (targetLength > padString.length) {\n        padString += repeat(padString, targetLength / padString.length);\n    }\n    return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n    var splits = str.split(sep);\n    return num\n        ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n        : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n    var r = a % b;\n    // If r and b differ in sign, add b to wrap the result to the correct sign.\n    return r * b < 0 ? r + b : r;\n};\n/**\n * @see: <http://docs.python.org/library/functions.html#divmod>\n */\nexport var divmod = function (a, b) {\n    return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n    return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n    return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n    return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n    if (h === void 0) { h = 0; }\n    if (i === void 0) { i = 0; }\n    if (s === void 0) { s = 0; }\n    return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: <http://docs.python.org/library/datetime.html#datetime.MAXYEAR>\n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n    var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n    return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n        ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n    return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n    return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n    return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: <http://www.mcfedries.com/JavaScript/DaysBetween.asp>\n */\nexport var daysBetween = function (date1, date2) {\n    // The number of milliseconds in one day\n    // Convert both dates to milliseconds\n    var date1ms = date1.getTime();\n    var date2ms = date2.getTime();\n    // Calculate the difference in milliseconds\n    var differencems = date1ms - date2ms;\n    // Convert back to days and return\n    return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: <http://docs.python.org/library/datetime.html#datetime.date.toordinal>\n */\nexport var toOrdinal = function (date) {\n    return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - <http://docs.python.org/library/datetime.html#datetime.date.fromordinal>\n */\nexport var fromOrdinal = function (ordinal) {\n    return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n    var month = date.getUTCMonth();\n    return month === 1 && isLeapYear(date.getUTCFullYear())\n        ? 29\n        : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n    return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: <http://docs.python.org/library/calendar.html#calendar.monthrange>\n */\nexport var monthRange = function (year, month) {\n    var date = datetime(year, month + 1, 1);\n    return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: <http://docs.python.org/library/datetime.html#datetime.datetime.combine>\n */\nexport var combine = function (date, time) {\n    time = time || date;\n    return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n    var dolly = new Date(date.getTime());\n    return dolly;\n};\nexport var cloneDates = function (dates) {\n    var clones = [];\n    for (var i = 0; i < dates.length; i++) {\n        clones.push(clone(dates[i]));\n    }\n    return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n    dates.sort(function (a, b) {\n        return a.getTime() - b.getTime();\n    });\n};\nexport var timeToUntilString = function (time, utc) {\n    if (utc === void 0) { utc = true; }\n    var date = new Date(time);\n    return [\n        padStart(date.getUTCFullYear().toString(), 4, '0'),\n        padStart(date.getUTCMonth() + 1, 2, '0'),\n        padStart(date.getUTCDate(), 2, '0'),\n        'T',\n        padStart(date.getUTCHours(), 2, '0'),\n        padStart(date.getUTCMinutes(), 2, '0'),\n        padStart(date.getUTCSeconds(), 2, '0'),\n        utc ? 'Z' : '',\n    ].join('');\n};\nexport var untilStringToDate = function (until) {\n    var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n    var bits = re.exec(until);\n    if (!bits)\n        throw new Error(\"Invalid UNTIL value: \".concat(until));\n    return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n    // date format for sv-SE is almost ISO8601\n    var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n    // '2023-02-07 10:41:36'\n    return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n    var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n    // Date constructor can only reliably parse dates in ISO8601 format\n    var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n    var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n    var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n    return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n    function IterResult(method, args) {\n        this.minDate = null;\n        this.maxDate = null;\n        this._result = [];\n        this.total = 0;\n        this.method = method;\n        this.args = args;\n        if (method === 'between') {\n            this.maxDate = args.inc\n                ? args.before\n                : new Date(args.before.getTime() - 1);\n            this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n        }\n        else if (method === 'before') {\n            this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n        }\n        else if (method === 'after') {\n            this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n        }\n    }\n    /**\n     * Possibly adds a date into the result.\n     *\n     * @param {Date} date - the date isn't necessarly added to the result\n     * list (if it is too late/too early)\n     * @return {Boolean} true if it makes sense to continue the iteration\n     * false if we're done.\n     */\n    IterResult.prototype.accept = function (date) {\n        ++this.total;\n        var tooEarly = this.minDate && date < this.minDate;\n        var tooLate = this.maxDate && date > this.maxDate;\n        if (this.method === 'between') {\n            if (tooEarly)\n                return true;\n            if (tooLate)\n                return false;\n        }\n        else if (this.method === 'before') {\n            if (tooLate)\n                return false;\n        }\n        else if (this.method === 'after') {\n            if (tooEarly)\n                return true;\n            this.add(date);\n            return false;\n        }\n        return this.add(date);\n    };\n    /**\n     *\n     * @param {Date} date that is part of the result.\n     * @return {Boolean} whether we are interested in more values.\n     */\n    IterResult.prototype.add = function (date) {\n        this._result.push(date);\n        return true;\n    };\n    /**\n     * 'before' and 'after' return only one date, whereas 'all'\n     * and 'between' an array.\n     *\n     * @return {Date,Array?}\n     */\n    IterResult.prototype.getValue = function () {\n        var res = this._result;\n        switch (this.method) {\n            case 'all':\n            case 'between':\n                return res;\n            case 'before':\n            case 'after':\n            default:\n                return (res.length ? res[res.length - 1] : null);\n        }\n    };\n    IterResult.prototype.clone = function () {\n        return new IterResult(this.method, this.args);\n    };\n    return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n    __extends(CallbackIterResult, _super);\n    function CallbackIterResult(method, args, iterator) {\n        var _this = _super.call(this, method, args) || this;\n        _this.iterator = iterator;\n        return _this;\n    }\n    CallbackIterResult.prototype.add = function (date) {\n        if (this.iterator(date, this._result.length)) {\n            this._result.push(date);\n            return true;\n        }\n        return false;\n    };\n    return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n    dayNames: [\n        'Sunday',\n        'Monday',\n        'Tuesday',\n        'Wednesday',\n        'Thursday',\n        'Friday',\n        'Saturday',\n    ],\n    monthNames: [\n        'January',\n        'February',\n        'March',\n        'April',\n        'May',\n        'June',\n        'July',\n        'August',\n        'September',\n        'October',\n        'November',\n        'December',\n    ],\n    tokens: {\n        SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n        number: /^[1-9][0-9]*/,\n        numberAsText: /^(one|two|three)/i,\n        every: /^every/i,\n        'day(s)': /^days?/i,\n        'weekday(s)': /^weekdays?/i,\n        'week(s)': /^weeks?/i,\n        'hour(s)': /^hours?/i,\n        'minute(s)': /^minutes?/i,\n        'month(s)': /^months?/i,\n        'year(s)': /^years?/i,\n        on: /^(on|in)/i,\n        at: /^(at)/i,\n        the: /^the/i,\n        first: /^first/i,\n        second: /^second/i,\n        third: /^third/i,\n        nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n        last: /^last/i,\n        for: /^for/i,\n        'time(s)': /^times?/i,\n        until: /^(un)?til/i,\n        monday: /^mo(n(day)?)?/i,\n        tuesday: /^tu(e(s(day)?)?)?/i,\n        wednesday: /^we(d(n(esday)?)?)?/i,\n        thursday: /^th(u(r(sday)?)?)?/i,\n        friday: /^fr(i(day)?)?/i,\n        saturday: /^sa(t(urday)?)?/i,\n        sunday: /^su(n(day)?)?/i,\n        january: /^jan(uary)?/i,\n        february: /^feb(ruary)?/i,\n        march: /^mar(ch)?/i,\n        april: /^apr(il)?/i,\n        may: /^may/i,\n        june: /^june?/i,\n        july: /^july?/i,\n        august: /^aug(ust)?/i,\n        september: /^sep(t(ember)?)?/i,\n        october: /^oct(ober)?/i,\n        november: /^nov(ember)?/i,\n        december: /^dec(ember)?/i,\n        comma: /^(,\\s*|(and|or)\\s*)+/i,\n    },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n    return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n    function ToText(rrule, gettext, language, dateFormatter) {\n        if (gettext === void 0) { gettext = defaultGetText; }\n        if (language === void 0) { language = ENGLISH; }\n        if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n        this.text = [];\n        this.language = language || ENGLISH;\n        this.gettext = gettext;\n        this.dateFormatter = dateFormatter;\n        this.rrule = rrule;\n        this.options = rrule.options;\n        this.origOptions = rrule.origOptions;\n        if (this.origOptions.bymonthday) {\n            var bymonthday = [].concat(this.options.bymonthday);\n            var bynmonthday = [].concat(this.options.bynmonthday);\n            bymonthday.sort(function (a, b) { return a - b; });\n            bynmonthday.sort(function (a, b) { return b - a; });\n            // 1, 2, 3, .., -5, -4, -3, ..\n            this.bymonthday = bymonthday.concat(bynmonthday);\n            if (!this.bymonthday.length)\n                this.bymonthday = null;\n        }\n        if (isPresent(this.origOptions.byweekday)) {\n            var byweekday = !isArray(this.origOptions.byweekday)\n                ? [this.origOptions.byweekday]\n                : this.origOptions.byweekday;\n            var days = String(byweekday);\n            this.byweekday = {\n                allWeeks: byweekday.filter(function (weekday) {\n                    return !weekday.n;\n                }),\n                someWeeks: byweekday.filter(function (weekday) {\n                    return Boolean(weekday.n);\n                }),\n                isWeekdays: days.indexOf('MO') !== -1 &&\n                    days.indexOf('TU') !== -1 &&\n                    days.indexOf('WE') !== -1 &&\n                    days.indexOf('TH') !== -1 &&\n                    days.indexOf('FR') !== -1 &&\n                    days.indexOf('SA') === -1 &&\n                    days.indexOf('SU') === -1,\n                isEveryDay: days.indexOf('MO') !== -1 &&\n                    days.indexOf('TU') !== -1 &&\n                    days.indexOf('WE') !== -1 &&\n                    days.indexOf('TH') !== -1 &&\n                    days.indexOf('FR') !== -1 &&\n                    days.indexOf('SA') !== -1 &&\n                    days.indexOf('SU') !== -1,\n            };\n            var sortWeekDays = function (a, b) {\n                return a.weekday - b.weekday;\n            };\n            this.byweekday.allWeeks.sort(sortWeekDays);\n            this.byweekday.someWeeks.sort(sortWeekDays);\n            if (!this.byweekday.allWeeks.length)\n                this.byweekday.allWeeks = null;\n            if (!this.byweekday.someWeeks.length)\n                this.byweekday.someWeeks = null;\n        }\n        else {\n            this.byweekday = null;\n        }\n    }\n    /**\n     * Test whether the rrule can be fully converted to text.\n     *\n     * @param {RRule} rrule\n     * @return {Boolean}\n     */\n    ToText.isFullyConvertible = function (rrule) {\n        var canConvert = true;\n        if (!(rrule.options.freq in ToText.IMPLEMENTED))\n            return false;\n        if (rrule.origOptions.until && rrule.origOptions.count)\n            return false;\n        for (var key in rrule.origOptions) {\n            if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n                return true;\n            if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n                return false;\n        }\n        return canConvert;\n    };\n    ToText.prototype.isFullyConvertible = function () {\n        return ToText.isFullyConvertible(this.rrule);\n    };\n    /**\n     * Perform the conversion. Only some of the frequencies are supported.\n     * If some of the rrule's options aren't supported, they'll\n     * be omitted from the output an \"(~ approximate)\" will be appended.\n     *\n     * @return {*}\n     */\n    ToText.prototype.toString = function () {\n        var gettext = this.gettext;\n        if (!(this.options.freq in ToText.IMPLEMENTED)) {\n            return gettext('RRule error: Unable to fully convert this rrule to text');\n        }\n        this.text = [gettext('every')];\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        this[RRule.FREQUENCIES[this.options.freq]]();\n        if (this.options.until) {\n            this.add(gettext('until'));\n            var until = this.options.until;\n            this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n        }\n        else if (this.options.count) {\n            this.add(gettext('for'))\n                .add(this.options.count.toString())\n                .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n        }\n        if (!this.isFullyConvertible())\n            this.add(gettext('(~ approximate)'));\n        return this.text.join('');\n    };\n    ToText.prototype.HOURLY = function () {\n        var gettext = this.gettext;\n        if (this.options.interval !== 1)\n            this.add(this.options.interval.toString());\n        this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n    };\n    ToText.prototype.MINUTELY = function () {\n        var gettext = this.gettext;\n        if (this.options.interval !== 1)\n            this.add(this.options.interval.toString());\n        this.add(this.plural(this.options.interval)\n            ? gettext('minutes')\n            : gettext('minute'));\n    };\n    ToText.prototype.DAILY = function () {\n        var gettext = this.gettext;\n        if (this.options.interval !== 1)\n            this.add(this.options.interval.toString());\n        if (this.byweekday && this.byweekday.isWeekdays) {\n            this.add(this.plural(this.options.interval)\n                ? gettext('weekdays')\n                : gettext('weekday'));\n        }\n        else {\n            this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n        }\n        if (this.origOptions.bymonth) {\n            this.add(gettext('in'));\n            this._bymonth();\n        }\n        if (this.bymonthday) {\n            this._bymonthday();\n        }\n        else if (this.byweekday) {\n            this._byweekday();\n        }\n        else if (this.origOptions.byhour) {\n            this._byhour();\n        }\n    };\n    ToText.prototype.WEEKLY = function () {\n        var gettext = this.gettext;\n        if (this.options.interval !== 1) {\n            this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n        }\n        if (this.byweekday && this.byweekday.isWeekdays) {\n            if (this.options.interval === 1) {\n                this.add(this.plural(this.options.interval)\n                    ? gettext('weekdays')\n                    : gettext('weekday'));\n            }\n            else {\n                this.add(gettext('on')).add(gettext('weekdays'));\n            }\n        }\n        else if (this.byweekday && this.byweekday.isEveryDay) {\n            this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n        }\n        else {\n            if (this.options.interval === 1)\n                this.add(gettext('week'));\n            if (this.origOptions.bymonth) {\n                this.add(gettext('in'));\n                this._bymonth();\n            }\n            if (this.bymonthday) {\n                this._bymonthday();\n            }\n            else if (this.byweekday) {\n                this._byweekday();\n            }\n            if (this.origOptions.byhour) {\n                this._byhour();\n            }\n        }\n    };\n    ToText.prototype.MONTHLY = function () {\n        var gettext = this.gettext;\n        if (this.origOptions.bymonth) {\n            if (this.options.interval !== 1) {\n                this.add(this.options.interval.toString()).add(gettext('months'));\n                if (this.plural(this.options.interval))\n                    this.add(gettext('in'));\n            }\n            else {\n                // this.add(gettext('MONTH'))\n            }\n            this._bymonth();\n        }\n        else {\n            if (this.options.interval !== 1) {\n                this.add(this.options.interval.toString());\n            }\n            this.add(this.plural(this.options.interval)\n                ? gettext('months')\n                : gettext('month'));\n        }\n        if (this.bymonthday) {\n            this._bymonthday();\n        }\n        else if (this.byweekday && this.byweekday.isWeekdays) {\n            this.add(gettext('on')).add(gettext('weekdays'));\n        }\n        else if (this.byweekday) {\n            this._byweekday();\n        }\n    };\n    ToText.prototype.YEARLY = function () {\n        var gettext = this.gettext;\n        if (this.origOptions.bymonth) {\n            if (this.options.interval !== 1) {\n                this.add(this.options.interval.toString());\n                this.add(gettext('years'));\n            }\n            else {\n                // this.add(gettext('YEAR'))\n            }\n            this._bymonth();\n        }\n        else {\n            if (this.options.interval !== 1) {\n                this.add(this.options.interval.toString());\n            }\n            this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n        }\n        if (this.bymonthday) {\n            this._bymonthday();\n        }\n        else if (this.byweekday) {\n            this._byweekday();\n        }\n        if (this.options.byyearday) {\n            this.add(gettext('on the'))\n                .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n                .add(gettext('day'));\n        }\n        if (this.options.byweekno) {\n            this.add(gettext('in'))\n                .add(this.plural(this.options.byweekno.length)\n                ? gettext('weeks')\n                : gettext('week'))\n                .add(this.list(this.options.byweekno, undefined, gettext('and')));\n        }\n    };\n    ToText.prototype._bymonthday = function () {\n        var gettext = this.gettext;\n        if (this.byweekday && this.byweekday.allWeeks) {\n            this.add(gettext('on'))\n                .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n                .add(gettext('the'))\n                .add(this.list(this.bymonthday, this.nth, gettext('or')));\n        }\n        else {\n            this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n        }\n        // this.add(gettext('DAY'))\n    };\n    ToText.prototype._byweekday = function () {\n        var gettext = this.gettext;\n        if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n            this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n        }\n        if (this.byweekday.someWeeks) {\n            if (this.byweekday.allWeeks)\n                this.add(gettext('and'));\n            this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n        }\n    };\n    ToText.prototype._byhour = function () {\n        var gettext = this.gettext;\n        this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n    };\n    ToText.prototype._bymonth = function () {\n        this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n    };\n    ToText.prototype.nth = function (n) {\n        n = parseInt(n.toString(), 10);\n        var nth;\n        var gettext = this.gettext;\n        if (n === -1)\n            return gettext('last');\n        var npos = Math.abs(n);\n        switch (npos) {\n            case 1:\n            case 21:\n            case 31:\n                nth = npos + gettext('st');\n                break;\n            case 2:\n            case 22:\n                nth = npos + gettext('nd');\n                break;\n            case 3:\n            case 23:\n                nth = npos + gettext('rd');\n                break;\n            default:\n                nth = npos + gettext('th');\n        }\n        return n < 0 ? nth + ' ' + gettext('last') : nth;\n    };\n    ToText.prototype.monthtext = function (m) {\n        return this.language.monthNames[m - 1];\n    };\n    ToText.prototype.weekdaytext = function (wday) {\n        var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n        return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n            this.language.dayNames[weekday]);\n    };\n    ToText.prototype.plural = function (n) {\n        return n % 100 !== 1;\n    };\n    ToText.prototype.add = function (s) {\n        this.text.push(' ');\n        this.text.push(s);\n        return this;\n    };\n    ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n        var _this = this;\n        if (delim === void 0) { delim = ','; }\n        if (!isArray(arr)) {\n            arr = [arr];\n        }\n        var delimJoin = function (array, delimiter, finalDelimiter) {\n            var list = '';\n            for (var i = 0; i < array.length; i++) {\n                if (i !== 0) {\n                    if (i === array.length - 1) {\n                        list += ' ' + finalDelimiter + ' ';\n                    }\n                    else {\n                        list += delimiter + ' ';\n                    }\n                }\n                list += array[i];\n            }\n            return list;\n        };\n        callback =\n            callback ||\n                function (o) {\n                    return o.toString();\n                };\n        var realCallback = function (arg) {\n            return callback && callback.call(_this, arg);\n        };\n        if (finalDelim) {\n            return delimJoin(arr.map(realCallback), delim, finalDelim);\n        }\n        else {\n            return arr.map(realCallback).join(delim + ' ');\n        }\n    };\n    return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n    function Parser(rules) {\n        this.done = true;\n        this.rules = rules;\n    }\n    Parser.prototype.start = function (text) {\n        this.text = text;\n        this.done = false;\n        return this.nextSymbol();\n    };\n    Parser.prototype.isDone = function () {\n        return this.done && this.symbol === null;\n    };\n    Parser.prototype.nextSymbol = function () {\n        var best;\n        var bestSymbol;\n        this.symbol = null;\n        this.value = null;\n        do {\n            if (this.done)\n                return false;\n            var rule = void 0;\n            best = null;\n            for (var name_1 in this.rules) {\n                rule = this.rules[name_1];\n                var match = rule.exec(this.text);\n                if (match) {\n                    if (best === null || match[0].length > best[0].length) {\n                        best = match;\n                        bestSymbol = name_1;\n                    }\n                }\n            }\n            if (best != null) {\n                this.text = this.text.substr(best[0].length);\n                if (this.text === '')\n                    this.done = true;\n            }\n            if (best == null) {\n                this.done = true;\n                this.symbol = null;\n                this.value = null;\n                return;\n            }\n        } while (bestSymbol === 'SKIP');\n        this.symbol = bestSymbol;\n        this.value = best;\n        return true;\n    };\n    Parser.prototype.accept = function (name) {\n        if (this.symbol === name) {\n            if (this.value) {\n                var v = this.value;\n                this.nextSymbol();\n                return v;\n            }\n            this.nextSymbol();\n            return true;\n        }\n        return false;\n    };\n    Parser.prototype.acceptNumber = function () {\n        return this.accept('number');\n    };\n    Parser.prototype.expect = function (name) {\n        if (this.accept(name))\n            return true;\n        throw new Error('expected ' + name + ' but found ' + this.symbol);\n    };\n    return Parser;\n}());\nexport default function parseText(text, language) {\n    if (language === void 0) { language = ENGLISH; }\n    var options = {};\n    var ttr = new Parser(language.tokens);\n    if (!ttr.start(text))\n        return null;\n    S();\n    return options;\n    function S() {\n        // every [n]\n        ttr.expect('every');\n        var n = ttr.acceptNumber();\n        if (n)\n            options.interval = parseInt(n[0], 10);\n        if (ttr.isDone())\n            throw new Error('Unexpected end');\n        switch (ttr.symbol) {\n            case 'day(s)':\n                options.freq = RRule.DAILY;\n                if (ttr.nextSymbol()) {\n                    AT();\n                    F();\n                }\n                break;\n            // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n            // DAILY on weekdays is not a valid rule\n            case 'weekday(s)':\n                options.freq = RRule.WEEKLY;\n                options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n                ttr.nextSymbol();\n                AT();\n                F();\n                break;\n            case 'week(s)':\n                options.freq = RRule.WEEKLY;\n                if (ttr.nextSymbol()) {\n                    ON();\n                    AT();\n                    F();\n                }\n                break;\n            case 'hour(s)':\n                options.freq = RRule.HOURLY;\n                if (ttr.nextSymbol()) {\n                    ON();\n                    F();\n                }\n                break;\n            case 'minute(s)':\n                options.freq = RRule.MINUTELY;\n                if (ttr.nextSymbol()) {\n                    ON();\n                    F();\n                }\n                break;\n            case 'month(s)':\n                options.freq = RRule.MONTHLY;\n                if (ttr.nextSymbol()) {\n                    ON();\n                    F();\n                }\n                break;\n            case 'year(s)':\n                options.freq = RRule.YEARLY;\n                if (ttr.nextSymbol()) {\n                    ON();\n                    F();\n                }\n                break;\n            case 'monday':\n            case 'tuesday':\n            case 'wednesday':\n            case 'thursday':\n            case 'friday':\n            case 'saturday':\n            case 'sunday':\n                options.freq = RRule.WEEKLY;\n                var key = ttr.symbol\n                    .substr(0, 2)\n                    .toUpperCase();\n                options.byweekday = [RRule[key]];\n                if (!ttr.nextSymbol())\n                    return;\n                // TODO check for duplicates\n                while (ttr.accept('comma')) {\n                    if (ttr.isDone())\n                        throw new Error('Unexpected end');\n                    var wkd = decodeWKD();\n                    if (!wkd) {\n                        throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n                    }\n                    options.byweekday.push(RRule[wkd]);\n                    ttr.nextSymbol();\n                }\n                AT();\n                MDAYs();\n                F();\n                break;\n            case 'january':\n            case 'february':\n            case 'march':\n            case 'april':\n            case 'may':\n            case 'june':\n            case 'july':\n            case 'august':\n            case 'september':\n            case 'october':\n            case 'november':\n            case 'december':\n                options.freq = RRule.YEARLY;\n                options.bymonth = [decodeM()];\n                if (!ttr.nextSymbol())\n                    return;\n                // TODO check for duplicates\n                while (ttr.accept('comma')) {\n                    if (ttr.isDone())\n                        throw new Error('Unexpected end');\n                    var m = decodeM();\n                    if (!m) {\n                        throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n                    }\n                    options.bymonth.push(m);\n                    ttr.nextSymbol();\n                }\n                ON();\n                F();\n                break;\n            default:\n                throw new Error('Unknown symbol');\n        }\n    }\n    function ON() {\n        var on = ttr.accept('on');\n        var the = ttr.accept('the');\n        if (!(on || the))\n            return;\n        do {\n            var nth = decodeNTH();\n            var wkd = decodeWKD();\n            var m = decodeM();\n            // nth <weekday> | <weekday>\n            if (nth) {\n                // ttr.nextSymbol()\n                if (wkd) {\n                    ttr.nextSymbol();\n                    if (!options.byweekday)\n                        options.byweekday = [];\n                    options.byweekday.push(RRule[wkd].nth(nth));\n                }\n                else {\n                    if (!options.bymonthday)\n                        options.bymonthday = [];\n                    options.bymonthday.push(nth);\n                    ttr.accept('day(s)');\n                }\n                // <weekday>\n            }\n            else if (wkd) {\n                ttr.nextSymbol();\n                if (!options.byweekday)\n                    options.byweekday = [];\n                options.byweekday.push(RRule[wkd]);\n            }\n            else if (ttr.symbol === 'weekday(s)') {\n                ttr.nextSymbol();\n                if (!options.byweekday) {\n                    options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n                }\n            }\n            else if (ttr.symbol === 'week(s)') {\n                ttr.nextSymbol();\n                var n = ttr.acceptNumber();\n                if (!n) {\n                    throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n                }\n                options.byweekno = [parseInt(n[0], 10)];\n                while (ttr.accept('comma')) {\n                    n = ttr.acceptNumber();\n                    if (!n) {\n                        throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n                    }\n                    options.byweekno.push(parseInt(n[0], 10));\n                }\n            }\n            else if (m) {\n                ttr.nextSymbol();\n                if (!options.bymonth)\n                    options.bymonth = [];\n                options.bymonth.push(m);\n            }\n            else {\n                return;\n            }\n        } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n    }\n    function AT() {\n        var at = ttr.accept('at');\n        if (!at)\n            return;\n        do {\n            var n = ttr.acceptNumber();\n            if (!n) {\n                throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n            }\n            options.byhour = [parseInt(n[0], 10)];\n            while (ttr.accept('comma')) {\n                n = ttr.acceptNumber();\n                if (!n) {\n                    throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n                }\n                options.byhour.push(parseInt(n[0], 10));\n            }\n        } while (ttr.accept('comma') || ttr.accept('at'));\n    }\n    function decodeM() {\n        switch (ttr.symbol) {\n            case 'january':\n                return 1;\n            case 'february':\n                return 2;\n            case 'march':\n                return 3;\n            case 'april':\n                return 4;\n            case 'may':\n                return 5;\n            case 'june':\n                return 6;\n            case 'july':\n                return 7;\n            case 'august':\n                return 8;\n            case 'september':\n                return 9;\n            case 'october':\n                return 10;\n            case 'november':\n                return 11;\n            case 'december':\n                return 12;\n            default:\n                return false;\n        }\n    }\n    function decodeWKD() {\n        switch (ttr.symbol) {\n            case 'monday':\n            case 'tuesday':\n            case 'wednesday':\n            case 'thursday':\n            case 'friday':\n            case 'saturday':\n            case 'sunday':\n                return ttr.symbol.substr(0, 2).toUpperCase();\n            default:\n                return false;\n        }\n    }\n    function decodeNTH() {\n        switch (ttr.symbol) {\n            case 'last':\n                ttr.nextSymbol();\n                return -1;\n            case 'first':\n                ttr.nextSymbol();\n                return 1;\n            case 'second':\n                ttr.nextSymbol();\n                return ttr.accept('last') ? -2 : 2;\n            case 'third':\n                ttr.nextSymbol();\n                return ttr.accept('last') ? -3 : 3;\n            case 'nth':\n                var v = parseInt(ttr.value[1], 10);\n                if (v < -366 || v > 366)\n                    throw new Error('Nth out of range: ' + v);\n                ttr.nextSymbol();\n                return ttr.accept('last') ? -v : v;\n            default:\n                return false;\n        }\n    }\n    function MDAYs() {\n        ttr.accept('on');\n        ttr.accept('the');\n        var nth = decodeNTH();\n        if (!nth)\n            return;\n        options.bymonthday = [nth];\n        ttr.nextSymbol();\n        while (ttr.accept('comma')) {\n            nth = decodeNTH();\n            if (!nth) {\n                throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n            }\n            options.bymonthday.push(nth);\n            ttr.nextSymbol();\n        }\n    }\n    function F() {\n        if (ttr.symbol === 'until') {\n            var date = Date.parse(ttr.text);\n            if (!date)\n                throw new Error('Cannot parse until date:' + ttr.text);\n            options.until = new Date(date);\n        }\n        else if (ttr.accept('for')) {\n            options.count = parseInt(ttr.value[0], 10);\n            ttr.expect('number');\n            // ttr.expect('times')\n        }\n    }\n}\n//# sourceMappingURL=parsetext.js.map","export var Frequency;\n(function (Frequency) {\n    Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n    Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n    Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n    Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n    Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n    Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n    Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n    return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n    if (language === void 0) { language = ENGLISH; }\n    return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n    'count',\n    'until',\n    'interval',\n    'byweekday',\n    'bymonthday',\n    'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n    return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n    function Time(hour, minute, second, millisecond) {\n        this.hour = hour;\n        this.minute = minute;\n        this.second = second;\n        this.millisecond = millisecond || 0;\n    }\n    Time.prototype.getHours = function () {\n        return this.hour;\n    };\n    Time.prototype.getMinutes = function () {\n        return this.minute;\n    };\n    Time.prototype.getSeconds = function () {\n        return this.second;\n    };\n    Time.prototype.getMilliseconds = function () {\n        return this.millisecond;\n    };\n    Time.prototype.getTime = function () {\n        return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n            this.millisecond);\n    };\n    return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n    __extends(DateTime, _super);\n    function DateTime(year, month, day, hour, minute, second, millisecond) {\n        var _this = _super.call(this, hour, minute, second, millisecond) || this;\n        _this.year = year;\n        _this.month = month;\n        _this.day = day;\n        return _this;\n    }\n    DateTime.fromDate = function (date) {\n        return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n    };\n    DateTime.prototype.getWeekday = function () {\n        return getWeekday(new Date(this.getTime()));\n    };\n    DateTime.prototype.getTime = function () {\n        return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n    };\n    DateTime.prototype.getDay = function () {\n        return this.day;\n    };\n    DateTime.prototype.getMonth = function () {\n        return this.month;\n    };\n    DateTime.prototype.getYear = function () {\n        return this.year;\n    };\n    DateTime.prototype.addYears = function (years) {\n        this.year += years;\n    };\n    DateTime.prototype.addMonths = function (months) {\n        this.month += months;\n        if (this.month > 12) {\n            var yearDiv = Math.floor(this.month / 12);\n            var monthMod = pymod(this.month, 12);\n            this.month = monthMod;\n            this.year += yearDiv;\n            if (this.month === 0) {\n                this.month = 12;\n                --this.year;\n            }\n        }\n    };\n    DateTime.prototype.addWeekly = function (days, wkst) {\n        if (wkst > this.getWeekday()) {\n            this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n        }\n        else {\n            this.day += -(this.getWeekday() - wkst) + days * 7;\n        }\n        this.fixDay();\n    };\n    DateTime.prototype.addDaily = function (days) {\n        this.day += days;\n        this.fixDay();\n    };\n    DateTime.prototype.addHours = function (hours, filtered, byhour) {\n        if (filtered) {\n            // Jump to one iteration before next day\n            this.hour += Math.floor((23 - this.hour) / hours) * hours;\n        }\n        for (;;) {\n            this.hour += hours;\n            var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n            if (dayDiv) {\n                this.hour = hourMod;\n                this.addDaily(dayDiv);\n            }\n            if (empty(byhour) || includes(byhour, this.hour))\n                break;\n        }\n    };\n    DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n        if (filtered) {\n            // Jump to one iteration before next day\n            this.minute +=\n                Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n        }\n        for (;;) {\n            this.minute += minutes;\n            var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n            if (hourDiv) {\n                this.minute = minuteMod;\n                this.addHours(hourDiv, false, byhour);\n            }\n            if ((empty(byhour) || includes(byhour, this.hour)) &&\n                (empty(byminute) || includes(byminute, this.minute))) {\n                break;\n            }\n        }\n    };\n    DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n        if (filtered) {\n            // Jump to one iteration before next day\n            this.second +=\n                Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n                    seconds) * seconds;\n        }\n        for (;;) {\n            this.second += seconds;\n            var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n            if (minuteDiv) {\n                this.second = secondMod;\n                this.addMinutes(minuteDiv, false, byhour, byminute);\n            }\n            if ((empty(byhour) || includes(byhour, this.hour)) &&\n                (empty(byminute) || includes(byminute, this.minute)) &&\n                (empty(bysecond) || includes(bysecond, this.second))) {\n                break;\n            }\n        }\n    };\n    DateTime.prototype.fixDay = function () {\n        if (this.day <= 28) {\n            return;\n        }\n        var daysinmonth = monthRange(this.year, this.month - 1)[1];\n        if (this.day <= daysinmonth) {\n            return;\n        }\n        while (this.day > daysinmonth) {\n            this.day -= daysinmonth;\n            ++this.month;\n            if (this.month === 13) {\n                this.month = 1;\n                ++this.year;\n                if (this.year > MAXYEAR) {\n                    return;\n                }\n            }\n            daysinmonth = monthRange(this.year, this.month - 1)[1];\n        }\n    };\n    DateTime.prototype.add = function (options, filtered) {\n        var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n        switch (freq) {\n            case Frequency.YEARLY:\n                return this.addYears(interval);\n            case Frequency.MONTHLY:\n                return this.addMonths(interval);\n            case Frequency.WEEKLY:\n                return this.addWeekly(interval, wkst);\n            case Frequency.DAILY:\n                return this.addDaily(interval);\n            case Frequency.HOURLY:\n                return this.addHours(interval, filtered, byhour);\n            case Frequency.MINUTELY:\n                return this.addMinutes(interval, filtered, byhour, byminute);\n            case Frequency.SECONDLY:\n                return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n        }\n    };\n    return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n    var invalid = [];\n    var keys = Object.keys(options);\n    // Shallow copy for options and origOptions and check for invalid\n    for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n        var key = keys_1[_i];\n        if (!includes(defaultKeys, key))\n            invalid.push(key);\n        if (isDate(options[key]) && !isValidDate(options[key])) {\n            invalid.push(key);\n        }\n    }\n    if (invalid.length) {\n        throw new Error('Invalid options: ' + invalid.join(', '));\n    }\n    return __assign({}, options);\n}\nexport function parseOptions(options) {\n    var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n    if (isPresent(opts.byeaster))\n        opts.freq = RRule.YEARLY;\n    if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n        throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n    }\n    if (!opts.dtstart)\n        opts.dtstart = new Date(new Date().setMilliseconds(0));\n    if (!isPresent(opts.wkst)) {\n        opts.wkst = RRule.MO.weekday;\n    }\n    else if (isNumber(opts.wkst)) {\n        // cool, just keep it like that\n    }\n    else {\n        opts.wkst = opts.wkst.weekday;\n    }\n    if (isPresent(opts.bysetpos)) {\n        if (isNumber(opts.bysetpos))\n            opts.bysetpos = [opts.bysetpos];\n        for (var i = 0; i < opts.bysetpos.length; i++) {\n            var v = opts.bysetpos[i];\n            if (v === 0 || !(v >= -366 && v <= 366)) {\n                throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n            }\n        }\n    }\n    if (!(Boolean(opts.byweekno) ||\n        notEmpty(opts.byweekno) ||\n        notEmpty(opts.byyearday) ||\n        Boolean(opts.bymonthday) ||\n        notEmpty(opts.bymonthday) ||\n        isPresent(opts.byweekday) ||\n        isPresent(opts.byeaster))) {\n        switch (opts.freq) {\n            case RRule.YEARLY:\n                if (!opts.bymonth)\n                    opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n                opts.bymonthday = opts.dtstart.getUTCDate();\n                break;\n            case RRule.MONTHLY:\n                opts.bymonthday = opts.dtstart.getUTCDate();\n                break;\n            case RRule.WEEKLY:\n                opts.byweekday = [getWeekday(opts.dtstart)];\n                break;\n        }\n    }\n    // bymonth\n    if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n        opts.bymonth = [opts.bymonth];\n    }\n    // byyearday\n    if (isPresent(opts.byyearday) &&\n        !isArray(opts.byyearday) &&\n        isNumber(opts.byyearday)) {\n        opts.byyearday = [opts.byyearday];\n    }\n    // bymonthday\n    if (!isPresent(opts.bymonthday)) {\n        opts.bymonthday = [];\n        opts.bynmonthday = [];\n    }\n    else if (isArray(opts.bymonthday)) {\n        var bymonthday = [];\n        var bynmonthday = [];\n        for (var i = 0; i < opts.bymonthday.length; i++) {\n            var v = opts.bymonthday[i];\n            if (v > 0) {\n                bymonthday.push(v);\n            }\n            else if (v < 0) {\n                bynmonthday.push(v);\n            }\n        }\n        opts.bymonthday = bymonthday;\n        opts.bynmonthday = bynmonthday;\n    }\n    else if (opts.bymonthday < 0) {\n        opts.bynmonthday = [opts.bymonthday];\n        opts.bymonthday = [];\n    }\n    else {\n        opts.bynmonthday = [];\n        opts.bymonthday = [opts.bymonthday];\n    }\n    // byweekno\n    if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n        opts.byweekno = [opts.byweekno];\n    }\n    // byweekday / bynweekday\n    if (!isPresent(opts.byweekday)) {\n        opts.bynweekday = null;\n    }\n    else if (isNumber(opts.byweekday)) {\n        opts.byweekday = [opts.byweekday];\n        opts.bynweekday = null;\n    }\n    else if (isWeekdayStr(opts.byweekday)) {\n        opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n        opts.bynweekday = null;\n    }\n    else if (opts.byweekday instanceof Weekday) {\n        if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n            opts.byweekday = [opts.byweekday.weekday];\n            opts.bynweekday = null;\n        }\n        else {\n            opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n            opts.byweekday = null;\n        }\n    }\n    else {\n        var byweekday = [];\n        var bynweekday = [];\n        for (var i = 0; i < opts.byweekday.length; i++) {\n            var wday = opts.byweekday[i];\n            if (isNumber(wday)) {\n                byweekday.push(wday);\n                continue;\n            }\n            else if (isWeekdayStr(wday)) {\n                byweekday.push(Weekday.fromStr(wday).weekday);\n                continue;\n            }\n            if (!wday.n || opts.freq > RRule.MONTHLY) {\n                byweekday.push(wday.weekday);\n            }\n            else {\n                bynweekday.push([wday.weekday, wday.n]);\n            }\n        }\n        opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n        opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n    }\n    // byhour\n    if (!isPresent(opts.byhour)) {\n        opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n    }\n    else if (isNumber(opts.byhour)) {\n        opts.byhour = [opts.byhour];\n    }\n    // byminute\n    if (!isPresent(opts.byminute)) {\n        opts.byminute =\n            opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n    }\n    else if (isNumber(opts.byminute)) {\n        opts.byminute = [opts.byminute];\n    }\n    // bysecond\n    if (!isPresent(opts.bysecond)) {\n        opts.bysecond =\n            opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n    }\n    else if (isNumber(opts.bysecond)) {\n        opts.bysecond = [opts.bysecond];\n    }\n    return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n    var millisecondModulo = opts.dtstart.getTime() % 1000;\n    if (!freqIsDailyOrGreater(opts.freq)) {\n        return [];\n    }\n    var timeset = [];\n    opts.byhour.forEach(function (hour) {\n        opts.byminute.forEach(function (minute) {\n            opts.bysecond.forEach(function (second) {\n                timeset.push(new Time(hour, minute, second, millisecondModulo));\n            });\n        });\n    });\n    return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n    var options = rfcString\n        .split('\\n')\n        .map(parseLine)\n        .filter(function (x) { return x !== null; });\n    return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n    var options = {};\n    var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n    if (!dtstartWithZone) {\n        return options;\n    }\n    var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n    if (tzid) {\n        options.tzid = tzid;\n    }\n    options.dtstart = untilStringToDate(dtstart);\n    return options;\n}\nfunction parseLine(rfcString) {\n    rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n    if (!rfcString.length)\n        return null;\n    var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n    if (!header) {\n        return parseRrule(rfcString);\n    }\n    var key = header[1];\n    switch (key.toUpperCase()) {\n        case 'RRULE':\n        case 'EXRULE':\n            return parseRrule(rfcString);\n        case 'DTSTART':\n            return parseDtstart(rfcString);\n        default:\n            throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n    }\n}\nfunction parseRrule(line) {\n    var strippedLine = line.replace(/^RRULE:/i, '');\n    var options = parseDtstart(strippedLine);\n    var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n    attrs.forEach(function (attr) {\n        var _a = attr.split('='), key = _a[0], value = _a[1];\n        switch (key.toUpperCase()) {\n            case 'FREQ':\n                options.freq = Frequency[value.toUpperCase()];\n                break;\n            case 'WKST':\n                options.wkst = Days[value.toUpperCase()];\n                break;\n            case 'COUNT':\n            case 'INTERVAL':\n            case 'BYSETPOS':\n            case 'BYMONTH':\n            case 'BYMONTHDAY':\n            case 'BYYEARDAY':\n            case 'BYWEEKNO':\n            case 'BYHOUR':\n            case 'BYMINUTE':\n            case 'BYSECOND':\n                var num = parseNumber(value);\n                var optionKey = key.toLowerCase();\n                // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                // @ts-ignore\n                options[optionKey] = num;\n                break;\n            case 'BYWEEKDAY':\n            case 'BYDAY':\n                options.byweekday = parseWeekday(value);\n                break;\n            case 'DTSTART':\n            case 'TZID':\n                // for backwards compatibility\n                var dtstart = parseDtstart(line);\n                options.tzid = dtstart.tzid;\n                options.dtstart = dtstart.dtstart;\n                break;\n            case 'UNTIL':\n                options.until = untilStringToDate(value);\n                break;\n            case 'BYEASTER':\n                options.byeaster = Number(value);\n                break;\n            default:\n                throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n        }\n    });\n    return options;\n}\nfunction parseNumber(value) {\n    if (value.indexOf(',') !== -1) {\n        var values = value.split(',');\n        return values.map(parseIndividualNumber);\n    }\n    return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n    if (/^[+-]?\\d+$/.test(value)) {\n        return Number(value);\n    }\n    return value;\n}\nfunction parseWeekday(value) {\n    var days = value.split(',');\n    return days.map(function (day) {\n        if (day.length === 2) {\n            // MO, TU, ...\n            return Days[day]; // wday instanceof Weekday\n        }\n        // -1MO, +3FR, 1SO, 13TU ...\n        var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n        if (!parts || parts.length < 3) {\n            throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n        }\n        var n = Number(parts[1]);\n        var wdaypart = parts[2];\n        var wday = Days[wdaypart].weekday;\n        return new Weekday(wday, n);\n    });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n    function DateWithZone(date, tzid) {\n        if (isNaN(date.getTime())) {\n            throw new RangeError('Invalid date passed to DateWithZone');\n        }\n        this.date = date;\n        this.tzid = tzid;\n    }\n    Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n        get: function () {\n            return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n        },\n        enumerable: false,\n        configurable: true\n    });\n    DateWithZone.prototype.toString = function () {\n        var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n        if (!this.isUTC) {\n            return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n        }\n        return \":\".concat(datestr);\n    };\n    DateWithZone.prototype.getTime = function () {\n        return this.date.getTime();\n    };\n    DateWithZone.prototype.rezonedDate = function () {\n        if (this.isUTC) {\n            return this.date;\n        }\n        return dateInTimeZone(this.date, this.tzid);\n    };\n    return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n    var rrule = [];\n    var dtstart = '';\n    var keys = Object.keys(options);\n    var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n    for (var i = 0; i < keys.length; i++) {\n        if (keys[i] === 'tzid')\n            continue;\n        if (!includes(defaultKeys, keys[i]))\n            continue;\n        var key = keys[i].toUpperCase();\n        var value = options[keys[i]];\n        var outValue = '';\n        if (!isPresent(value) || (isArray(value) && !value.length))\n            continue;\n        switch (key) {\n            case 'FREQ':\n                outValue = RRule.FREQUENCIES[options.freq];\n                break;\n            case 'WKST':\n                if (isNumber(value)) {\n                    outValue = new Weekday(value).toString();\n                }\n                else {\n                    outValue = value.toString();\n                }\n                break;\n            case 'BYWEEKDAY':\n                /*\n                  NOTE: BYWEEKDAY is a special case.\n                  RRule() deconstructs the rule.options.byweekday array\n                  into an array of Weekday arguments.\n                  On the other hand, rule.origOptions is an array of Weekdays.\n                  We need to handle both cases here.\n                  It might be worth change RRule to keep the Weekdays.\n        \n                  Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n        \n                  */\n                key = 'BYDAY';\n                outValue = toArray(value)\n                    .map(function (wday) {\n                    if (wday instanceof Weekday) {\n                        return wday;\n                    }\n                    if (isArray(wday)) {\n                        return new Weekday(wday[0], wday[1]);\n                    }\n                    return new Weekday(wday);\n                })\n                    .toString();\n                break;\n            case 'DTSTART':\n                dtstart = buildDtstart(value, options.tzid);\n                break;\n            case 'UNTIL':\n                outValue = timeToUntilString(value, !options.tzid);\n                break;\n            default:\n                if (isArray(value)) {\n                    var strValues = [];\n                    for (var j = 0; j < value.length; j++) {\n                        strValues[j] = String(value[j]);\n                    }\n                    outValue = strValues.toString();\n                }\n                else {\n                    outValue = String(value);\n                }\n        }\n        if (outValue) {\n            rrule.push([key, outValue]);\n        }\n    }\n    var rules = rrule\n        .map(function (_a) {\n        var key = _a[0], value = _a[1];\n        return \"\".concat(key, \"=\").concat(value.toString());\n    })\n        .join(';');\n    var ruleString = '';\n    if (rules !== '') {\n        ruleString = \"RRULE:\".concat(rules);\n    }\n    return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n    if (!dtstart) {\n        return '';\n    }\n    return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n    if (Array.isArray(left)) {\n        if (!Array.isArray(right))\n            return false;\n        if (left.length !== right.length)\n            return false;\n        return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n    }\n    if (left instanceof Date) {\n        return right instanceof Date && left.getTime() === right.getTime();\n    }\n    return left === right;\n}\nvar Cache = /** @class */ (function () {\n    function Cache() {\n        this.all = false;\n        this.before = [];\n        this.after = [];\n        this.between = [];\n    }\n    /**\n     * @param {String} what - all/before/after/between\n     * @param {Array,Date} value - an array of dates, one date, or null\n     * @param {Object?} args - _iter arguments\n     */\n    Cache.prototype._cacheAdd = function (what, value, args) {\n        if (value) {\n            value = value instanceof Date ? clone(value) : cloneDates(value);\n        }\n        if (what === 'all') {\n            this.all = value;\n        }\n        else {\n            args._value = value;\n            this[what].push(args);\n        }\n    };\n    /**\n     * @return false - not in the cache\n     * @return null  - cached, but zero occurrences (before/after)\n     * @return Date  - cached (before/after)\n     * @return []    - cached, but zero occurrences (all/between)\n     * @return [Date1, DateN] - cached (all/between)\n     */\n    Cache.prototype._cacheGet = function (what, args) {\n        var cached = false;\n        var argsKeys = args ? Object.keys(args) : [];\n        var findCacheDiff = function (item) {\n            for (var i = 0; i < argsKeys.length; i++) {\n                var key = argsKeys[i];\n                if (!argsMatch(args[key], item[key])) {\n                    return true;\n                }\n            }\n            return false;\n        };\n        var cachedObject = this[what];\n        if (what === 'all') {\n            cached = this.all;\n        }\n        else if (isArray(cachedObject)) {\n            // Let's see whether we've already called the\n            // 'what' method with the same 'args'\n            for (var i = 0; i < cachedObject.length; i++) {\n                var item = cachedObject[i];\n                if (argsKeys.length && findCacheDiff(item))\n                    continue;\n                cached = item._value;\n                break;\n            }\n        }\n        if (!cached && this.all) {\n            // Not in the cache, but we already know all the occurrences,\n            // so we can find the correct dates from the cached ones.\n            var iterResult = new IterResult(what, args);\n            for (var i = 0; i < this.all.length; i++) {\n                if (!iterResult.accept(this.all[i]))\n                    break;\n            }\n            cached = iterResult.getValue();\n            this._cacheAdd(what, cached, args);\n        }\n        return isArray(cached)\n            ? cloneDates(cached)\n            : cached instanceof Date\n                ? clone(cached)\n                : cached;\n    };\n    return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n    var wdaymask = [];\n    for (var i = 0; i < 55; i++)\n        wdaymask = wdaymask.concat(range(7));\n    return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n    var firstyday = datetime(year, 1, 1);\n    var yearlen = isLeapYear(year) ? 366 : 365;\n    var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n    var yearordinal = toOrdinal(firstyday);\n    var yearweekday = getWeekday(firstyday);\n    var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n    if (empty(options.byweekno)) {\n        return result;\n    }\n    result.wnomask = repeat(0, yearlen + 7);\n    var firstwkst;\n    var wyearlen;\n    var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n    if (no1wkst >= 4) {\n        no1wkst = 0;\n        // Number of days in the year, plus the days we got\n        // from last year.\n        wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n    }\n    else {\n        // Number of days in the year, minus the days we\n        // left in last year.\n        wyearlen = yearlen - no1wkst;\n    }\n    var div = Math.floor(wyearlen / 7);\n    var mod = pymod(wyearlen, 7);\n    var numweeks = Math.floor(div + mod / 4);\n    for (var j = 0; j < options.byweekno.length; j++) {\n        var n = options.byweekno[j];\n        if (n < 0) {\n            n += numweeks + 1;\n        }\n        if (!(n > 0 && n <= numweeks)) {\n            continue;\n        }\n        var i = void 0;\n        if (n > 1) {\n            i = no1wkst + (n - 1) * 7;\n            if (no1wkst !== firstwkst) {\n                i -= 7 - firstwkst;\n            }\n        }\n        else {\n            i = no1wkst;\n        }\n        for (var k = 0; k < 7; k++) {\n            result.wnomask[i] = 1;\n            i++;\n            if (result.wdaymask[i] === options.wkst)\n                break;\n        }\n    }\n    if (includes(options.byweekno, 1)) {\n        // Check week number 1 of next year as well\n        // orig-TODO : Check -numweeks for next year.\n        var i = no1wkst + numweeks * 7;\n        if (no1wkst !== firstwkst)\n            i -= 7 - firstwkst;\n        if (i < yearlen) {\n            // If week starts in next year, we\n            // don't care about it.\n            for (var j = 0; j < 7; j++) {\n                result.wnomask[i] = 1;\n                i += 1;\n                if (result.wdaymask[i] === options.wkst)\n                    break;\n            }\n        }\n    }\n    if (no1wkst) {\n        // Check last week number of last year as\n        // well. If no1wkst is 0, either the year\n        // started on week start, or week number 1\n        // got days from last year, so there are no\n        // days from last year's last week number in\n        // this year.\n        var lnumweeks = void 0;\n        if (!includes(options.byweekno, -1)) {\n            var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n            var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n            var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n            var weekst = void 0;\n            if (lno1wkst >= 4) {\n                lno1wkst = 0;\n                weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n            }\n            else {\n                weekst = yearlen - no1wkst;\n            }\n            lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n        }\n        else {\n            lnumweeks = -1;\n        }\n        if (includes(options.byweekno, lnumweeks)) {\n            for (var i = 0; i < no1wkst; i++)\n                result.wnomask[i] = 1;\n        }\n    }\n    return result;\n}\nfunction baseYearMasks(year) {\n    var yearlen = isLeapYear(year) ? 366 : 365;\n    var firstyday = datetime(year, 1, 1);\n    var wday = getWeekday(firstyday);\n    if (yearlen === 365) {\n        return {\n            mmask: M365MASK,\n            mdaymask: MDAY365MASK,\n            nmdaymask: NMDAY365MASK,\n            wdaymask: WDAYMASK.slice(wday),\n            mrange: M365RANGE,\n        };\n    }\n    return {\n        mmask: M366MASK,\n        mdaymask: MDAY366MASK,\n        nmdaymask: NMDAY366MASK,\n        wdaymask: WDAYMASK.slice(wday),\n        mrange: M366RANGE,\n    };\n}\n//# sourceMappingURL=yearinfo.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n    var result = {\n        lastyear: year,\n        lastmonth: month,\n        nwdaymask: [],\n    };\n    var ranges = [];\n    if (options.freq === RRule.YEARLY) {\n        if (empty(options.bymonth)) {\n            ranges = [[0, yearlen]];\n        }\n        else {\n            for (var j = 0; j < options.bymonth.length; j++) {\n                month = options.bymonth[j];\n                ranges.push(mrange.slice(month - 1, month + 1));\n            }\n        }\n    }\n    else if (options.freq === RRule.MONTHLY) {\n        ranges = [mrange.slice(month - 1, month + 1)];\n    }\n    if (empty(ranges)) {\n        return result;\n    }\n    // Weekly frequency won't get here, so we may not\n    // care about cross-year weekly periods.\n    result.nwdaymask = repeat(0, yearlen);\n    for (var j = 0; j < ranges.length; j++) {\n        var rang = ranges[j];\n        var first = rang[0];\n        var last = rang[1] - 1;\n        for (var k = 0; k < options.bynweekday.length; k++) {\n            var i = void 0;\n            var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n            if (n < 0) {\n                i = last + (n + 1) * 7;\n                i -= pymod(wdaymask[i] - wday, 7);\n            }\n            else {\n                i = first + (n - 1) * 7;\n                i += pymod(7 - wdaymask[i] + wday, 7);\n            }\n            if (first <= i && i <= last)\n                result.nwdaymask[i] = 1;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n    if (offset === void 0) { offset = 0; }\n    var a = y % 19;\n    var b = Math.floor(y / 100);\n    var c = y % 100;\n    var d = Math.floor(b / 4);\n    var e = b % 4;\n    var f = Math.floor((b + 8) / 25);\n    var g = Math.floor((b - f + 1) / 3);\n    var h = Math.floor(19 * a + b - d - g + 15) % 30;\n    var i = Math.floor(c / 4);\n    var k = c % 4;\n    var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n    var m = Math.floor((a + 11 * h + 22 * l) / 451);\n    var month = Math.floor((h + l - 7 * m + 114) / 31);\n    var day = ((h + l - 7 * m + 114) % 31) + 1;\n    var date = Date.UTC(y, month - 1, day + offset);\n    var yearStart = Date.UTC(y, 0, 1);\n    return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n    // eslint-disable-next-line no-empty-function\n    function Iterinfo(options) {\n        this.options = options;\n    }\n    Iterinfo.prototype.rebuild = function (year, month) {\n        var options = this.options;\n        if (year !== this.lastyear) {\n            this.yearinfo = rebuildYear(year, options);\n        }\n        if (notEmpty(options.bynweekday) &&\n            (month !== this.lastmonth || year !== this.lastyear)) {\n            var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n            this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n        }\n        if (isPresent(options.byeaster)) {\n            this.eastermask = easter(year, options.byeaster);\n        }\n    };\n    Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n        get: function () {\n            return this.monthinfo ? this.monthinfo.lastyear : null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n        get: function () {\n            return this.monthinfo ? this.monthinfo.lastmonth : null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n        get: function () {\n            return this.yearinfo.yearlen;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n        get: function () {\n            return this.yearinfo.yearordinal;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n        get: function () {\n            return this.yearinfo.mrange;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n        get: function () {\n            return this.yearinfo.wdaymask;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n        get: function () {\n            return this.yearinfo.mmask;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n        get: function () {\n            return this.yearinfo.wnomask;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n        get: function () {\n            return this.monthinfo ? this.monthinfo.nwdaymask : [];\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n        get: function () {\n            return this.yearinfo.nextyearlen;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n        get: function () {\n            return this.yearinfo.mdaymask;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n        get: function () {\n            return this.yearinfo.nmdaymask;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Iterinfo.prototype.ydayset = function () {\n        return [range(this.yearlen), 0, this.yearlen];\n    };\n    Iterinfo.prototype.mdayset = function (_, month) {\n        var start = this.mrange[month - 1];\n        var end = this.mrange[month];\n        var set = repeat(null, this.yearlen);\n        for (var i = start; i < end; i++)\n            set[i] = i;\n        return [set, start, end];\n    };\n    Iterinfo.prototype.wdayset = function (year, month, day) {\n        // We need to handle cross-year weeks here.\n        var set = repeat(null, this.yearlen + 7);\n        var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n        var start = i;\n        for (var j = 0; j < 7; j++) {\n            set[i] = i;\n            ++i;\n            if (this.wdaymask[i] === this.options.wkst)\n                break;\n        }\n        return [set, start, i];\n    };\n    Iterinfo.prototype.ddayset = function (year, month, day) {\n        var set = repeat(null, this.yearlen);\n        var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n        set[i] = i;\n        return [set, i, i + 1];\n    };\n    Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n        var _this = this;\n        var set = [];\n        this.options.byminute.forEach(function (minute) {\n            set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n        });\n        sort(set);\n        return set;\n    };\n    Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n        var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n        sort(set);\n        return set;\n    };\n    Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n        return [new Time(hour, minute, second, millisecond)];\n    };\n    Iterinfo.prototype.getdayset = function (freq) {\n        switch (freq) {\n            case Frequency.YEARLY:\n                return this.ydayset.bind(this);\n            case Frequency.MONTHLY:\n                return this.mdayset.bind(this);\n            case Frequency.WEEKLY:\n                return this.wdayset.bind(this);\n            case Frequency.DAILY:\n                return this.ddayset.bind(this);\n            default:\n                return this.ddayset.bind(this);\n        }\n    };\n    Iterinfo.prototype.gettimeset = function (freq) {\n        switch (freq) {\n            case Frequency.HOURLY:\n                return this.htimeset.bind(this);\n            case Frequency.MINUTELY:\n                return this.mtimeset.bind(this);\n            case Frequency.SECONDLY:\n                return this.stimeset.bind(this);\n        }\n    };\n    return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n    var poslist = [];\n    for (var j = 0; j < bysetpos.length; j++) {\n        var daypos = void 0;\n        var timepos = void 0;\n        var pos = bysetpos[j];\n        if (pos < 0) {\n            daypos = Math.floor(pos / timeset.length);\n            timepos = pymod(pos, timeset.length);\n        }\n        else {\n            daypos = Math.floor((pos - 1) / timeset.length);\n            timepos = pymod(pos - 1, timeset.length);\n        }\n        var tmp = [];\n        for (var k = start; k < end; k++) {\n            var val = dayset[k];\n            if (!isPresent(val))\n                continue;\n            tmp.push(val);\n        }\n        var i = void 0;\n        if (daypos < 0) {\n            i = tmp.slice(daypos)[0];\n        }\n        else {\n            i = tmp[daypos];\n        }\n        var time = timeset[timepos];\n        var date = fromOrdinal(ii.yearordinal + i);\n        var res = combine(date, time);\n        // XXX: can this ever be in the array?\n        // - compare the actual date instead?\n        if (!includes(poslist, res))\n            poslist.push(res);\n    }\n    sort(poslist);\n    return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n    var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n    var count = options.count;\n    if (count === 0 || interval === 0) {\n        return emitResult(iterResult);\n    }\n    var counterDate = DateTime.fromDate(dtstart);\n    var ii = new Iterinfo(options);\n    ii.rebuild(counterDate.year, counterDate.month);\n    var timeset = makeTimeset(ii, counterDate, options);\n    for (;;) {\n        var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n        var filtered = removeFilteredDays(dayset, start, end, ii, options);\n        if (notEmpty(bysetpos)) {\n            var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n            for (var j = 0; j < poslist.length; j++) {\n                var res = poslist[j];\n                if (until && res > until) {\n                    return emitResult(iterResult);\n                }\n                if (res >= dtstart) {\n                    var rezonedDate = rezoneIfNeeded(res, options);\n                    if (!iterResult.accept(rezonedDate)) {\n                        return emitResult(iterResult);\n                    }\n                    if (count) {\n                        --count;\n                        if (!count) {\n                            return emitResult(iterResult);\n                        }\n                    }\n                }\n            }\n        }\n        else {\n            for (var j = start; j < end; j++) {\n                var currentDay = dayset[j];\n                if (!isPresent(currentDay)) {\n                    continue;\n                }\n                var date = fromOrdinal(ii.yearordinal + currentDay);\n                for (var k = 0; k < timeset.length; k++) {\n                    var time = timeset[k];\n                    var res = combine(date, time);\n                    if (until && res > until) {\n                        return emitResult(iterResult);\n                    }\n                    if (res >= dtstart) {\n                        var rezonedDate = rezoneIfNeeded(res, options);\n                        if (!iterResult.accept(rezonedDate)) {\n                            return emitResult(iterResult);\n                        }\n                        if (count) {\n                            --count;\n                            if (!count) {\n                                return emitResult(iterResult);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        if (options.interval === 0) {\n            return emitResult(iterResult);\n        }\n        // Handle frequency and interval\n        counterDate.add(options, filtered);\n        if (counterDate.year > MAXYEAR) {\n            return emitResult(iterResult);\n        }\n        if (!freqIsDailyOrGreater(freq)) {\n            timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n        }\n        ii.rebuild(counterDate.year, counterDate.month);\n    }\n}\nfunction isFiltered(ii, currentDay, options) {\n    var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n    return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n        (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n        (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n        (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n        (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n        ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n            !includes(bymonthday, ii.mdaymask[currentDay]) &&\n            !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n        (notEmpty(byyearday) &&\n            ((currentDay < ii.yearlen &&\n                !includes(byyearday, currentDay + 1) &&\n                !includes(byyearday, -ii.yearlen + currentDay)) ||\n                (currentDay >= ii.yearlen &&\n                    !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n                    !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n    return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n    return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n    var filtered = false;\n    for (var dayCounter = start; dayCounter < end; dayCounter++) {\n        var currentDay = dayset[dayCounter];\n        filtered = isFiltered(ii, currentDay, options);\n        if (filtered)\n            dayset[currentDay] = null;\n    }\n    return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n    var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n    if (freqIsDailyOrGreater(freq)) {\n        return buildTimeset(options);\n    }\n    if ((freq >= RRule.HOURLY &&\n        notEmpty(byhour) &&\n        !includes(byhour, counterDate.hour)) ||\n        (freq >= RRule.MINUTELY &&\n            notEmpty(byminute) &&\n            !includes(byminute, counterDate.minute)) ||\n        (freq >= RRule.SECONDLY &&\n            notEmpty(bysecond) &&\n            !includes(bysecond, counterDate.second))) {\n        return [];\n    }\n    return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n    MO: new Weekday(0),\n    TU: new Weekday(1),\n    WE: new Weekday(2),\n    TH: new Weekday(3),\n    FR: new Weekday(4),\n    SA: new Weekday(5),\n    SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n    freq: Frequency.YEARLY,\n    dtstart: null,\n    interval: 1,\n    wkst: Days.MO,\n    count: null,\n    until: null,\n    tzid: null,\n    bysetpos: null,\n    bymonth: null,\n    bymonthday: null,\n    bynmonthday: null,\n    byyearday: null,\n    byweekno: null,\n    byweekday: null,\n    bynweekday: null,\n    byhour: null,\n    byminute: null,\n    bysecond: null,\n    byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see <http://labix.org/python-dateutil/#head-cf004ee9a75592797e076752b2a889c10f445418>\n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n    function RRule(options, noCache) {\n        if (options === void 0) { options = {}; }\n        if (noCache === void 0) { noCache = false; }\n        // RFC string\n        this._cache = noCache ? null : new Cache();\n        // used by toString()\n        this.origOptions = initializeOptions(options);\n        var parsedOptions = parseOptions(options).parsedOptions;\n        this.options = parsedOptions;\n    }\n    RRule.parseText = function (text, language) {\n        return parseText(text, language);\n    };\n    RRule.fromText = function (text, language) {\n        return fromText(text, language);\n    };\n    RRule.fromString = function (str) {\n        return new RRule(RRule.parseString(str) || undefined);\n    };\n    RRule.prototype._iter = function (iterResult) {\n        return iter(iterResult, this.options);\n    };\n    RRule.prototype._cacheGet = function (what, args) {\n        if (!this._cache)\n            return false;\n        return this._cache._cacheGet(what, args);\n    };\n    RRule.prototype._cacheAdd = function (what, value, args) {\n        if (!this._cache)\n            return;\n        return this._cache._cacheAdd(what, value, args);\n    };\n    /**\n     * @param {Function} iterator - optional function that will be called\n     * on each date that is added. It can return false\n     * to stop the iteration.\n     * @return Array containing all recurrences.\n     */\n    RRule.prototype.all = function (iterator) {\n        if (iterator) {\n            return this._iter(new CallbackIterResult('all', {}, iterator));\n        }\n        var result = this._cacheGet('all');\n        if (result === false) {\n            result = this._iter(new IterResult('all', {}));\n            this._cacheAdd('all', result);\n        }\n        return result;\n    };\n    /**\n     * Returns all the occurrences of the rrule between after and before.\n     * The inc keyword defines what happens if after and/or before are\n     * themselves occurrences. With inc == True, they will be included in the\n     * list, if they are found in the recurrence set.\n     *\n     * @return Array\n     */\n    RRule.prototype.between = function (after, before, inc, iterator) {\n        if (inc === void 0) { inc = false; }\n        if (!isValidDate(after) || !isValidDate(before)) {\n            throw new Error('Invalid date passed in to RRule.between');\n        }\n        var args = {\n            before: before,\n            after: after,\n            inc: inc,\n        };\n        if (iterator) {\n            return this._iter(new CallbackIterResult('between', args, iterator));\n        }\n        var result = this._cacheGet('between', args);\n        if (result === false) {\n            result = this._iter(new IterResult('between', args));\n            this._cacheAdd('between', result, args);\n        }\n        return result;\n    };\n    /**\n     * Returns the last recurrence before the given datetime instance.\n     * The inc keyword defines what happens if dt is an occurrence.\n     * With inc == True, if dt itself is an occurrence, it will be returned.\n     *\n     * @return Date or null\n     */\n    RRule.prototype.before = function (dt, inc) {\n        if (inc === void 0) { inc = false; }\n        if (!isValidDate(dt)) {\n            throw new Error('Invalid date passed in to RRule.before');\n        }\n        var args = { dt: dt, inc: inc };\n        var result = this._cacheGet('before', args);\n        if (result === false) {\n            result = this._iter(new IterResult('before', args));\n            this._cacheAdd('before', result, args);\n        }\n        return result;\n    };\n    /**\n     * Returns the first recurrence after the given datetime instance.\n     * The inc keyword defines what happens if dt is an occurrence.\n     * With inc == True, if dt itself is an occurrence, it will be returned.\n     *\n     * @return Date or null\n     */\n    RRule.prototype.after = function (dt, inc) {\n        if (inc === void 0) { inc = false; }\n        if (!isValidDate(dt)) {\n            throw new Error('Invalid date passed in to RRule.after');\n        }\n        var args = { dt: dt, inc: inc };\n        var result = this._cacheGet('after', args);\n        if (result === false) {\n            result = this._iter(new IterResult('after', args));\n            this._cacheAdd('after', result, args);\n        }\n        return result;\n    };\n    /**\n     * Returns the number of recurrences in this set. It will have go trough\n     * the whole recurrence, if this hasn't been done before.\n     */\n    RRule.prototype.count = function () {\n        return this.all().length;\n    };\n    /**\n     * Converts the rrule into its string representation\n     *\n     * @see <http://www.ietf.org/rfc/rfc2445.txt>\n     * @return String\n     */\n    RRule.prototype.toString = function () {\n        return optionsToString(this.origOptions);\n    };\n    /**\n     * Will convert all rules described in nlp:ToText\n     * to text.\n     */\n    RRule.prototype.toText = function (gettext, language, dateFormatter) {\n        return toText(this, gettext, language, dateFormatter);\n    };\n    RRule.prototype.isFullyConvertibleToText = function () {\n        return isFullyConvertible(this);\n    };\n    /**\n     * @return a RRule instance with the same freq and options\n     * as this one (cache is not cloned)\n     */\n    RRule.prototype.clone = function () {\n        return new RRule(this.origOptions);\n    };\n    // RRule class 'constants'\n    RRule.FREQUENCIES = [\n        'YEARLY',\n        'MONTHLY',\n        'WEEKLY',\n        'DAILY',\n        'HOURLY',\n        'MINUTELY',\n        'SECONDLY',\n    ];\n    RRule.YEARLY = Frequency.YEARLY;\n    RRule.MONTHLY = Frequency.MONTHLY;\n    RRule.WEEKLY = Frequency.WEEKLY;\n    RRule.DAILY = Frequency.DAILY;\n    RRule.HOURLY = Frequency.HOURLY;\n    RRule.MINUTELY = Frequency.MINUTELY;\n    RRule.SECONDLY = Frequency.SECONDLY;\n    RRule.MO = Days.MO;\n    RRule.TU = Days.TU;\n    RRule.WE = Days.WE;\n    RRule.TH = Days.TH;\n    RRule.FR = Days.FR;\n    RRule.SA = Days.SA;\n    RRule.SU = Days.SU;\n    RRule.parseString = parseString;\n    RRule.optionsToString = optionsToString;\n    return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n    var _exdateHash = {};\n    var _accept = iterResult.accept;\n    function evalExdate(after, before) {\n        _exrule.forEach(function (rrule) {\n            rrule.between(after, before, true).forEach(function (date) {\n                _exdateHash[Number(date)] = true;\n            });\n        });\n    }\n    _exdate.forEach(function (date) {\n        var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n        _exdateHash[Number(zonedDate)] = true;\n    });\n    iterResult.accept = function (date) {\n        var dt = Number(date);\n        if (isNaN(dt))\n            return _accept.call(this, date);\n        if (!_exdateHash[dt]) {\n            evalExdate(new Date(dt - 1), new Date(dt + 1));\n            if (!_exdateHash[dt]) {\n                _exdateHash[dt] = true;\n                return _accept.call(this, date);\n            }\n        }\n        return true;\n    };\n    if (iterResult.method === 'between') {\n        evalExdate(iterResult.args.after, iterResult.args.before);\n        iterResult.accept = function (date) {\n            var dt = Number(date);\n            if (!_exdateHash[dt]) {\n                _exdateHash[dt] = true;\n                return _accept.call(this, date);\n            }\n            return true;\n        };\n    }\n    for (var i = 0; i < _rdate.length; i++) {\n        var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n        if (!iterResult.accept(new Date(zonedDate.getTime())))\n            break;\n    }\n    _rrule.forEach(function (rrule) {\n        iter(iterResult, rrule.options);\n    });\n    var res = iterResult._result;\n    sort(res);\n    switch (iterResult.method) {\n        case 'all':\n        case 'between':\n            return res;\n        case 'before':\n            return ((res.length && res[res.length - 1]) || null);\n        case 'after':\n        default:\n            return ((res.length && res[0]) || null);\n    }\n}\n//# sourceMappingURL=iterset.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n    dtstart: null,\n    cache: false,\n    unfold: false,\n    forceset: false,\n    compatible: false,\n    tzid: null,\n};\nexport function parseInput(s, options) {\n    var rrulevals = [];\n    var rdatevals = [];\n    var exrulevals = [];\n    var exdatevals = [];\n    var parsedDtstart = parseDtstart(s);\n    var dtstart = parsedDtstart.dtstart;\n    var tzid = parsedDtstart.tzid;\n    var lines = splitIntoLines(s, options.unfold);\n    lines.forEach(function (line) {\n        var _a;\n        if (!line)\n            return;\n        var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n        switch (name.toUpperCase()) {\n            case 'RRULE':\n                if (parms.length) {\n                    throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n                }\n                rrulevals.push(parseString(line));\n                break;\n            case 'RDATE':\n                var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n                if (rdateTzid && !tzid) {\n                    tzid = rdateTzid;\n                }\n                rdatevals = rdatevals.concat(parseRDate(value, parms));\n                break;\n            case 'EXRULE':\n                if (parms.length) {\n                    throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n                }\n                exrulevals.push(parseString(value));\n                break;\n            case 'EXDATE':\n                exdatevals = exdatevals.concat(parseRDate(value, parms));\n                break;\n            case 'DTSTART':\n                break;\n            default:\n                throw new Error('unsupported property: ' + name);\n        }\n    });\n    return {\n        dtstart: dtstart,\n        tzid: tzid,\n        rrulevals: rrulevals,\n        rdatevals: rdatevals,\n        exrulevals: exrulevals,\n        exdatevals: exdatevals,\n    };\n}\nfunction buildRule(s, options) {\n    var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n    var noCache = options.cache === false;\n    if (options.compatible) {\n        options.forceset = true;\n        options.unfold = true;\n    }\n    if (options.forceset ||\n        rrulevals.length > 1 ||\n        rdatevals.length ||\n        exrulevals.length ||\n        exdatevals.length) {\n        var rset_1 = new RRuleSet(noCache);\n        rset_1.dtstart(dtstart);\n        rset_1.tzid(tzid || undefined);\n        rrulevals.forEach(function (val) {\n            rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n        });\n        rdatevals.forEach(function (date) {\n            rset_1.rdate(date);\n        });\n        exrulevals.forEach(function (val) {\n            rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n        });\n        exdatevals.forEach(function (date) {\n            rset_1.exdate(date);\n        });\n        if (options.compatible && options.dtstart)\n            rset_1.rdate(dtstart);\n        return rset_1;\n    }\n    var val = rrulevals[0] || {};\n    return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n    if (options === void 0) { options = {}; }\n    return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n    return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n    var invalid = [];\n    var keys = Object.keys(options);\n    var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n    keys.forEach(function (key) {\n        if (!includes(defaultKeys, key))\n            invalid.push(key);\n    });\n    if (invalid.length) {\n        throw new Error('Invalid options: ' + invalid.join(', '));\n    }\n    return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n    if (line.indexOf(':') === -1) {\n        return {\n            name: 'RRULE',\n            value: line,\n        };\n    }\n    var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n    return {\n        name: name,\n        value: value,\n    };\n}\nfunction breakDownLine(line) {\n    var _a = extractName(line), name = _a.name, value = _a.value;\n    var parms = name.split(';');\n    if (!parms)\n        throw new Error('empty property name');\n    return {\n        name: parms[0].toUpperCase(),\n        parms: parms.slice(1),\n        value: value,\n    };\n}\nfunction splitIntoLines(s, unfold) {\n    if (unfold === void 0) { unfold = false; }\n    s = s && s.trim();\n    if (!s)\n        throw new Error('Invalid empty string');\n    // More info about 'unfold' option\n    // Go head to http://www.ietf.org/rfc/rfc2445.txt\n    if (!unfold) {\n        return s.split(/\\s/);\n    }\n    var lines = s.split('\\n');\n    var i = 0;\n    while (i < lines.length) {\n        // TODO\n        var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n        if (!line) {\n            lines.splice(i, 1);\n        }\n        else if (i > 0 && line[0] === ' ') {\n            lines[i - 1] += line.slice(1);\n            lines.splice(i, 1);\n        }\n        else {\n            i += 1;\n        }\n    }\n    return lines;\n}\nfunction validateDateParm(parms) {\n    parms.forEach(function (parm) {\n        if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n            throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n        }\n    });\n}\nfunction parseRDate(rdateval, parms) {\n    validateDateParm(parms);\n    return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n    var _this = this;\n    return function (field) {\n        if (field !== undefined) {\n            _this[\"_\".concat(fieldName)] = field;\n        }\n        if (_this[\"_\".concat(fieldName)] !== undefined) {\n            return _this[\"_\".concat(fieldName)];\n        }\n        for (var i = 0; i < _this._rrule.length; i++) {\n            var field_1 = _this._rrule[i].origOptions[fieldName];\n            if (field_1) {\n                return field_1;\n            }\n        }\n    };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n    __extends(RRuleSet, _super);\n    /**\n     *\n     * @param {Boolean?} noCache\n     * The same stratagy as RRule on cache, default to false\n     * @constructor\n     */\n    function RRuleSet(noCache) {\n        if (noCache === void 0) { noCache = false; }\n        var _this = _super.call(this, {}, noCache) || this;\n        _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n        _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n        _this._rrule = [];\n        _this._rdate = [];\n        _this._exrule = [];\n        _this._exdate = [];\n        return _this;\n    }\n    RRuleSet.prototype._iter = function (iterResult) {\n        return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n    };\n    /**\n     * Adds an RRule to the set\n     *\n     * @param {RRule}\n     */\n    RRuleSet.prototype.rrule = function (rrule) {\n        _addRule(rrule, this._rrule);\n    };\n    /**\n     * Adds an EXRULE to the set\n     *\n     * @param {RRule}\n     */\n    RRuleSet.prototype.exrule = function (rrule) {\n        _addRule(rrule, this._exrule);\n    };\n    /**\n     * Adds an RDate to the set\n     *\n     * @param {Date}\n     */\n    RRuleSet.prototype.rdate = function (date) {\n        _addDate(date, this._rdate);\n    };\n    /**\n     * Adds an EXDATE to the set\n     *\n     * @param {Date}\n     */\n    RRuleSet.prototype.exdate = function (date) {\n        _addDate(date, this._exdate);\n    };\n    /**\n     * Get list of included rrules in this recurrence set.\n     *\n     * @return List of rrules\n     */\n    RRuleSet.prototype.rrules = function () {\n        return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n    };\n    /**\n     * Get list of excluded rrules in this recurrence set.\n     *\n     * @return List of exrules\n     */\n    RRuleSet.prototype.exrules = function () {\n        return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n    };\n    /**\n     * Get list of included datetimes in this recurrence set.\n     *\n     * @return List of rdates\n     */\n    RRuleSet.prototype.rdates = function () {\n        return this._rdate.map(function (e) { return new Date(e.getTime()); });\n    };\n    /**\n     * Get list of included datetimes in this recurrence set.\n     *\n     * @return List of exdates\n     */\n    RRuleSet.prototype.exdates = function () {\n        return this._exdate.map(function (e) { return new Date(e.getTime()); });\n    };\n    RRuleSet.prototype.valueOf = function () {\n        var result = [];\n        if (!this._rrule.length && this._dtstart) {\n            result = result.concat(optionsToString({ dtstart: this._dtstart }));\n        }\n        this._rrule.forEach(function (rrule) {\n            result = result.concat(rrule.toString().split('\\n'));\n        });\n        this._exrule.forEach(function (exrule) {\n            result = result.concat(exrule\n                .toString()\n                .split('\\n')\n                .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n                .filter(function (line) { return !/^DTSTART/.test(line); }));\n        });\n        if (this._rdate.length) {\n            result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n        }\n        if (this._exdate.length) {\n            result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n        }\n        return result;\n    };\n    /**\n     * to generate recurrence field such as:\n     * DTSTART:19970902T010000Z\n     * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n     * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n     */\n    RRuleSet.prototype.toString = function () {\n        return this.valueOf().join('\\n');\n    };\n    /**\n     * Create a new RRuleSet Object completely base on current instance\n     */\n    RRuleSet.prototype.clone = function () {\n        var rrs = new RRuleSet(!!this._cache);\n        this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n        this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n        this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n        this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n        return rrs;\n    };\n    return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n    if (!(rrule instanceof RRule)) {\n        throw new TypeError(String(rrule) + ' is not RRule instance');\n    }\n    if (!includes(collection.map(String), String(rrule))) {\n        collection.push(rrule);\n    }\n}\nfunction _addDate(date, collection) {\n    if (!(date instanceof Date)) {\n        throw new TypeError(String(date) + ' is not Date instance');\n    }\n    if (!includes(collection.map(Number), Number(date))) {\n        collection.push(date);\n        sort(collection);\n    }\n}\nfunction rdatesToString(param, rdates, tzid) {\n    var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n    var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n    var dateString = rdates\n        .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n        .join(',');\n    return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tfunction toUTCDate(date){\r\n\t\treturn new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(),date.getSeconds()));\r\n\t}\r\n\r\n\tfunction setUTCPartsToDate(d) {\r\n\t\treturn new Date(\r\n\t\t\td.getUTCFullYear(),\r\n\t\t\td.getUTCMonth(),\r\n\t\t\td.getUTCDate(),\r\n\t\t\td.getUTCHours(),\r\n\t\t\td.getUTCMinutes(),\r\n\t\t\td.getUTCSeconds()\r\n\t\t);\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\t// GS-2596: from and to should be in UTC, \r\n\t\t// need to remove one sec to not be included in repeatedDates array\r\n\t\tfrom = toUTCDate(from || new Date(scheduler._min_date.valueOf() - 1000));\r\n\t\tto = toUTCDate(to || new Date(scheduler._max_date.valueOf() - 1000));\r\n\r\n\t\t\r\n\t\tconst utcStart = toUTCDate(ev.start_date);\r\n\t\tlet parsedRRule;\r\n\t\tif (maxCount){\r\n\t\t\t// for getRecDates() method\r\n\t\t\tparsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)};COUNT=${maxCount}`, { dtstart: utcStart });\r\n\t\t} else {\r\n\t\t\tparsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart });\r\n\t\t}\r\n\t\t//GS-2596: third parameter, includes dates that match with arguments\r\n\t\tconst repeatedDates = parsedRRule.between(from, to, true).map(date => {\r\n\t\t\tconst adjustedDate = setUTCPartsToDate(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\t//GS-2534: case when exceptions have different dates\r\n\t\tif (seriesExceptions && repeatedDates.length == 0 ){\r\n\t\t\tfor (let a in seriesExceptions){\r\n\t\t\t\tlet exception = seriesExceptions[a];\r\n\t\t\t\tif (exception) {\r\n\t\t\t\t\tif(exception.deleted){\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\telse if (from && to && exception.start_date < to && exception.end_date > from) {\r\n\t\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t} \r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\tif (isSeries(ev)) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t// if it's virtual event we can skip it\r\n\t\t\t\t} else if (!this._is_virtual_event(ev.id)) {\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!from && !to && !this._is_virtual_event(ev.id)) {\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst formatFunc = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule.value === \"ON\"){\r\n\t\t\t\tuntil = formatFunc(node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value);\r\n\t\t\t} else if(endRule.value === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `<div class=\"dhx_form_rrule\">\r\n\t\t<div class=\"dhx_form_repeat_pattern\">\r\n\t\t\t<select>\r\n\t\t\t\t<option value=\"NEVER\">${loc.repeat_never}</option>\r\n\t\t\t\t<option value=\"DAILY\">${loc.repeat_daily}</option>\r\n\t\t\t\t<option value=\"WEEKLY\">${loc.repeat_weekly}</option>\r\n\t\t\t\t<option value=\"MONTHLY\">${loc.repeat_monthly}</option>\r\n\t\t\t\t<option value=\"YEARLY\">${loc.repeat_yearly}</option>\r\n\t\t\t\t<option value=\"WORKDAYS\">${loc.repeat_workdays}</option>\r\n\t\t\t\t<option value=\"CUSTOM\">${loc.repeat_custom}</option>\r\n\t\t\t</select>\r\n\t\t</div>\r\n\t\t<div class=\"dhx_form_repeat_custom dhx_hidden\">\r\n\t\t\t<div class=\"dhx_form_repeat_custom_interval\">\r\n\t\t\t\t<input name=\"repeat_interval_value\" type=\"number\" min=\"1\">\r\n\t\t\t\t<select name=\"repeat_interval_unit\">\r\n\t\t\t\t\t<option value=\"DAILY\">${loc.repeat_freq_day}</option>\r\n\t\t\t\t\t<option value=\"WEEKLY\">${loc.repeat_freq_week}</option>\r\n\t\t\t\t\t<option value=\"MONTHLY\">${loc.repeat_freq_month}</option>\r\n\t\t\t\t\t<option value=\"YEARLY\">${loc.repeat_freq_year}</option>\r\n\t\t\t\t</select>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"dhx_form_repeat_custom_additional\">\r\n\t\t\t\t<div class=\"dhx_form_repeat_custom_week dhx_hidden\">\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"MO\" />${loc.day_for_recurring[1]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"TU\" />${loc.day_for_recurring[2]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"WE\" />${loc.day_for_recurring[3]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"TH\" />${loc.day_for_recurring[4]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"FR\" />${loc.day_for_recurring[5]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"SA\" />${loc.day_for_recurring[6]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"SU\" />${loc.day_for_recurring[0]}</label>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"dhx_form_repeat_custom_month dhx_hidden\">\r\n\t\t\t\t\t<select name=\"dhx_custom_month_option\">\r\n\t\t\t\t\t\t<option value=\"month_date\"></option>\r\n\t\t\t\t\t\t<option value=\"month_nth_weekday\"></option>\r\n\t\t\t\t\t</select>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"dhx_form_repeat_custom_year dhx_hidden\">\r\n\t\t\t\t\t<select name=\"dhx_custom_year_option\">\r\n\t\t\t\t\t\t<option value=\"month_date\"></option>\r\n\t\t\t\t\t\t<option value=\"month_nth_weekday\"></option>\r\n\t\t\t\t\t</select>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"dhx_form_repeat_ends\">\r\n\t\t\t\t<div>${loc.repeat_ends}</div>\r\n\t\t\t\t<div class=\"dhx_form_repeat_ends_options\">\r\n\t\t\t\t\t<select name=\"dhx_custom_repeat_ends\">\r\n\t\t\t\t\t\t<option value=\"NEVER\">${loc.repeat_never}</option>\r\n\t\t\t\t\t\t<option value=\"AFTER\">${loc.repeat_radio_end2}</option>\r\n\t\t\t\t\t\t<option value=\"ON\">${loc.repeat_on_date}</option>\r\n\t\t\t\t\t</select>\r\n\t\t\t\t\t<div class=\"dhx_form_repeat_ends_extra\">\r\n\t\t\t\t\t\t<div class=\"dhx_form_repeat_ends_after dhx_hidden\">\r\n\t\t\t\t\t\t\t<label><input type=\"number\" min=\"1\" name=\"dhx_form_repeat_ends_after\">${loc.repeat_text_occurences_count}</label>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"dhx_form_repeat_ends_on dhx_hidden\">\r\n\t\t\t\t\t\t\t<input type=\"date\" name=\"dhx_form_repeat_ends_ondate\">\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t</div>\r\n\t</div>`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '<div class=\"dhx_form_repeat\"> '+\r\n\t\t\t\t\t'<form> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_left\"> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"day\" />'+loc.repeat_radio_day+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"week\"/>'+loc.repeat_radio_week+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"month\" checked />'+loc.repeat_radio_month+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"year\" />'+loc.repeat_radio_year+'</label></div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_divider\">'+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_center\"> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_day\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"day_type\" value=\"d\"/>'+loc.repeat_radio_day_type+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"day_count\" value=\"1\" />'+loc.repeat_text_day_count+'</label></div> '+\r\n\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"day_type\" checked value=\"w\"/>'+loc.repeat_radio_day_type2+'</label></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_week\">'+\r\n\t\t\t\t\t\t\t\t'<div><label>'+loc.repeat_week+'<input class=\"dhx_repeat_text\" type=\"text\" name=\"week_count\" value=\"1\" /></label>'+\r\n\t\t\t\t\t\t\t\t'<span>'+loc.repeat_text_week_count+'</span></div>  '+\r\n\t\t\t\t\t\t\t\t'<table class=\"dhx_repeat_days\"> '+\r\n\t\t\t\t\t\t\t\t\t'<tr> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"1\" />'+loc.day_for_recurring[1]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"4\" />'+loc.day_for_recurring[4]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"2\" />'+loc.day_for_recurring[2]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"5\" />'+loc.day_for_recurring[5]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"3\" />'+loc.day_for_recurring[3]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"6\" />'+loc.day_for_recurring[6]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"0\" />'+loc.day_for_recurring[0]+'</label></div> </td> '+\r\n\t\t\t\t\t\t\t\t\t'</tr> '+\r\n\t\t\t\t\t\t\t\t'</table> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div id=\"dhx_repeat_month\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_month_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"month_type\" value=\"d\"/>'+loc.repeat_radio_month_type+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_day\" value=\"1\" />'+loc.repeat_text_month_day+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_count\" value=\"1\" />'+loc.repeat_text_month_count+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_month_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"month_type\" checked value=\"w\"/>'+loc.repeat_radio_month_start+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"month_week2\" value=\"1\" />'+\r\n\t\t\t\t\t\t\t\t\t'<label>'+\r\n\t\t\t\t\t\t\t\t\t\t'<select name=\"month_day2\">'+\r\n\t\t\t\t\t\t\t\t\t\t'\t<option value=\"1\" selected >'+scheduler.locale.date.day_full[1]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+scheduler.locale.date.day_full[2]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+scheduler.locale.date.day_full[3]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+scheduler.locale.date.day_full[4]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+scheduler.locale.date.day_full[5]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+scheduler.locale.date.day_full[6]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"0\">'+scheduler.locale.date.day_full[0]+\r\n\t\t\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\t\t\tloc.repeat_text_month_count2_before+\r\n\t\t\t\t\t\t\t\t\t'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_count2\" value=\"1\" />'+loc.repeat_text_month_count2_after+'</label></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_year\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_year_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"year_type\" value=\"d\"/>'+loc.repeat_radio_day_type+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"year_day\" value=\"1\" />'+loc.repeat_text_year_day+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label>'+\r\n\t\t\t\t\t\t\t\t\t'<select name=\"year_month\">'+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"0\" selected >'+loc.month_for_recurring[0]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"1\">'+loc.month_for_recurring[1]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+loc.month_for_recurring[2]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+loc.month_for_recurring[3]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+loc.month_for_recurring[4]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+loc.month_for_recurring[5]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+loc.month_for_recurring[6]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+loc.month_for_recurring[7]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"8\">'+loc.month_for_recurring[8]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"9\">'+loc.month_for_recurring[9]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"10\">'+loc.month_for_recurring[10]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"11\">'+loc.month_for_recurring[11]+\r\n\t\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\t\tloc.select_year_month+\r\n\t\t\t\t\t\t\t\t'</label></div> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_year_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"year_type\" checked value=\"w\"/>'+loc.repeat_year_label+'</label>'+\r\n\t\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"year_week2\" value=\"1\" />'+\r\n\t\t\t\t\t\t\t\t'<select name=\"year_day2\">'+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"1\" selected >'+scheduler.locale.date.day_full[1]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+scheduler.locale.date.day_full[2]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+scheduler.locale.date.day_full[3]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+scheduler.locale.date.day_full[4]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+scheduler.locale.date.day_full[5]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+scheduler.locale.date.day_full[6]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+scheduler.locale.date.day_full[0]+\r\n\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'<select name=\"year_month2\">'+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"0\" selected >'+loc.month_for_recurring[0]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"1\">'+loc.month_for_recurring[1]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+loc.month_for_recurring[2]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+loc.month_for_recurring[3]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+loc.month_for_recurring[4]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+loc.month_for_recurring[5]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+loc.month_for_recurring[6]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+loc.month_for_recurring[7]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"8\">'+loc.month_for_recurring[8]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"9\">'+loc.month_for_recurring[9]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"10\">'+loc.month_for_recurring[10]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"11\">'+loc.month_for_recurring[11]+\r\n\t\t\t\t\t\t\t\t'</select></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_divider\">'+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_right\"> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" checked/>'+loc.repeat_radio_end+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" />'+loc.repeat_radio_end2+'</label>'+\r\n\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"occurences_count\" value=\"1\" />'+loc.repeat_text_occurences_count+'</div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" />'+loc.repeat_radio_end3+'</label>'+\r\n\t\t\t\t\t\t\t'<input class=\"dhx_repeat_date\" type=\"text\" name=\"date_of_end\" value=\"'+scheduler.config.repeat_date_of_end+'\" /></div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t'</form> '+\r\n\t\t\t\t'</div> '+\r\n\t\t\t\t'</div>';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\",  code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"<event>\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\"><![CDATA[\"+(attrs[i][1]?attrs[i][1](ev[attrs[i][0]]):ev[attrs[i][0]])+\"]]></\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"</event>\");\r\n\t}\r\n\treturn (header||\"\")+\"<data>\"+xml.join(\"\\n\")+\"</data>\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport =  this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\t\t\t// GS-2377: to show tooltip after touch and hide it when touch is outside the events\r\n\t\t\tif (scheduler._mobile && scheduler.config.touch_tooltip){\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconfig.onmouseleave(event, targetNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\t// GS-2377: don't hide tooltip on mobile device when ontouchstart event occurs\r\n\t\tif (scheduler._mobile && scheduler.config.touch_tooltip) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event =  scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"<div class='dhx_tooltip_line' style='\" + bg_color + \"\" + color + \"' event_id='\" + evs[i].id + \"' \"+this.config.event_attribute+\"='\"+evs[i].id+\"'>\";\r\n\t\t\thtml += \"<div class='dhx_tooltip_date' style='\" + bg_color + \"\" + color + \"'>\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"</div>\";\r\n\t\t\thtml += \"<div class='dhx_event_icon icon_details'>&nbsp;</div>\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"</div>\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"<div class='dhx_year_month'></div><div class='dhx_year_grid'><div class='dhx_year_week'>\" + week_template.innerHTML + \"</div><div class='dhx_year_body'></div></div>\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `<div class='dhx_year_month'>${this.templates.year_month(currentDate)}</div>\r\n\t\t\t<div class='dhx_year_grid'></div>`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tfilterDays: scheduler.ignore_year,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"<form method='POST' target='_blank'><input type='text' name='data'><input type='hidden' name='type' value=''></form>\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width  = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width  = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };"],"names":["dhtmlxHook","dhtmlx","attaches","attachScheduler","day","mode","tabs","scheduler","obj","document","createElement","id","this","_genStr","innerHTML","body","appendChild","firstChild","attachObject","vs","av","sched","schedId","setSizes","updateView","destructor","init","_viewRestore","globalScope","window","global","global$1","dragHighlightPos","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","checkSectionPropertyName","y_property","map_to","setRequiredStylesToMarker","style","top","left","marginLeft","createMarkerConfig","configSettings","sectionId","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","getMonthViewMarkers","getTimelineAndUnitsViewMarkers","getColumnViewMarkers","forEach","cfg","push","columnViewMarkersArray","eventNodes","$container","querySelectorAll","event_attribute","i","length","eventNodeClone","cloneNode","startDate","Date","getAttribute","endDate","dates","monthViewMarkersArray","weekDates","currDate","valueOf","week_start","cells","unitMarkersArray","sectionPropertyName","String","split","section_delimiter","formatedSections","map","element","elems","attachEvent","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","undoDelete","ev","deletedEvent","copy","undo_deleted","new_event","message","text","expire","type","callback","undoBtn","addEvent","render","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","fix_options","options","days","zones","get_resulting_options","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","timespan_type","on_overlap","res","temp_start_date","temp_end_date","timespans","_marked_timespans","date_part","day_value","day_index","getDay","getZones","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","s","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","recEventInLimits","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","_get_blocked_zones","property","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","_add_timespan_zones","resultZones","concat","containers","_props","matrix","container","view","view_config","linker","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","undefined","min","max","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","area","blocks","min_date","max_date","date_to_display","min_day","areas","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","d","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","_get_unit_index","unit","_date","dx","day_ind","unitsPerDay","floor","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","console","error","$stateProvider","registerProvider","batch_update","batchUpdate","noRedraw","call_dp","_dp","updateMode","dp_mode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","setCurrentView","render_data","render_view_data","updateEvent","sendData","initPlugins","limit","uidSeed","isArray","pop","isStringObject","Function","prototype","toString","constructor","isNumberObject","isBooleanObject","isDate","getFullYear","getMonth","defined","delay","timeout","timer","result","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","utils","mixin","source","force","f","object","Number","Boolean","varType","Object","StateService","stateProviders","name","provider","method","internal","unregisterProvider","assert","check","show_errors","log","extend","commonViews","agenda","grid","timeline","week_agenda","year","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedDoc","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","renderCalendar","exportToPNG","exportToPDF","dhtmlxError","catchError","a","b","responseText","ajax_error","alert","classes","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","navigation","handler","calendar","html_element","findRenderer","renderer","rows","cols","renderElement","value","align","justifyContent","prepareConfig","renderLayout","fragment","createDocumentFragment","items","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","configChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","equals","listenWindowResize","oldSize","resizeDelay","$destroyed","newSize","triggerSchedulerResize","$root","watchNodeResize","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","addResizeListener","containerStyles","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","salesforce_environment","contentWindow","EventHost","_silent_mode","listeners","_silentEnd","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","innerId","attachAll","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","extend$l","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","navbar","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","_grid","names","optionalViews","_obj","getElementById","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","_x","scale_x","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","right","node","x","y","prepareValue","val","prepared","isNaN","direction","getElementsByTagName","class_name","attr_value","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","_new_event","select_id","expanded","drag_id","drag_mode","dhx_cal_data","cancelBubble","readonly","icon","mask","buttons","replace","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","confirm","base","_isObject","_isDate","duration","event_duration","time_step","start_hour","setTime","_loading","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","d_pos","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","for_rendered","r","srcElement","classname","drag_event_body","fullClass","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","visibility","totalWidth","col_length","hiddenWidth","c2","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","parse_date","getLabel","lightbox","updateCollection","list_name","collection","serverList","resetLightbox","hideCover","cache","create","n_ev","_focus","focus","getDaysDifference","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","fd","start_slot","end_slot","_get_section_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","addEventListener","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","elementPosition","elem","bottom","getBoundingClientRect","box","docElem","pageYOffset","pageXOffset","offsetLeft","offsetParent","getRelativeEventPosition","getNodePosition","getClassName","baseVal","getTargetNode","trg","tagName","shadowRoot","composedPath","locateCss","strict","ind","charAt","isVisible","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","hasHref","canHaveHref","nodeName","loLowerCase","canDisable","input","textarea","hasAttribute","getFocusableNodes","nodes","nodesArray","$position","sort","isValid","isShadowDomSupported","createShadowRoot","attachShadow","getActiveElement","activeElement","getSelection","focusNode","getRootNode","ShadowRoot","host","hasShadowParent","dom_helpers","htmlObject","getOffset","getOffsetSum","getOffsetRect","test","navigator","userAgent","dummyBox","selector","insertAfter","newNode","referenceNode","nextSibling","isChildOf","child","contains","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isOpera","isChrome","isKHTML","isFF","isIPad","isEdge","isNode","clearAll","serialize$1","serialized","encodeURIComponent","Promise","createConfig","url","async","headers","serialize","ajax","serializeRequestParams","parse","DOMParser","parseFromString","ActiveXObject","loadXML","xmltop","tagname","xhr","status","xml","responseXML","xpath","xpathExp","docObj","selectNodes","first","col","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","query","_call","get","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","match","readyState","xmlDoc","filePath","open","setRequestHeader","toUpperCase","send","urlSeparator","$ajax","generateStringToDate","format","utc","splt","code","csp_date_to_str","to_fixed","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","month_short","month_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","csp_str_to_date","set","temp","month_short_hash","month_full_hash","UTC","cspEnabled","checkIfCSPEnabled","useCsp","csp","old","setSeconds","setMilliseconds","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","datesDiff","rest","hours","setYear","num","date_to_str","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","isYMDDate","datestr","isMDYDate","isDMYDate","isISO8601","parseYMD","parseMDY","parseDMY","parse_exact_format","nday","first_thursday","year_number","ordinal_date","week_number","convert_to_utc","default_date","month_date","load_date","week_date","hour_date","date_format","api_date","displayed_event_color","displayed_event_text_color","wide_form","day_column_padding","use_select_menu_space","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch","touch_tip","touch_drag","touch_swipe_dates","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","timeline_swap_resize","$initial","_helpers","parseDate","xml_date","formatDate","xml_format","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","event_header","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","_events","_loaded","clear_view","extra_data","event_updated","silent","setEvent","hash","_rendered","changeEventId","new_id","create_getter","create_setter","_changed","is_visible_events","clear_event","in_visible_range","evFirstHour","evLastHour","end_dates_visible","hidden_duration","checkEndDate","get_visible_events","only_timed","stack","filter_event","filter","_is_main_area_event","hold","full","_not_render","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","_sorder","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_line","_pre_render_events_table","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","cellIndex","weekCellIndex","out","weeks","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","parentPosition","zIndex","color","setProperty","tplClass","cssText","_editor","shiftKey","keyCode","icons","icons_str","ariaAttr","currentIcon","textColor","highlightEventPosition","contentA","contentB","cs","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","restoreOriginalColors","getSectionTop","posFromDate","_smartRenderingEnabled","scrollTo","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","_parsers","canParse","topElement","loader","csrfToken","security_key","arr","itms","itm","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","option","option_key","ical","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","dh","dm","utcMark","dn","getSerializator","_load_url","prevent_cache","ajaxCallback","response","on_load","lf","cache_line","temp_to","extend$a","extend$9","extend$8","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_y","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","monitorThemeChange","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","monitorIntervalId","clearInterval","setInterval","csstheme","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","item","processedItem","prop","_prepareItemForJson","_prepareItemForForm","_prepareDataItem","dataItem","createDataProcessor","tMode","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","filterDays","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","_toggleMode","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","labelFormat","dayElement","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","dayStart","_renderDayGridHeader","weekLength","children","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProvider","common_errors","schedulerCore","wai_aria","dom","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","event_highlight","dhtmlx_suite_hooks","skins","jquery","dataProcessorExtend","connector","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","getExtensionList","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","ExtensionsManager","_extensions","SchedulerFactory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","calendars","addCalendar","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","_agendaScrollTop","set_full_view","l","rowAttr","dateHeader","descriptionHeader","tableAttr","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","agenda_area","v_border","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderEmptyView","ignore_agenda","renderDay","calendarEvent","renderOneEvent","selectedId","bg","all_timed_month","is_event_short","_safe_copy","proto","event_pid","isPrototypeOf","event_length","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","collision_limit","_setTempSection","event_id","checked_mode","checkCollision","edited_ev","rrule","recurring_event_id","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","_pid_time","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","rows_length","year_y","week_agenda_scale_height","cur_height","eventsContainer","g","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","setCookie","cookie_param","getCookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","old_load","notImplemented","daytimeline_restricted","drag_between_restricted","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","all_options","single_option","addOption","getIndexByValue","selectOption","selected_id","disable","setComboValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","grid_view","html_templates","all","keyboard_shortcuts","$keyboardNavigation","shortcuts","createCommand","modifiers","alt","ctrl","meta","shortcut","commands","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","ctrlKey","metaKey","printableKey","fromCharCode","getHashFromEvent","getHash","parts","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","eventhandler","EventHandler","_handlers","findHandler","doAction","unbind","bindAll","initKeys","trap_modal_focus","trapFocus","currentFocus","currentIndex","nextIndex","nextItem","renderMultiple","currentStart","currentEnd","TimeSlot","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","_timeline_getX","tempStart","tempEnd","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","scheduler_node","SchedulerNode","_compose","getDefaultNode","getMode","blur","enable","removeAttribute","_compareEvents","_pickEvent","startId","eventElement","Event","getNode","nextEventHandler","activeNode","dispatcher","nextEvent","currEvent","visibleDates","nextEv","setActiveNode","prevEventHandler","HeaderCell","getNodes","_key_nav_copy_paste","nav_node","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","header_cell","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","keepScrollPosition","_moveToSlot","slot","nextSlot","time_slot","movingDate","getDefaultDate","key_nav_step","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","clone","timeslot","_getMultisectionView","_getNextSection","isInRange","defaultSlot","DataArea","smart_rendering","_pasteDate","_pasteSection","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","minical_button","MinicalButton","globalNode","MinicalCell","minical_cell","_getGrid","_getNode","enabled","newRow","newCol","modals","modalsStack","isModal","afterPopup","startModal","endModal","isTopModal","currentTarget","traceLightbox","_keyNavMessagePopup","focusElement","backupFocus","core","getActiveNode","setDefaultNode","focusGlobalNode","blurNode","editor","keyDownHandler","defaultPrevented","schedulerNode","_timeout","key_nav_legacy","_temp_key_scope","key_nav","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","clear_event_after","copyEvent","_make_pasted_event","multisection","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","getSelectedEvent","_buffer_event","new_ev","scheduler_handlers","attachSchedulerHandlers","focusHandler","waitCall","reFocusActiveNode","mousedownHandler","dataAreaClick","listOfScales","arrOfScales","some","focusEvent","evNode","prevState","lastStart","lastEnd","lastSection","minical_handlers","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","td","renderMinical","cal","added","destroyMinical","_def_count","addShortcut","scope","scopeObject","getScope","getShortcutHandler","removeShortcut","disp","scopes","minicalButton","minicalDate","timeSlot","searchMap","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","clearEventMarkers","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","createAdapter","map_view_provider","currentAdapter","_latLngUpdate","_eventLocationChanged","map_settings","resolve_user_location","resolve_event_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","setupMapView","attachSchedulerEvents","addEventWithLocation","coordinates","resolveAddress","removeEventMarker","addEventMarker","setUserLocation","adapter","geolocation","getCurrentPosition","coords","dblclick_dhx_map_area","unmodifiedEvent","updateEventMarker","newIdEvent","onEventClick","detachSchedulerEvents","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","map_end","mapContainer","_setMapSize","destroy","initialize","elem_id","marginRight","marginTop","_selected_event_id","ariaButtonAttr","_updateEventLocation","_delay","ret","_event_resolve_delay","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","cont","tpos","_get_def_cont","_render_calendar","$dom","cellRoot","dateAttribute","unmarkCalendar","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","refreshOnLoad","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","noHighlight","monthheight","old_s","multisection_restricted","multiselect","parseXMLOptions","parseJSONOptions","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","backup","mvc","use_id","sanitize","update_timer","_start_ext_load","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","dragger","dhtmlDragAndDropObject","stopDrag","last_event","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","parseFloat","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_start","xml_end","xml_top","profile","footer","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","getPDFData","send_xml","submit","to_pdf","schedulersToPdf","objects","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","_$quickInfoHandler","getPositionInsideScheduler","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","fitQIInsideWindow","quickInfoPopup","popupRect","containerRect","offsetBottom","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","titleContent","titleDate","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","txt_replace","txts","txtt","originalForm","readonlyForm","_lightbox_r","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","toArray","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","daysBetween","date1","date2","date1ms","date2ms","differencems","toOrdinal","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","dolly","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","dateStr","dateInTimeZone","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","dateInTargetTZ","tzOffset","IterResult","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","SuppressedError","suppressed","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","numberAsText","every","at","the","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","canConvert","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","delimJoin","finalDelimiter","o","realCallback","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","rule","name_1","v","acceptNumber","expect","parseText","ttr","S","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","MDAYs","decodeM","decodeNTH","Frequency","freqIsDailyOrGreater","fromText","toText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","buildTimeset","millisecondModulo","timeset","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","strippedLine","Days","parseNumber","optionKey","parseWeekday","parseIndividualNumber","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","baseYearMasks","wnomask","firstwkst","wyearlen","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","mmask","mdaymask","nmdaymask","mrange","rebuildMonth","lastyear","lastmonth","nwdaymask","ranges","easter","yearStart","Iterinfo","rebuild","yearinfo","monthinfo","eastermask","ydayset","mdayset","_","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","makeTimeset","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","isFullyConvertibleToText","iterSet","_rrule","_exrule","_rdate","_exdate","_exdateHash","_accept","evalExdate","zonedDate","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","splitIntoLines","_b","breakDownLine","parms","_c","rdateTzid","parseRDate","buildRule","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rrulestr","extractName","validateDateParm","parm","rdateval","createGetterSetter","fieldName","field","field_1","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","clearMilliseconds","isDeletedOccurrence","isSeries","clearRecurringProperties","original_start","createException","nid","nev","toUTCDate","setUTCPartsToDate","_rec_temp","_rec_markers_pull","_rec_markers","_get_rec_marker","ch","_get_rec_markers","old_add_event","ev_id","_ignore_call","tev","_pid_changed","deleteEventFromSeries","idTimestamp","_is_modified_occurence","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","groupExceptions","exceptions","get_visible_events_rec","repeat_date","old_update_event","toIcalString","non_render","maxCount","seriesExceptions","utcStart","parsedRRule","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","getTopLevelOption","rruleObj","untilDate","hasEndCondition","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","jsDaysToRRULEDays","RruleDayNumsToJs","fillCustomDaily","fillCustomWeekly","dayCheckboxes","dayNum","dayLabel","fillCustomMonthly","dateOfMonth","nthWeekDayOfMonth","repeat_monthly_date","repeat_monthly_weekday","formatDayNumber","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","fillCustomYearly","dateOfYear","nthWeekDayOfYear","fillEndRule","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","formatFunc","endRule","NEVER","fillInDefaults","rec","_get_node","_outer_html","loc","_init_set_value","_ds","show","onRepeatOptionChange","onCustomRepeatIntervalChange","weekly","monthly","yearly","onCustomRepeatEndRule","_rec_init_done","rf","blocked","rruleset","topOption","customFreq","actual_dates","timeControl","getTimeSection","recurrence","_start","getFirstSectionOfType","recurring_legacy","occurrence_timestamp_in_utc","outerHTML","getOuterHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","str_date","date_str","register_els","inps","change_current_view","get_repeat_code","get_rcode","get_end_rule","transpose_type","transp","set_end_rule","has_values","_get_repeat_code","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","set_repeat_code","MouseEvent","_set_repeat_code","elements","_toggle_block","_get_button","getRecurringSection","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","cday","newMonth","cor","cor2","transposeRecurring","recurringParts","dayDurationMs","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","timeline_restricted","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","_getViewPort","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","touch_tooltip","onmouseleave","onmousemove","listener","cloneDomEvent","delayShow","utils.default","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","targetEventId","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","ignore_year","locateEvent","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":"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","x_google_ignoreList":[126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153]}