BLUE
PHP 7.4.33
Path:
/var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/dhtmlx-scheduler/codebase
Run
Logout
Edit File
Size: 1.71 MB
Close
/var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/dhtmlx-scheduler/codebase/dhtmlxscheduler.es.js.map
Text
Base64
{"version":3,"file":"dhtmlxscheduler.es.js","sources":["../sources/global.js","../sources/plugins/drag_highlight_pos.js","../sources/plugins/limit.js","../sources/plugins/batch_update.js","../sources/plugins/index.js","../sources/plugins/undo_delete.js","../sources/core/utils/utils.js","../sources/core/nav_bar.js","../sources/core/scheduler_resize_listener.js","../sources/utils/eventable.js","../sources/core/utils/event.js","../sources/core/common.js","../sources/core/utils/scoped_event.js","../sources/core/utils/dom_helpers.js","../sources/utils/env.js","../sources/core/common/url_serialize.js","../sources/core/base.js","../sources/core/common/get_serializable_events.js","../sources/core/load.js","../sources/core/loaders/xml.js","../sources/core/loaders/json.js","../sources/core/loaders/ical.js","../sources/core/touch.js","../sources/core/skins.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/core/datepicker.js","../sources/scheduler_factory_method.js","../sources/core/state.js","../sources/core/common_errors.js","../sources/core/scheduler.js","../sources/core/wai_aria.js","../sources/core/common/assert.js","../sources/core/jquery.js","../sources/core/destructor.js","../sources/core/utils/ajax.js","../sources/core/config.js","../sources/core/event.js","../sources/core/event_highlight.js","../sources/core/lightbox.js","../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../sources/core/delay_render.js","../sources/core/connector.js","../sources/locale/index.js","../sources/ext/extension_manager.js","../sources/dhtmlx_hook.js","../sources/ext/restricted_extensions/not_implemented_extension.js","../sources/ext/keyboard_navigation/modals.js","../sources/ext/keyboard_navigation/key_nav_legacy.js","../sources/ext/keyboard_navigation/scheduler_handlers.js","../sources/ext/map_view/gMapAdapter.ts","../sources/ext/map_view/osmMapAdapter.ts","../sources/ext/map_view/mapboxAdapter.ts","../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/types.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/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/index.js","../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../node_modules/rrule/dist/esm/iterinfo/easter.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/rrulestr.js","../node_modules/rrule/dist/esm/rruleset.js","../node_modules/rrule/dist/esm/iterset.js","../sources/ext/tooltip/tooltip.ts","../sources/ext/tooltip/tooltipManager.ts","../sources/ext/extensions_gpl.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/daytimeline.js","../sources/ext/restricted_extensions/drag_between.js","../sources/ext/editors.js","../sources/ext/expand.js","../sources/ext/export_api/index.js","../sources/ext/restricted_extensions/grid_view.js","../sources/ext/html_templates.js","../sources/ext/key_nav.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/core.js","../sources/ext/keyboard_navigation/minical_handlers.js","../sources/ext/layer.js","../sources/ext/limit.js","../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","../sources/ext/recurring.js","../sources/ext/recurring_legacy.js","../sources/ext/serialize.js","../sources/ext/restricted_extensions/timeline.js","../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/dhtmlxscheduler.gpl.js","../sources/scheduler_factory.js"],"sourcesContent":["\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 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}","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","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","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;","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 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}","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}","//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(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}","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(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\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 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\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'> \"+ 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'> </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 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äkuu\", \"Heinä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äytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\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äivittä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äivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä 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äivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jä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äkuu\", \"Heinä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"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 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}","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 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}","\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 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, \"'\");\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}","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\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}","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}","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\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\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+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\" > </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\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'> – </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+\" </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'> </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\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}","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}","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}","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}","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\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}","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};","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\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}","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}","// =============================================================================\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","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","// =============================================================================\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","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 { 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 { 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 { 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 { __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 { 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","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 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};","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)+\" – \"+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}","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","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 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}","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.$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\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\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}","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;\" > </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 { 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) + \" – \" + 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) + \" – \" + 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 = [\" \", \" \"];\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'> – </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 + \" </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}","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}","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'> </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}","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 };","\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;"],"names":["global$1","window","global","dragHighlightPos","scheduler","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","createMarkerConfig","configSettings","sectionId","style","top","left","marginLeft","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","monthViewMarkersArray","weekDates","currDate","Date","valueOf","obj","push","week_start","cells","$container","querySelectorAll","event_attribute","id","i","length","cloneNode","unitMarkersArray","sectionPropertyName","y_property","map_to","formatedSections","String","split","section_delimiter","map","element","elems","columnViewMarkersArray","eventNodes","eventNodeClone","getAttribute","forEach","cfg","attachEvent","mode","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","n","unmarkTimespan","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","get_resulting_options","days","zones","options","type","getZones","ev","timespans","day_index","day_value","timespan_type","s","containers","_props","matrix","container","property","view","linker","_add_timespan_zones","_get_blocked_zones","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","on_overlap","res","temp_start_date","temp_end_date","_marked_timespans","date_part","getDay","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","timeline_zones","blocked_timeline_zones","this","_get_relevant_blocked_zones","resultZones","concat","_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","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","dates","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","document","createElement","innerHTML","appendChild","area","day","blocks","min_date","max_date","date_to_display","min_day","areas","d","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","max","min","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","firstChild","_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","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","unit","_get_unit_index","day_ind","unitsPerDay","floor","_date","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","callback","console","error","$stateProvider","registerProvider","batch_update","noRedraw","dp_mode","call_dp","_dp","updateMode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","render","setCurrentView","updateView","render_data","render_view_data","updateEvent","sendData","initPlugins","deletedEvent","copy","undo_deleted","new_event","message","text","expire","addEvent","limit","batchUpdate","uidSeed","isDate","getFullYear","getMonth","utils","mixin","source","force","f","object","result","isArray","pop","Function","prototype","toString","constructor","Number","Boolean","varType","Object","defined","delay","timeout","timer","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","extend","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","renderCalendar","navigation","handler","calendar","html_element","renderElement","renderer","rows","cols","value","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","body","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","$destroyed","a","b","newSize","triggerSchedulerResize","$root","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","EventHost","_silent_mode","listeners","_silentStart","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","attachAll","name","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","addEventListener","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","detach","detachAll","staticArray","_eventRemoveAll","_createDomEventScope","_trim","str","trim","replace","_isDate","_isObject","getClassName","node","baseVal","locateCss","classname","strict","trg","srcElement","ind","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","hasHref","nodeName","loLowerCase","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","contains","getFocusableNodes","nodes","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","serialized","encodeURIComponent","JSON","stringify","generateStringToDate","format","utc","splt","mask","match","code","csp_str_to_date","set","temp","locale","month_short_hash","month_full_hash","UTC","cspEnabled","useCsp","csp","init","month_short","month_full","old","setSeconds","setMilliseconds","setTime","getTime","time_part","getTimezoneOffset","shift","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","parseYMD","parseMDY","parseDMY","dateString","parse_exact_format","datestr","nday","first_thursday","year_number","ordinal_date","convert_to_utc","getSerializator","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_load_mode","lf","templates","load_format","cache_line","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","events","dhx_security","collections","collections_loaded","collection","option","option_key","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","parse_date","dh","dm","utcMark","dy","dn","dd","server_utc","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","_after_call","_tagvalue","_init_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","load","setLoadMode","array","show_loading","_x","_y","_obj","_init_touch_events","touch","MSStream","platform","maxTouchPoints","scroll_width","_mobile","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","names","accessor","ignore","tracker","drag_mode","scroll_mode","action_mode","dblclicktime","attachTouchEvent","_is_lightbox_open","passive","drag_cancel","_hide_global_tip","_on_mouse_up","_temp_touch_block","_drag_pos","_pointerDragId","acc","dnd","timeline","original_render","drag_id","getEvents","_sorder","_count","_on_mouse_move","preventDefault","cancelBubble","_update_global_tip","abs","fake_event","pointerId","_click","dhx_cal_data","_on_dbl_click","_block_next_stop","touch_drag","actTask","_locate_event","fakeTask","sourceTask","_ignore_next_click","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","event_header","day_date","labels","drag_to_create","drag_to_move","calculatedMaterial","cachedBorderBoxValue","checkIfBorderBoxStyling","_is_material_skin","probe","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","flatSkinHourScale","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","_build_skin_info","clearInterval","monitorIntervalId","setInterval","csstheme","setSkin","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","_theme_info","theme","cssVarTheme","values","themeVariables","_configure","col","_skin_init","hour_scale","hour_date","_old_month_day","month_day","old_month_day","dhx_cal_today_button","tab","header","tabs","specialTabs","tabName","find","filter","firstTab","reverse","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_new_event","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","deleteEvent","_add_rec_marker","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","keyCode","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","_waiAria","messageButtonAttrString","getFirstDefined","_createBox","ok","cancel","contentId","messageModalAttr","inner","title","content","message_ok","message_cancel","buttons","btn","getElementById","hidden","focus","alertPopup","confirmPopup","boxPopup","box_params","params","focusable","messageInfoAttr","timers","pull","seed","hideAll","popups","alert","confirm","modalbox","setTransactionMode","total","headers","payload","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","method","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","catch","valid","_forEachUpdatedRow","_getAllData","out","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","_is_virtual_event","_set_event_text_style","r","cssText","event_updated","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","func","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","item","processedItem","prop","formatDate","_prepareItemForJson","_prepareItemForForm","_prepareDataItem","dataItem","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","prev","year","month","hour","minute","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","cs","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","DatePicker","modes","currentRange","eventDates","filterDays","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","_toggleMode","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","weekLength","children","setProperty","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProviders","internal","provider","unregisterProvider","commonViews","agenda","grid","week_agenda","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","exportToPNG","exportToPDF","nav_bar","_detachDomEvent","_init_once","scheduler_resize_listener","hasSchedulerMarkup","wai_aria_application_role","views","_grid","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","edit_save","edit_cancel","functor","scale_x","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","prepareValue","prepared","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","differenceInDays","_select_id","_close_not_saved","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","icon","def_step","dhx_cal_tab","deprecated_name","substring","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","base","duration","event_duration","time_step","start_hour","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","_colsS","$domHelpers","dataArea","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","title_confirm_closing","positive_closing","_correct_shift","back","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","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","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","maxY","precisePos","minDate","preciseDate","cursor","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","drag_event_body","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_reset_ignores","_reset_scale","isViewExists","_set_aria_buttons_attrs","buttonGroups","group","headerButtonsAttributes","icon_form","oldClass","newClass","multidayScroll","dhx_multi_day","prev_scroll","preserve_scroll","_dy_shift","headerToggleState","_render_x_header","offset_top","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","count","count_n","_get_timeunit_start","_get_view_end","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","scales","cls","firstHalf","slotDate","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","_getNavDateElement","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","hiddenWidth","c2","cc","hourScaleAttr","scroll_hour","now_date","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","lightbox","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","getHeaderCellAttr","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","agendaDetailsBtnString","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","buttonLabel","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","dom","assert","show_errors","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","$","counter","Promise","clearAll","createConfig","async","serializeRequestParams","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xpathExp","docObj","selectNodes","first","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","readyState","filePath","open","toUpperCase","send","$ajax","default_date","month_date","load_date","week_date","date_format","api_date","day_column_padding","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","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","$initial","xml_date","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","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","clear_view","extra_data","silent","setEvent","hash","create_getter","create_setter","is_visible_events","clear_event","evFirstHour","evLastHour","lastHour","checkEndDate","get_visible_events","only_timed","filter_event","_is_main_area_event","hold","full","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_table","_pre_render_events_line","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","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","weekCellIndex","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","zIndex","color","tplClass","_editor","shiftKey","ariaAttr","icons","icons_str","currentIcon","textColor","highlightEventPosition","contentA","contentB","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","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","getLightboxRoot","cspEnvironment","salesforceEnvironment","_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","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","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","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","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","inputBlock","fallback","inputId","old_id","getRootView","hooks","didInsert","cmp","skins","jQuery","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","oldDate","oldMode","updateFlags","lazy_updateView","ars","createDataProcessor","tMode","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","multisection","isMultisectionEvent","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","ctrlKey","metaKey","_buffer_event","_key_nav_copy_paste","getActiveNode","new_ev","scheduler_handlers","attachSchedulerHandlers","waitCall","keyDownHandler","focusHandler","keepScrollPosition","focusGlobalNode","enable","reFocusActiveNode","activeNode","isValid","MinicalButton","MinicalCell","mousedownHandler","dataAreaClick","listOfScales","some","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","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","resolveAddress","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","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","equals","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","toOrdinal","date2","differencems","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","clone","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","IterResult","_result","before","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","l","Frequency","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","number","numberAsText","every","at","the","second","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","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","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","o","realCallback","delimiter","finalDelimiter","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","name_1","v","acceptNumber","expect","parseText","ttr","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","decodeNTH","MDAYs","decodeM","S","freqIsDailyOrGreater","fromText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","minutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","Days","parseIndividualNumber","optionKey","parts","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","tzOffset","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","all","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","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","mmask","mdaymask","nmdaymask","mrange","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","Iterinfo","rebuild","lastyear","yearinfo","lastmonth","monthinfo","nwdaymask","ranges","eastermask","g","yearStart","ydayset","mdayset","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","timeset","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","millisecondModulo","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","toText","isFullyConvertibleToText","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","_b","parms","rdateTzid","parseRDate","rrulestr","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rdateval","parm","createGetterSetter","fieldName","field","_rrule","field_1","_rdate","_exrule","_exdate","_exdateHash","_accept","evalExdate","zonedDate","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","rule","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","show","tooltip_timeout","tooltip_hide_timeout","gplExtensions","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","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","_agendaScrollTop","agenda_area","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","ignore_agenda","renderDay","calendarEvent","selectedId","all_timed_month","is_event_short","_safe_copy","proto","isPrototypeOf","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","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","recurring_event_id","_roll_back_dates","_check_sections_collision","evs_dates","getRecDates","tevs","concurrent","_pid_time","checked_mode","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","year_y","cur_height","week_agenda_scale_height","eventsContainer","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","cookie_param","old_load","drag_between","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","selected_id","addOption","disable","selectOption","setComboValue","all_options","single_option","getIndexByValue","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","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","getTimeline","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","info","_plain_export_copy","$text","_create_hidden_form","submit","_hidden_export_form","_get_export_size","footer","A5","A4","A3","A2","A1","A0","dataX","cSize","parseFloat","smartRendering","initialSizes","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","grid_view","html_templates","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","createCommand","modifiers","alt","ctrl","meta","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","printableKey","fromCharCode","getHashFromEvent","getHash","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","_handlers","doAction","returnValue","bindAll","initKeys","nextItem","currentFocus","currentIndex","renderMultiple","currentStart","currentEnd","_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","tempStart","tempEnd","_timeline_getX","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","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","globalNode","_getGrid","_getNode","enabled","newRow","newCol","blurNode","editor","defaultPrevented","schedulerNode","_timeout","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","cellIndex","td","renderMinical","cal","added","destroyMinical","_def_count","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","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","setupMapView","createAdapter","unmodifiedEvent","_eventLocationChanged","map_settings","resolve_event_location","_latLngUpdate","addEventWithLocation","updateEventMarker","newIdEvent","removeEventMarker","addEventMarker","onEventClick","coordinates","map_view_provider","currentAdapter","resolve_user_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","dblclick_dhx_map_area","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","_selected_event_id","ariaButtonAttr","clearEventMarkers","map_end","mapContainer","adapter","elem_id","marginRight","marginTop","destroy","initialize","geolocation","getCurrentPosition","coords","_updateEventLocation","_event_resolve_delay","ret","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","_render_calendar","unmarkCalendar","cont","tpos","_get_def_cont","$dom","dateAttribute","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","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","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_children","_mark_inputs","_ids","script_url","divLoading","multisource","mvc","update_timer","use_id","sanitize","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","last_event","dragger","dhtmlDragAndDropObject","stopDrag","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","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_end","xml_top","profile","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","to_pdf","objects","getPDFData","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","fitQIInsideWindow","quickInfoPopup","popupRect","offsetBottom","getPositionInsideScheduler","_$quickInfoHandler","eventElement","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","_quick_info_onscroll_handler","$testmode","_qi_button_click","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","txt_replace","txts","txtt","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","originalForm","readonlyForm","_lightbox_r","clearMilliseconds","isSeries","toUTCDate","old_add_event","groupExceptions","exceptions","original_start","_rec_temp","_rec_markers_pull","_rec_markers","_get_rec_marker","ch","_get_rec_markers","ev_id","_ignore_call","tev","_pid_changed","_is_modified_occurence","idTimestamp","nid","nev","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","repeat_date","old_update_event","toIcalString","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","non_render","maxCount","seriesExceptions","utcStart","parsedRRule","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","jsDaysToRRULEDays","RruleDayNumsToJs","formatDayNumber","repeat_monthly_date","repeat_monthly_weekday","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","formatFunc","endRule","NEVER","fillInDefaults","dayNum","dayLabel","dateOfMonth","nthWeekDayOfMonth","dateOfYear","nthWeekDayOfYear","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getFirstSectionOfType","rec","_get_node","_outer_html","loc","_init_set_value","_ds","weekly","monthly","yearly","_rec_init_done","rf","blocked","rruleset","topOption","rruleObj","untilDate","customFreq","actual_dates","timeControl","getTimeSection","recurrence","_start","recurring_legacy","getRecurringSection","occurrence_timestamp_in_utc","outerHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","date_str","register_els","inps","change_current_view","set_end_rule","_get_repeat_code","get_rcode","str_date","transpose_type","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","_set_repeat_code","MouseEvent","elements","_toggle_block","_get_button","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","targetEventId","s2d","d2s","select_event","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","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"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","x_google_ignoreList":[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111]}
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 1 × Files: 7
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
sources
DIR
-
drwxr-xr-x
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.css
115.32 KB
lrw-r--r--
2026-04-28 09:11:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.d.ts
62.97 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.es.d.ts
62.97 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.es.js
642.74 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.es.js.map
1.71 MB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.js
504.70 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.js.map
1.69 MB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).