{"version":3,"file":"dhtmlxscheduler.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/core/virtual_events_helpers.js","../sources/ext/drag_between.js","../sources/ext/keyboard_navigation/modals.js","../sources/ext/keyboard_navigation/key_nav_legacy.js","../sources/ext/keyboard_navigation/scheduler_handlers.js","../sources/legacy/dhtmlx_error.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/timeline/autoscroll.js","../sources/ext/timeline/rtl_scroll_helper.js","../sources/ext/tooltip/tooltip.ts","../sources/ext/tooltip/tooltipManager.ts","../sources/ext/extensions_all.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/daytimeline.js","../sources/ext/editors.js","../sources/ext/expand.js","../sources/ext/export_api/index.js","../sources/ext/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/legacy.js","../sources/legacy/dhtmlxcommon.js","../sources/ext/limit.js","../sources/ext/map_view/index.ts","../sources/ext/minical.js","../sources/ext/monthheight.js","../sources/ext/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/timeline.js","../sources/ext/timeline/timeline_smart_render.js","../sources/ext/tooltip/index.ts","../sources/ext/treetimeline.js","../sources/ext/units.js","../sources/ext/url.js","../sources/ext/week_agenda.js","../sources/ext/wp.js","../sources/ext/year_view.js","../sources/dhtmlxscheduler.enterprise.js","../sources/scheduler_factory.js"],"sourcesContent":["\n/* eslint-disable no-restricted-globals */\nvar globalScope;\nif(typeof window !== \"undefined\"){\n\tglobalScope = window;\n}else{\n\tglobalScope = global;\n}\n/* eslint-enable no-restricted-globals */\n\nexport default globalScope;","export default function dragHighlightPos(scheduler){\n let dndMarkers = [];\n let dragStarted = false;\n let eventNode = null;\n let event = null;\n\n function isEnabled() { \n return scheduler.config.drag_highlight && scheduler.markTimespan;\n }\n\n function checkViewName(viewName){\n const viewObj = scheduler.getView(viewName);\n if(viewObj){\n return viewObj.layout;\n }\n return viewName;\n }\n\n function checkSectionPropertyName(viewName){\n const viewObj = scheduler.getView(viewName);\n if(viewObj.y_property){\n return viewObj.y_property;\n }\n if(viewObj.map_to){\n return viewObj.map_to;\n }\n }\n\n function setRequiredStylesToMarker(eventNode, layout){\n switch (layout) {\n case \"month\":\n eventNode.style.top = \"\";\n eventNode.style.left = \"\";\n break;\n case \"timeline\":\n eventNode.style.left = \"\";\n eventNode.style.marginLeft = \"1px\";\n break;\n default:\n eventNode.style.top = \"\";\n break;\n }\n }\n \n function createMarkerConfig(configSettings){\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\n setRequiredStylesToMarker(eventNode, layout);\n const sections = {};\n let markerObject = {\n start_date: event.start_date,\n end_date: event.end_date,\n css: \"dhx_scheduler_dnd_marker\",\n html: eventNode\n };\n if (layout == \"timeline\" || layout == \"month\" ){\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\n }\n if (sectionId){\n sections[viewName] = sectionId;\n markerObject.sections = sections;\n }\n return markerObject;\n }\n\n function createViewMarker(settings){\n const { layout } = settings;\n let markerConfigs;\n switch (layout) {\n case \"month\": \n markerConfigs = getMonthViewMarkers(settings);\n break;\n case 'timeline':\n case 'units':\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\n break;\n default: \n markerConfigs = getColumnViewMarkers(settings);\n break;\n }\n markerConfigs.forEach((cfg) => {\n dndMarkers.push(scheduler.markTimespan(cfg));\n });\n }\n\n function getColumnViewMarkers(settings){\n const {event, layout, viewName, sectionId} = settings;\n let columnViewMarkersArray = [];\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\n if(eventNodes){\n for (let i = 0; i < eventNodes.length; i++) {\n let eventNodeClone = eventNodes[i].cloneNode(true);\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\n let dates = {start_date: startDate, end_date: endDate};\n const configSettings = {\n event: dates, \n layout, \n viewName, \n sectionId, \n eventNode:eventNodeClone\n };\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\n }\t\n }\n return columnViewMarkersArray;\n }\n\n function getMonthViewMarkers(settings){\n let monthViewMarkersArray = [];\n const {event, layout, viewName, sectionId} = settings;\n const weekDates = [];\n let currDate = new Date(event.start_date);\n while(currDate.valueOf() < event.end_date.valueOf()){\n let obj = {start_date: currDate};\n weekDates.push(obj);\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\n }\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\n for (let i = 0; i < cells.length; i++) {\n const configSettings = {\n event: weekDates[i], \n layout, \n viewName, \n sectionId, \n eventNode: cells[i].cloneNode(true)\n };\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\n }\n return monthViewMarkersArray;\n }\n\n function getTimelineAndUnitsViewMarkers(settings){\n let unitMarkersArray = [];\n const {event, layout, viewName, eventNode} = settings;\n let sectionPropertyName = checkSectionPropertyName(viewName);\n if (sectionPropertyName){\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\n const formatedSections = sections.map(element => String(element));\n const elems = [];\n for (let i = 0; i < formatedSections.length; i++) {\n elems[i] = eventNode.cloneNode(true);\n const configSettings = {\n event, \n layout, \n viewName, \n sectionId: formatedSections[i],\n eventNode: elems[i]\n };\n unitMarkersArray.push(createMarkerConfig(configSettings));\n }\n }\n return unitMarkersArray;\n }\n \n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\n if (isEnabled()) {\n dragStarted = true;\n event = scheduler.getEvent(id);\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\n const viewName = scheduler.getState().mode;\n const layout = checkViewName(viewName);\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\n scheduler.unselect(id);\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\n }\n }\n return true;\n });\n\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\n if(dragStarted && isEnabled()){\n dragStarted = false;// insert element only once after dnd start\n const viewName = scheduler.getState().mode;\n const layout = checkViewName(viewName);\n const sectionId = scheduler.getActionData(e).section;\n if (event) {\n const settings = {\n event, \n layout, \n viewName, \n sectionId, \n eventNode\n };\n createViewMarker(settings);\n }\n }\n });\n\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\n for (let i = 0; i < dndMarkers.length; i++) {\n scheduler.unmarkTimespan(dndMarkers[i]);\n }\n dndMarkers = [];\n eventNode = null;\n event = null;\n });\n}","export default function limitPlugin(scheduler){\n\n\n\tscheduler.config.mark_now = true;\n\tscheduler.config.display_marked_timespans = true;\n\tscheduler.config.overwrite_marked_timespans = true;\n\n\n\tvar dhx_time_block = \"dhx_time_block\";\n\tvar default_timespan_type = \"default\";\n\tvar fix_options = function(options, days, zones) {\n\t\tif (days instanceof Date && zones instanceof Date) {\n\t\t\toptions.start_date = days;\n\t\t\toptions.end_date = zones;\n\t\t} else {\n\t\t\toptions.days = days;\n\t\t\toptions.zones = zones;\n\t\t}\n\t\treturn options;\n\t};\n\tvar get_resulting_options = function(days, zones, sections) {\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\n\t\toptions.type = dhx_time_block;\n\t\toptions.css = \"\";\n\t\tif (zones) {\n\t\t\tif (sections)\n\t\t\t\toptions.sections = sections;\n\t\t\toptions = fix_options(options, days, zones);\n\t\t}\n\t\treturn options;\n\t};\n\tscheduler.blockTime = function(days, zones, sections){\n\t\tvar options = get_resulting_options(days, zones, sections);\n\t\treturn scheduler.addMarkedTimespan(options);\n\t};\n\tscheduler.unblockTime = function(days, zones, sections) {\n\t\tzones = zones || \"fullday\";\n\t\tvar options = get_resulting_options(days, zones, sections);\n\t\treturn scheduler.deleteMarkedTimespan(options);\n\t};\n\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\n\t\ttimespan_type = timespan_type || default_timespan_type;\n\n\t\tvar res = true;\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\n\t\tvar timespans = scheduler._marked_timespans;\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\") ) {\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\n\t\t\tvar day_index = temp_start_date.getDay();\n\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\n\t\t\tif (zones){\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\n\n\t\t\t\t\t// they may change for new event if it passes limit zone\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\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);\n\n\t\t\t\t\tvar markerStart = zones[i];\n\t\t\t\t\tvar markerEnd = zones[i+1];\n\t\t\t\t\tif (markerStarteventStart) {\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\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\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tres = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!res)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn !res;\n\t};\n\tscheduler.checkLimitViolation = function(event){\n\t\tif(!event)\n\t\t\treturn true;\n\t\tif (!scheduler.config.check_limits)\n\t\t\treturn true;\n\t\tvar s = scheduler;\n\t\tvar c = s.config;\n\t\tvar evs = [];\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\n\t\t\tif ((c.limit_start && c.limit_end)) {\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\n\t\t\t\treturn recEventInLimits;\n\t\t\t} else return true;\n\t\t} else {\n\t\t\tevs = [event];\n\t\t}\n\n\t\tvar complete_res = true;\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\n\t\t\tif (res){\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\n\t\t\t\t\t//try crop event to allow placing\n\t\t\t\t\tvar allow = true;\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\n\t\t\t\t\t\t\tallow = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tallow = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tallow = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn allow;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!res) {\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\n\t\t\t}\n\t\t\tcomplete_res = complete_res && res;\n\t\t}\n\t\tif(!complete_res){\n\t\t\ts._drag_id = null;\n\t\t\ts._drag_mode = null;\n\t\t}\n\t\treturn complete_res;\n\n\n\t};\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\n\t\tvar zones =[];\n\t\tif (timespans && timespans[property]) {\n\t\t\tvar timeline_zones = timespans[property];\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\n\t\t\t\t\tif(view.size && view.options.length){\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\n\t\t\t\t\t}\n\t\t\t\t\tstart_index = day_index;\n\t\t\t\t\tend_index = day_index + units_l;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tstart_index = 0;\n\t\t\t\t\tend_index = start_index + units_l;\n\t\t\t\t}\n\n\t\t\t\tvar r_divs = [];\n\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\n\t\t\t\t\toptions.days = t_day;\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\n\t\t\t\t\tr_divs.push(t_div);\n\t\t\t\t}\n\t\t\t\treturn r_divs;\n\t\t\t} else { // day/week views\n\t\t\t\toptions.days = day_index;\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._mode == \"month\") {\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\n\t\t\t}\n\t\t}\n\t};\n\tscheduler._remove_mark_now = function() {\n\t\tvar dhx_now_time = 'dhx_now_time';\n\t\tvar els = this._els[dhx_now_time];\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\n\t\t\treturn r_configs; // incorrect config was provided\n\n\t\tvar min = 0;\n\t\tvar max = 24*60;\n\t\tif (config.zones == \"fullday\")\n\t\t\tconfig.zones = [min, max];\n\t\tif (config.zones && config.invert_zones) {\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\n\t\t}\n\n\t\tconfig.id = scheduler.uid();\n\t\tconfig.css = config.css||\"\";\n\t\tconfig.type = config.type||default_timespan_type;\n\n\t\tvar sections = config.sections;\n\t\tif (sections) {\n\t\t\tfor (var view_key in sections) {\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\n\t\t\t\t\tvar ids = sections[view_key];\n\t\t\t\t\tif (!(ids instanceof Array))\n\t\t\t\t\t\tids = [ids];\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\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);\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\n\t\t\t\t\tr_configs.push(t_config);\n\n\t\t\t\t\tt_sd = t_ed;\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (c_config.days instanceof Date)\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\n\t\t\t\tc_config.zones = config.zones.slice();\n\t\t\t\tr_configs.push(c_config);\n\t\t\t}\n\t\t}\n\t\treturn r_configs;\n\t};\n\tscheduler._get_dates_by_index = function(index, start, end) {\n\t\tvar dates = [];\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\n\t\tend = new Date(end||scheduler._max_date);\n\t\tvar start_day = start.getDay();\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\n\t\t\tdates.push(t_date);\n\t\t}\n\t\treturn dates;\n\t};\n\tscheduler._get_css_classes_by_config = function(config) {\n\t\tvar css_classes = [];\n\t\tif (config.type == dhx_time_block) {\n\t\t\tcss_classes.push(dhx_time_block);\n\t\t\tif (config.css)\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\n\t\t}\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\n\t\treturn css_classes.join(\" \");\n\t};\n\tscheduler._get_block_by_config = function(config) {\n\t\tvar block = document.createElement(\"div\");\n\t\tif (config.html) {\n\t\t\tif (typeof config.html == \"string\")\n\t\t\t\tblock.innerHTML = config.html;\n\t\t\telse\n\t\t\t\tblock.appendChild(config.html);\n\t\t}\n\t\treturn block;\n\t};\n\tscheduler._render_marked_timespan = function(options, area, day) {\n\t\tvar blocks = []; // resulting block which will be rendered and returned\n\t\tvar c = scheduler.config;\n\t\tvar min_date = this._min_date;\n\t\tvar max_date = this._max_date;\n\t\tvar day_value = false; // if timespan for specific date should be displayed\n\n\t\tif (!c.display_marked_timespans)\n\t\t\treturn blocks;\n\n\t\t// in case of markTimespan\n\t\tif (!day && day !== 0) {\n\t\t\tif (options.days < 7)\n\t\t\t\tday = options.days;\n\t\t\telse {\n\t\t\t\tvar date_to_display = new Date(options.days);\n\t\t\t\tday_value = +date_to_display;\n\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\n\t\t\t\t\treturn blocks;\n\n\t\t\t\tday = date_to_display.getDay();\n\t\t\t}\n\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)\n\t\t\tvar min_day = min_date.getDay();\n\t\t\tif (min_day > day) {\n\t\t\t\tday = 7 - (min_day-day);\n\t\t\t} else {\n\t\t\t\tday = day - min_day;\n\t\t\t}\n\t\t}\n\t\tvar zones = options.zones;\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\n\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\n\t\t\tvar areas = [];\n\t\t\tvar days = [];\n\n\n\t\t\tif (!area) {\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\n\t\t\t\tfor (var i=0; i < days.length; i++) {\n\t\t\t\t\tareas.push( this._scales[days[i]] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tareas.push(area);\n\t\t\t\tdays.push(day);\n\t\t\t}\n\n\t\t\tfor (var i=0; i < areas.length; i++) {\n\t\t\t\tarea = areas[i];\n\t\t\t\tday = days[i];\n\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\n\n\t\t\t\tif(this._ignores[sday]) continue;\n\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\n\t\t\t\tblock_proto.className = css_classes;\n\t\t\t\tblock_proto.style.top = \"0px\";\n\t\t\t\tblock_proto.style.height = \"100%\";\n\t\t\t\t\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\n\t\t\t\t\tvar start = zones[i];\n\t\t\t\t\tvar end = zones[i+1];\n\t\t\t\t\tif (end <= start)\n\t\t\t\t\t\treturn [];\n\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\n\n\t\t\t\t\tblock.style.left = \"0px\";\n\t\t\t\t\tblock.style.width = \"100%\";\n\n\t\t\t\t\tarea.appendChild(block);\n\t\t\t\t\tblocks.push(block);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar index = day;\n\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\n\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\n\t\t\t\tvar view = this._props[this._mode];\n\t\t\t\tindex = view.order[options.sections[this._mode]];\n\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\n\t\t\t\tif(!(view.days > 1)){\n\t\t\t\t\tindex = inner_index;\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\n\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tvar units_l = view.size || view.options.length;\n\t\t\t\t\tindex = index*units_l + inner_index;\n\t\t\t\t}\n\t\t\t}\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\n\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\n\t\t\t\tif (end <= start) {\n\t\t\t\t\tif (i+2 < zones.length)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\telse\n\t\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\n\t\t\t\tblock.className = css_classes;\n\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\n\t\t\t\tvar hour_ms = 60*60*1000;\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\";\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\";\n\n\t\t\t\tarea.appendChild(block);\n\t\t\t\tblocks.push(block);\n\t\t\t}\n\t\t}\n\t\treturn blocks;\n\t};\n\n\tscheduler._mark_timespans = function(){\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\n\t\tvar divs = [];\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\n\t\t\tfor (var day in this._scales) {\n\t\t\t\tvar date = new Date(+day);\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\n\t\t\t}\n\t\t}else {\n\t\t\t//manually trigger rendering of configs for each column\n\t\t\tvar date = new Date(scheduler._min_date);\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\n\t\t\t\tvar area = data.childNodes[i];\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\n\t\t\t}\n\t\t}\n\t\treturn divs;\n\t};\n\n\t// just marks timespan, will be cleaned after refresh\n\tscheduler.markTimespan = function(configuration) {\n\t\tif(!this._els){\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\n\t\t}\n\n\n\t\tvar rebuild_els = false;\n\t\tif(!this._els[\"dhx_cal_data\"]){\n\t\t\tscheduler.get_elements();\n\t\t\trebuild_els = true;\n\t\t}\n\n\n\t\t// backup regular marked timespans\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\n\t\t\ttimespans = scheduler._marked_timespans;\n\n\t\tscheduler.deleteMarkedTimespan();\n\n\t\t//add block to configs\n\t\tscheduler.addMarkedTimespan(configuration);\n\n\t\tvar divs = scheduler._mark_timespans();\n\n\t\tif(rebuild_els)\n\t\t\tscheduler._els = [];\n\n\t\t// restore timespan config\n\t\tscheduler._marked_timespans_ids = timespans_ids;\n\t\tscheduler._marked_timespans_types = timespan_types;\n\t\tscheduler._marked_timespans = timespans;\n\n\t\treturn divs;\n\t};\n\tscheduler.unmarkTimespan = function(divs) {\n\t\tif (!divs)\n\t\t\treturn;\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\n\t\t\t\t\ti -= 2;\n\t\t\t\t} else {\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\n\t\t\t\t}\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn resulting_zones;\n\t};\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\n\t\tvar resulting_zones = current_zones.slice();\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\n\t\t\t\t\tvar is_modified = false;\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\n\t\t\t\t\t}\n\t\t\t\t\tif (c_zone_start < zone_start) {\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\n\t\t\t\t\t\tis_modified = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (c_zone_end > zone_end) {\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\n\t\t\t\t\t}\n\t\t\t\t\ti -= 2;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn resulting_zones;\n\t};\n\tscheduler.invertZones = function(zones) {\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\n\t};\n\tscheduler._delete_marked_timespan_by_id = function(id) {\n\t\tvar configs = scheduler._marked_timespans_ids[id];\n\t\tif (configs) {\n\t\t\tfor (var i=0; i 1)){\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\n\t\t\t}else{\n\t\t\t\tvar dx = 24*60*60*1000;\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\n\t\t\t\tvar unitsPerDay = view.size || units.length;\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\n\t\t\t\tday = scheduler.date.date_part(day);\n\t\t\t}\n\t\t\tday_index = day.getDay();\n\t\t\tday_value = day.valueOf();\n\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\n\t\t\t}\n\t\t}\n\n\t\tvar global_data = timespans[\"global\"];\n\n\t\tif(scheduler.config.overwrite_marked_timespans){\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\n\t\t} else {\n\t\t\tif(global_data[day_value]){\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\n\t\t\t}\n\t\t\tif(global_data[day_index]){\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\n\t\t\t}\n\t\t}\n\n\t\tfor (var i=0; i {\n\t\t\tif(date){\n\t\t\t\tcalls.setModeDate.date = date;\n\t\t\t}\n\t\t\tif(mode){\n\t\t\t\tcalls.setModeDate.mode = mode;\n\t\t\t}\n\t\t};\n\n\t\tvar methods = {\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\n\t\t\trender_data:() => calls.needRender = true,\n\t\t\trender_view_data:(evs) => { \n\t\t\t\tif(evs && evs.length){\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\n\t\t\t\t}else{\n\t\t\t\t\tcalls.needRender = true;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tdisableMethods.call(this, methods);\n\n\t\tisActive = true;\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\n\n\t\tbatchUpdatePayload(callback);\n\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\n\n\t\trestoreMethods.call(this);\n\n\t\tisActive = false;\n\t\tif(!noRedraw){\n\t\t\tif(calls.needRender){\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\n\t\t\t}else if(calls.needUpdateView){\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\n\t\t\t}else{\n\t\t\t\tfor(const i in calls.repaintEvents){\n\t\t\t\t\tscheduler.updateEvent(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (call_dp) {\n\t\t\tthis._dp.setUpdateMode(dp_mode);\n\t\t\tthis._dp.sendData();\n\t\t}\n\t};\n}\n\nexport default function(scheduler){\n\tscheduler.batchUpdate = createMethod(scheduler);\n}","import dragHighlightPos from \"./drag_highlight_pos\";\nimport undoDelete from \"./undo_delete\";\nimport limit from \"./limit\";\nimport batchUpdate from \"./batch_update\";\n\nexport default function initPlugins(scheduler){\n undoDelete(scheduler);\n dragHighlightPos(scheduler);\n limit(scheduler);\n batchUpdate(scheduler);\n}","export default function undoDelete(scheduler) {\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\n\t\tlet deletedEvent = scheduler.copy(ev);\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\n\t\t\tscheduler.message({\n\t\t\t\ttext: `
\n Event deleted\n \n
`,\n\t\t\t\texpire: 10000,\n\t\t\t\ttype: \"popup_after_delete\",\n\t\t\t\tcallback: function (e) {\n\t\t\t\t\tlet undoBtn = e.target.closest(\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\n\t\t\t\t\t);\n\t\t\t\t\tif (undoBtn) {\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\n\t\t\t\t\t\tscheduler.render();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n","var uidSeed = Date.now();\nfunction uid () {\n\treturn uidSeed++;\n}\n\n// iframe-safe array type check instead of using instanceof\nfunction isArray(obj){\n\tif(Array.isArray){\n\t\treturn Array.isArray(obj);\n\t}else{\n\t\t// close enough\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\n\t}\n}\n\n// non-primitive string object, e.g. new String(\"abc\")\nfunction isStringObject(obj){\n\treturn obj && typeof obj === \"object\" && \n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Number(5)\nfunction isNumberObject(obj){\n\treturn obj && typeof obj === \"object\" && \n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Boolean(true)\nfunction isBooleanObject(obj){\n\treturn obj && typeof obj === \"object\" &&\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\n}\n\nfunction isDate(obj) {\n\tif (obj && typeof obj === \"object\") {\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\n\t} else {\n\t\treturn false;\n\t}\n}\n\nfunction defined(obj) {\n\treturn typeof(obj) != \"undefined\";\n}\n\nfunction delay (callback, timeout){\n\tvar timer;\n\n\tvar result = function() {\n\t\tresult.$cancelTimeout();\n\t\tresult.$pending = true;\n\t\tvar args = Array.prototype.slice.call(arguments);\n\t\ttimer = setTimeout(function(){\n\t\t\tcallback.apply(this, args);\n\t\t\tresult.$pending = false;\n\t\t}, timeout);\n\t};\n\n\tresult.$pending = false;\n\tresult.$cancelTimeout = function(){\n\t\tclearTimeout(timer);\n\t\tresult.$pending = false;\n\t};\n\tresult.$execute = function(){\n\t\tvar args = Array.prototype.slice.call(arguments);\n\t\tcallback.apply(this, args);\n\t\tresult.$cancelTimeout();\n\t};\n\n\treturn result;\n}\n\nexport default {\n\tuid: uid,\n\tmixin: function mixin (target, source, force){\n\t\tfor (var f in source)\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\n\t\treturn target;\n\t},\n\tcopy: function copy(object) {\n\t\tvar i, result; // iterator, types array, result\n\t\n\t\tif (object && typeof object == \"object\") {\n\t\n\t\t\tswitch (true){\n\t\t\t\tcase (isDate(object)):\n\t\t\t\t\tresult = new Date(object);\n\t\t\t\t\tbreak;\n\t\t\t\tcase (isArray(object)):\n\t\t\t\t\tresult = new Array(object.length);\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\n\t\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase (isStringObject(object)):\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\n\t\t\t\t\tbreak;\n\t\t\t\tcase (isNumberObject(object)):\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\n\t\t\t\t\tbreak;\n\t\t\t\tcase (isBooleanObject(object)):\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tresult = {};\n\t\t\t\t\tfor (i in object) {\n\t\t\t\t\t\tconst varType = typeof object[i];\n\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\n\t\t\t\t\t\t\tresult[i] = object[i];\n\t\t\t\t\t\t} else if(isDate(object[i])){\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn result || object;\n\t},\n\tdefined,\n\tisDate,\n\tdelay\n};\n","export default function extend(scheduler) {\n\nfunction div(className){\n\tvar element = document.createElement(\"div\");\n\tvar classes = (className || \"\").split(\" \");\n\tclasses.forEach(function(cssClass){\n\t\telement.classList.add(cssClass);\n\t});\n\treturn element;\n}\nvar itemTypes = {\n\trows_container: function(){\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\n\t},\n\trow: function(){\n\t\treturn div(\"dhx_cal_navbar_row\");\n\t},\n\tview: function (config) {\n\t\tvar element = div(\"dhx_cal_tab\");\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\n\t\telement.setAttribute(\"data-tab\", config.view);\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\n\t\tif(scheduler.config.fix_tab_position){\n\t\t\tif(config.$firstTab) {\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\n\t\t\t}else if(config.$lastTab) {\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\n\t\t\t} else if(config.view !== \"week\") {\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\n\t\t\t}\n\n\t\t\tif(config.$segmentedTab) {\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\n\t\t\t}\n\t\t}\n\t\treturn element;\n\t},\n\tdate: function () {\n\t\treturn div(\"dhx_cal_date\");\n\t},\n\tbutton: function (config) {\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\n\t},\n\tbuiltInButton: function (config){\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\n\t},\n\tspacer: function () {\n\t\treturn div(\"dhx_cal_line_spacer\");\n\t},\n\tminicalendarButton: function(config){\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\n\t\t\t\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\n\t\t\t\tif (scheduler.isCalendarVisible()) {\n\t\t\t\t\tscheduler.destroyCalendar();\n\t\t\t\t} else {\n\t\t\t\t\tscheduler.renderCalendar({\n\t\t\t\t\t\tposition: this,\n\t\t\t\t\t\tdate: scheduler.getState().date,\n\t\t\t\t\t\tnavigation: true,\n\t\t\t\t\t\thandler: function (date, calendar) {\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn minicalendarDiv;\n\t},\n\thtml_element: function (config) {\n\t\treturn div(\"dhx_cal_nav_content\");\n\t}\n};\n\nfunction findRenderer(config) {\n\tvar renderer;\n\tif (config.view) {\n\t\tswitch (config.view){\n\t\t\tcase \"today\":\n\t\t\tcase \"next\":\n\t\t\tcase \"prev\":\n\t\t\t\trenderer = itemTypes.builtInButton;\n\t\t\t\tbreak;\n\t\t\tcase \"date\":\n\t\t\t\trenderer = itemTypes.date;\n\t\t\t\tbreak;\n\t\t\tcase \"spacer\":\n\t\t\t\trenderer = itemTypes.spacer;\n\t\t\t\tbreak;\n\t\t\tcase \"button\":\n\t\t\t\trenderer = itemTypes.button;\n\t\t\t\tbreak;\n\t\t\tcase \"minicalendar\":\n\t\t\t\trenderer = itemTypes.minicalendarButton;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\trenderer = itemTypes.view;\n\t\t\t\tbreak;\n\t\t}\n\t} else if(config.rows) {\n\t\trenderer = itemTypes.rows_container;\n\t} else if(config.cols) {\n\t\trenderer = itemTypes.row;\n\t}\n\treturn renderer;\n}\n\nfunction renderElement(config){\n\tvar renderer = findRenderer(config);\n\tif(!renderer){\n\t\treturn;\n\t}\n\tvar element = renderer(config);\n\tif(config.css){\n\t\telement.classList.add(config.css);\n\t}\n\tif(config.width){\n\t\tvar value = config.width;\n\t\tif(value === value * 1){\n\t\t\tvalue += \"px\";\n\t\t}\n\t\telement.style.width = value;\n\t}\n\tif(config.height){\n\t\tvar value = config.height;\n\t\tif(value === value * 1){\n\t\t\tvalue += \"px\";\n\t\t}\n\t\telement.style.height = value;\n\t}\n\tif (config.click) {\n\t\tscheduler.event(element, \"click\", config.click);\n\t}\n\tif (config.html) {\n\t\telement.innerHTML = config.html;\n\t}\n\n\tif (config.align) {\n\t\tvar value = \"\";\n\t\tif (config.align == \"right\") {\n\t\t\tvalue = \"flex-end\";\n\t\t} else if(config.align == \"left\") {\n\t\t\tvalue = \"flex-start\";\n\t\t}\n\t\telement.style.justifyContent = value;\n\t}\n\treturn element;\n}\n\nfunction prepareConfig(config) {\n\tif (typeof config === \"string\") {\n\t\tconfig = {\n\t\t\tview: config\n\t\t};\n\t}\n\tif (!config.view && !config.rows && !config.cols) {\n\t\tconfig.view = \"button\";\n\t}\n\treturn config;\n}\n\nfunction renderLayout(config) {\n\tvar fragment = document.createDocumentFragment();\n\tvar items;\n\tif(Array.isArray(config)){\n\t\titems = config;\n\t}else{\n\t\titems = [config];\n\t}\n\n\tfor (var i = 0; i < items.length; i++) {\n\t\tvar view = prepareConfig(items[i]);\n\n\t\tif(view.view === \"day\" && items[i + 1]){\n\t\t\tvar next = prepareConfig(items[i + 1]);\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\n\t\t\t\tview.$firstTab = true;\n\t\t\t\tview.$segmentedTab = true;\n\t\t\t}\n\t\t}\n\n\t\tif(view.view === \"week\" && items[i - 1]){\n\t\t\tvar next = prepareConfig(items[i + 1]);\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\n\t\t\t\tview.$segmentedTab = true;\n\t\t\t}\n\t\t}\n\n\t\tif(view.view === \"month\" && items[i - 1]){\n\t\t\tvar next = prepareConfig(items[i - 1]);\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\n\t\t\t\tview.$lastTab = true;\n\t\t\t\tview.$segmentedTab = true;\n\t\t\t}\n\t\t}\n\n\t\tvar element = renderElement(view);\n\n\t\tfragment.appendChild(element);\n\t\tif(view.cols || view.rows){\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\n\t\t}\n\t}\n\treturn fragment;\n}\n\nscheduler._init_nav_bar = function (items) {\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\n\tif (!navBar){\n\t\tnavBar = document.createElement(\"div\");\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\n\t\tscheduler._update_nav_bar(items, navBar);\n\t\treturn navBar;\n\t}\n\treturn navBar;\n};\n\nvar previousNavbar = null;\nvar previousHeight = null;\nscheduler._update_nav_bar = function (config, container) {\n\n\tif(!config){\n\t\treturn;\n\t}\n\tvar heightChanged = false;\n\tvar configChanged = false;\n\n\tvar newHeight = config.height || scheduler.xy.nav_height;\n\n\tif(previousHeight === null ||\n\t\t\t(previousHeight !== newHeight)){\n\t\theightChanged = true;\n\t}\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\n\t\tconfigChanged = true;\n\t}\n\n\tif(heightChanged){\n\t\tscheduler.xy.nav_height = newHeight;\n\t}\n\tif(configChanged){\n\t\tcontainer.innerHTML = \"\";\n\t\tcontainer.appendChild(renderLayout(config));\n\t}\n\n\tif(heightChanged || configChanged){\n\t\tscheduler.unset_actions();\n\t\tscheduler._els = [];\n\t\tscheduler.get_elements();\n\t\tscheduler.set_actions();\n\t}\n\n\tif(newHeight === 0){\n\t\tcontainer.style.display = \"none\";\n\t}else{\n\t\tcontainer.style.display = \"\";\n\t}\n\n\tpreviousHeight = newHeight;\n};\n\n}","export default function extend(scheduler) {\n\n\tfunction isAttachedNode(container){\n\t\tvar root = document.body;\n\t\n\t\twhile(container && container != root){\n\t\t\tcontainer = container.parentNode;\n\t\t}\n\t\n\t\treturn !!(root == container);\n\t}\n\t\n\tfunction getWindowSize(window){\n\t\treturn {\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\n\t\t};\n\t}\n\tfunction equals(a,b){\n\t\treturn a.w == b.w && a.h == b.h;\n\t}\n\t\n\tfunction listenWindowResize(scheduler, window){\n\t\tvar oldSize = getWindowSize(window);\n\t\tvar resizeDelay;\n\t\tscheduler.event(window, \"resize\", function(){\n\t\t\tclearTimeout(resizeDelay);\n\t\t\tresizeDelay = setTimeout(function(){\n\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar newSize = getWindowSize(window);\n\t\t\t\t// element may be resized by container-autoresize exteinsion\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\n\t\t\t\tif (!equals(oldSize, newSize)) {\n\t\t\t\t\toldSize = newSize;\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\n\t\t\t\t}\n\t\t\t}, 150);\n\t\t});\n\t}\n\t\n\tfunction triggerSchedulerResize(scheduler){\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\n\t\t\treturn;\t\n\t\t}\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\n\t\t\tscheduler.updateView();\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\n\t\t}\n\t}\n\t\n\tfunction watchNodeResize(scheduler){\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\n\t\t\n\t\tfunction lowlevelResizeWatcher(){\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn;\t\n\t\t\t}\n\t\t\t\n\t\t\tif(scheduler.$root){\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\n\t\t\t\t}\n\t\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\n\t\t\t}\n\t\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\n\t\t}\n\t\t\n\t\tlowlevelResizeWatcher();\n\t}\n\t\n\tfunction addResizeListener(scheduler){\n\t\tvar root = scheduler.$container;\n\t\tvar containerStyles = window.getComputedStyle(root);\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\n\t\t\troot.style.position = \"relative\";\n\t\t}\n\t\n\t\tvar resizeWatcher = document.createElement('iframe');\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\n\t\tresizeWatcher.tabIndex = -1;\n\t\tif(scheduler.config.wai_aria_attributes){\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\n\t\t}\n\t\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\n\t\tif(salesforce_environment){\n\t\t\twatchNodeResize(scheduler);\n\t\t} else {\n\t\t\troot.appendChild(resizeWatcher);\n\t\t\tif (resizeWatcher.contentWindow) {\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\n\t\t\t} else {\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\n\t\t\t\troot.removeChild(resizeWatcher);\n\t\t\t\tlistenWindowResize(scheduler, window);\n\t\t\t}\n\t\t}\n\t}\n\t\n\taddResizeListener(scheduler);\n\n}","class EventHost {\n\tconstructor(){\n\t\tthis._silent_mode = false;\n\t\tthis.listeners = {};\n\t}\n\t_silentStart(){\n\t\tthis._silent_mode = true;\n\t}\n\t_silentEnd() {\n\t\tthis._silent_mode = false;\n\t}\n}\n\nconst createEventStorage = function(obj) {\n\tlet handlers = {};\n\tlet index = 0;\n\tconst eventStorage = function(){\n\t\tlet combinedResult = true;\n\t\tfor(const i in handlers){\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\n\t\t\tcombinedResult=combinedResult && handlerResult;\n\t\t}\n\t\treturn combinedResult;\n\t};\n\teventStorage.addEvent=function(handler, settings){\n\t\tif (typeof (handler) == \"function\"){\n\t\t\tlet handlerId;\n\t\t\tif(settings && settings.id){\n\t\t\t\thandlerId = settings.id;\n\t\t\t}else{\n\t\t\t\thandlerId = index;\n\t\t\t\tindex++;\n\t\t\t}\n\n\t\t\tif(settings && settings.once){\n\t\t\t\tconst originalHandler = handler;\n\t\t\t\thandler = function(){\n\t\t\t\t\toriginalHandler();\n\t\t\t\t\teventStorage.removeEvent(handlerId);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thandlers[handlerId] = handler;\n\t\t\treturn handlerId;\n\t\t}\n\t\treturn false;\n\t};\n\teventStorage.removeEvent=function(id){\n\t\tdelete handlers[id];\n\t};\n\n\teventStorage.clear = function(){\n\t\thandlers = {};\n\t};\n\n\treturn eventStorage;\n};\n\nfunction makeEventable(obj){\n\n\tconst eventHost = new EventHost();\n\tobj.attachEvent=function(eventName, handler, settings){\n\t\teventName = 'ev_'+eventName.toLowerCase();\n\t\tif (!eventHost.listeners[eventName]){\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\n\t\t}\n\n\t\tif(settings && settings.thisObject){\n\t\t\thandler = handler.bind(settings.thisObject);\n\t\t}\n\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\n\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\n\t\tif(settings && settings.id){\n\t\t\thandlerId = settings.id;\n\t\t}\n\t\treturn handlerId;\n\t};\n\n\tobj.attachAll = function(callback){\n\t\tthis.attachEvent('listen_all', callback);\n\t};\n\n\tobj.callEvent=function(name, eventArguments){\n\t\tif (eventHost._silent_mode) return true;\n\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\n\n\t\tconst listeners = eventHost.listeners;\n\t\tif (listeners['ev_listen_all']){\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\n\t\t}\n\n\t\tif (listeners[handlerName])\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\n\t\treturn true;\n\t};\n\n\tobj.checkEvent=function(name){\n\t\tconst listeners = eventHost.listeners;\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\n\t};\n\n\tobj.detachEvent=function(id){\n\t\tif (id){\n\t\t\tlet listeners = eventHost.listeners;\n\t\t\tfor(const i in listeners){\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\n\t\t\t}\n\n\t\t\tconst list = id.split(':');//get EventName and ID\n\t\t\tlisteners = eventHost.listeners;\n\t\t\tif(list.length === 2){\n\t\t\t\tconst eventName = list[0];\n\t\t\t\tconst eventId = list[1];\n\t\t\t\tif(listeners[eventName]){\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tobj.detachAllEvents = function(){\n\t\tfor (const name in eventHost.listeners) {\n\t\t\teventHost.listeners[name].clear();\n\t\t}\n\t};\n\n}\n\nexport default makeEventable;","export default {\n\tevent: function (el, event, handler){\n\t\tif (el.addEventListener)\n\t\t\tel.addEventListener(event, handler, false);\n\t\n\t\telse if (el.attachEvent)\n\t\t\tel.attachEvent(\"on\"+event, handler);\n\t},\n\teventRemove: function (el, event, handler){\n\t\tif (el.removeEventListener)\n\t\t\tel.removeEventListener(event, handler, false);\n\t\n\t\telse if (el.detachEvent)\n\t\t\tel.detachEvent(\"on\"+event, handler);\n\t}\n};","import createEventScope from './utils/scoped_event';\n\nexport default function extend(scheduler) {\n\n\nvar domEvents = createEventScope();\n\nscheduler.event = domEvents.attach;\nscheduler.eventRemove = domEvents.detach;\nscheduler._eventRemoveAll = domEvents.detachAll;\nscheduler._createDomEventScope = domEvents.extend;\n\n\nscheduler._trim = function(str){\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\n\treturn func.apply(str);\n};\n\nscheduler._isDate = function(obj){\n\tif (obj && typeof obj == \"object\") {\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nscheduler._isObject = function(obj){\n\treturn (obj && typeof obj == \"object\");\n};\n\n}","import defaultDomEvents from './event';\n\nexport default function(){\n\n\tvar domEvents = function (addEvent, removeEvent) {\n\t\taddEvent = addEvent || defaultDomEvents.event;\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\n\t\tvar handlers = [];\n\t\tvar eventScope = {\n\t\t\tattach: function(el, event, callback, capture){\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\n\t\t\t\taddEvent(el, event, callback, capture);\n\t\t\t},\n\t\t\tdetach: function(el, event, callback, capture){\n\t\t\t\tremoveEvent(el, event, callback, capture);\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\t\tvar handler = handlers[i];\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\n\t\t\t\t\t\thandlers.splice(i, 1);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdetachAll: function () {\n\t\t\t\tvar staticArray = handlers.slice();\n\t\t\t\t// original handlers array can be spliced on every iteration\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\n\t\t\t\t\tvar handler = staticArray[i];\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\n\t\t\t\t}\n\t\t\t\thandlers.splice(0, handlers.length);\n\t\t\t},\n\t\t\textend: function(){\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\n\t\t\t}\n\t\t};\n\t\treturn eventScope;\n\t};\n\t\n\treturn domEvents();\n}","//returns position of html element on the page\nfunction elementPosition(elem) {\n\tvar top=0, left=0, right=0, bottom=0;\n\tif (elem.getBoundingClientRect) { //HTML5 method\n\t\tvar box = elem.getBoundingClientRect();\n\t\tvar body = document.body;\n\t\tvar docElem = (document.documentElement ||\n\t\t\tdocument.body.parentNode ||\n\t\t\tdocument.body);\n\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\t\ttop = box.top + scrollTop - clientTop;\n\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\tright = document.body.offsetWidth - box.right;\n\t\tbottom = document.body.offsetHeight - box.bottom;\n\t} else { //fallback to naive approach\n\t\twhile(elem) {\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\n\t\t\telem = elem.offsetParent;\n\t\t}\n\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\n\t}\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\n}\n\n/*\nevent position relatively to DOM element\n */\nfunction getRelativeEventPosition(ev, node){\n\tvar d = document.documentElement;\n\tvar box = elementPosition(node);\n\n\treturn {\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\n\t};\n}\n\nfunction getNodePosition(elem) {\n\tvar top=0, left=0, right=0, bottom=0;\n\tif (elem.getBoundingClientRect) { //HTML5 method\n\t\tvar box = elem.getBoundingClientRect();\n\t\tvar body = document.body;\n\t\tvar docElem = (document.documentElement ||\n\t\t\tdocument.body.parentNode ||\n\t\t\tdocument.body);\n\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\t\ttop = box.top + scrollTop - clientTop;\n\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\tright = document.body.offsetWidth - box.right;\n\t\tbottom = document.body.offsetHeight - box.bottom;\n\t} else { //fallback to naive approach\n\t\twhile(elem) {\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\n\t\t\telem = elem.offsetParent;\n\t\t}\n\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\n\t}\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\n}\n\nfunction getClassName(node){\n\tif(!node) return \"\";\n\n\tvar className = node.className || \"\";\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\n\t\tclassName = className.baseVal;\n\n\tif(!className.indexOf)\n\t\tclassName = '';\n\n\treturn className || \"\";\n}\n\nfunction getTargetNode(e) {\n\tvar trg;\n\tif (e.tagName)\n\t\ttrg = e;\n\telse {\n\t\te = e || window.event;\n\t\ttrg = e.target || e.srcElement;\n\t\tif (trg.shadowRoot && e.composedPath) {\n\t\t\ttrg = e.composedPath()[0];\n\t\t}\n\t}\n\treturn trg;\n}\n\nfunction locateCss(e, classname, strict){\n\tif(strict === undefined)\n\t\tstrict = true;\n\n\tvar trg = e.target || e.srcElement;\n\tvar css = '';\n\n\twhile (trg){\n\t\tcss = getClassName(trg);\n\n\t\tif(css){\n\t\t\tvar ind = css.indexOf(classname);\n\t\t\tif (ind >= 0){\n\t\t\t\tif (!strict)\n\t\t\t\t\treturn trg;\n\n\t\t\t\t//check that we have exact match\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\n\n\t\t\t\tif (left && right)\n\t\t\t\t\treturn trg;\n\t\t\t}\n\t\t}\n\n\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\n\n// get focusable nodes\nfunction isVisible(node){\n\tvar display = false,\n\t\tvisibility = false;\n\tif(window.getComputedStyle){\n\t\tvar style = window.getComputedStyle(node, null);\n\t\tdisplay = style[\"display\"];\n\t\tvisibility = style[\"visibility\"];\n\t}else if(node.currentStyle){\n\t\tdisplay = node.currentStyle[\"display\"];\n\t\tvisibility = node.currentStyle[\"visibility\"];\n\t}\n\n\tvar hiddenSection = false;\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\n\tif(recurringSection){\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\n\t}\n\thiddenSection = hiddenSection || !(node.offsetHeight);\n\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\n}\n\nfunction hasNonNegativeTabIndex(node){\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\n}\n\nfunction hasHref(node){\n\tvar canHaveHref = {\"a\": true, \"area\": true};\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\n\t\treturn !!node.getAttribute(\"href\");\n\t}\n\treturn true;\n}\n\nfunction isEnabled(node){\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\n\tif(canDisable[node.nodeName.toLowerCase()]){\n\t\treturn !node.hasAttribute(\"disabled\");\n\t}\n\n\treturn true;\n}\n\n\nfunction getFocusableNodes(root){\n\tvar nodes = root.querySelectorAll([\n\t\t\"a[href]\",\n\t\t\"area[href]\",\n\t\t\"input\",\n\t\t\"select\",\n\t\t\"textarea\",\n\t\t\"button\",\n\t\t\"iframe\",\n\t\t\"object\",\n\t\t\"embed\",\n\t\t\"[tabindex]\",\n\t\t\"[contenteditable]\"\n\t].join(\", \"));\n\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\n\t\n\tfor(var i = 0; i < nodesArray.length; i++){\n\t\tnodesArray[i].$position = i;\n\t\t// we remember original nodes order, \n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \n\t\t// since some browsers do unstable sort\n\t}\n\t\n\tnodesArray.sort(function(a, b) {\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\n\t\t\treturn 1;\n\t\t}\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\n\t\t\treturn -1;\n\t\t}\n\t\t\n\t\tif (a.tabIndex === b.tabIndex){\n\t\t\t// ensure we do stable sort\n\t\t\treturn a.$position - b.$position;\n\t\t}\n\t\tif (a.tabIndex < b.tabIndex) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 1;\n\t});\n\t\n\tfor(var i = 0; i < nodesArray.length; i++){\n\t\tvar node = nodesArray[i];\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\n\t\tif(!isValid){\n\t\t\tnodesArray.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n\treturn nodesArray;\n}\n\n\nfunction isShadowDomSupported() {\n\treturn document.head.createShadowRoot || document.head.attachShadow;\n}\n\n/**\n * Returns element that has the browser focus, or null if no element has focus.\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\n * @returns HTMLElement\n */\nfunction getActiveElement(){\n\tvar activeElement = document.activeElement;\n\tif (activeElement.shadowRoot) {\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\n\t}\n\tif (activeElement === document.body && document.getSelection) {\n\t\tactiveElement = document.getSelection().focusNode || document.body;\n\t}\n\n\treturn activeElement;\n}\n\n/**\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\n * @param {HTMLElement} element \n * @returns HTMLElement\n */\nfunction getRootNode(element) {\n\tif (!element) {\n\t\treturn document.body;\n\t}\n\tif (!isShadowDomSupported()) {\n\t\treturn document.body;\n\t}\n\twhile (element.parentNode && (element = element.parentNode)) {\n\t\tif (element instanceof ShadowRoot) {\n\t\t\treturn element.host;\n\t\t}\n\t}\n\treturn document.body;\n}\n\nfunction hasShadowParent(element) {\n\treturn !!getRootNode(element);\n}\n\nexport default {\n\t/**\n\t * @desc: Calculate absolute position of html object\n\t * @type: private\n\t * @param: htmlObject - html object\n\t * @topic: 0\n\t */\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\n\t\treturn this.getOffset(htmlObject).left;\n\t},\n\t/**\n\t * @desc: Calculate absolute position of html object\n\t * @type: private\n\t * @param: htmlObject - html object\n\t * @topic: 0\n\t */\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\n\t\treturn this.getOffset(htmlObject).top;\n\t},\n\n\tgetOffsetSum: function getOffsetSum(elem) {\n\t\tvar top=0, left=0;\n\t\twhile(elem) {\n\t\t\ttop = top + parseInt(elem.offsetTop);\n\t\t\tleft = left + parseInt(elem.offsetLeft);\n\t\t\telem = elem.offsetParent;\n\t\t}\n\t\treturn {top: top, left: left};\n\t},\n\n\tgetOffsetRect: function getOffsetRect(elem) {\n\t\tvar box = elem.getBoundingClientRect();\n\n\t\tvar top = 0,\n\t\t\tleft = 0;\n\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\n\t\t\tvar body = document.body;\n\t\t\tvar docElem = document.documentElement;\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\n\t\t\ttop = box.top + scrollTop - clientTop;\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\t\t}else {\n\t\t\t// incorrect left coordinate on mobile zoom\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n\n\t\t\tvar dummy = document.createElement(\"div\");\n\t\t\tdummy.style.position=\"absolute\";\n\t\t\tdummy.style.left=\"0px\";\n\t\t\tdummy.style.top=\"0px\";\n\t\t\tdummy.style.width=\"1px\";\n\t\t\tdummy.style.height = \"1px\";\n\n\t\t\tdocument.body.appendChild(dummy);\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\n\t\t\ttop = box.top - dummyBox.top;\n\t\t\tleft = box.left - dummyBox.left;\n\n\t\t\tdummy.parentNode.removeChild(dummy);\n\t\t}\n\n\t\treturn { top: Math.round(top), left: Math.round(left) };\n\t},\n\n\tgetOffset: function getOffset(elem) {\n\t\tif (elem.getBoundingClientRect) {\n\t\t\treturn this.getOffsetRect(elem);\n\t\t} else {\n\t\t\treturn this.getOffsetSum(elem);\n\t\t}\n\t},\n\n\tclosest: function(element, selector){\n\t\tif(!element || !selector){\n\t\t\treturn null;\n\t\t}\n\t\treturn closest(element, selector);\n\t},\n\tinsertAfter: function(newNode, referenceNode){\n\t\tif(referenceNode.nextSibling){\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n\t\t}else{\n\t\t\treferenceNode.parentNode.appendChild(newNode);\n\t\t}\n\t},\n\tremove: function(node) {\n\t\tif (node && node.parentNode) {\n\t\t\tnode.parentNode.removeChild(node);\n\t\t}\n\t},\n\tisChildOf: function(child, parent) {\n\t\treturn parent.contains(child);\n\t},\n\tgetFocusableNodes,\n\tgetClassName,\n\tlocateCss,\n\tgetRootNode,\n\thasShadowParent,\n\tisShadowDomSupported,\n\tgetActiveElement,\n\tgetRelativeEventPosition,\n\tgetTargetNode,\n\tgetNodePosition\n};\n\nvar closest;\nif(Element.prototype.closest){\n\tclosest = function(element, selector){\n\t\treturn element.closest(selector);\n\t};\n}else{\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\tclosest = function(element, selector) {\n\t\tvar el = element;\n\t\tdo {\n\t\t\tif (matches.call(el, selector)){\n\t\t\t\treturn el;\n\t\t\t}\n\t\t\tel = el.parentElement || el.parentNode;\n\t\t} while (el !== null && el.nodeType === 1);\n\t\treturn null;\n\t};\n}\n","/* eslint-disable no-restricted-globals */\nvar isWindowAwailable = typeof window !== \"undefined\";\n\n/* eslint-enable no-restricted-globals */\n\nexport default {\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\n};","export default function(data) {\n\tif (typeof data === \"string\" || typeof data === \"number\") {\n\t\treturn data;\n\t}\n\tvar result = \"\";\n\tfor (var key in data) {\n\t\tvar serialized = \"\";\n\t\tif (data.hasOwnProperty(key)) {\n\t\t\tif (typeof data[key] === \"string\") {\n\t\t\t\tserialized = encodeURIComponent(data[key]);\n\t\t\t} else if (typeof data[key] === \"number\") {\n\t\t\t\tserialized = data[key];\n\t\t\t} else {\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\n\t\t\t}\n\t\t\tserialized = key + \"=\" + serialized;\n\n\t\t\tif (result.length) {\n\t\t\t\tserialized = \"&\" + serialized;\n\t\t\t}\n\t\t\tresult += serialized;\n\t\t}\n\t}\n\treturn result;\n}","export default function extend(scheduler) {\n\nvar generateStringToDate = function (format, utc) {\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\n\tvar mask = format.match(/%[a-zA-Z]/g);\n\tfor (var i = 0; i < mask.length; i++) {\n\t\tswitch (mask[i]) {\n\t\t\tcase \"%j\":\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\n\t\t\t\tbreak;\n\t\t\tcase \"%n\":\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\n\t\t\t\tbreak;\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\n\t\t\t\tbreak;\n\t\t\tcase \"%g\":\n\t\t\tcase \"%G\":\n\t\t\tcase \"%h\":\n\t\t\tcase \"%H\":\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\n\t\t\t\tbreak;\n\t\t\tcase \"%i\":\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\n\t\t\t\tbreak;\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\n\t\t\t\tbreak;\n\t\t\tcase \"%a\":\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\n\t\t\t\tbreak;\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\n\t\t\t\tbreak;\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\n\t\t\t\tbreak;\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\n};\nvar csp_date_to_str = function (format, utc) {\n\treturn function(date) {\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\n\t\t\tswitch (a) {\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\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);\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\n\t\t\t\tdefault: return a;\n\t\t\t}\n\t\t});\n\t};\n};\nvar csp_str_to_date = function (format, utc) {\n\tconst mask = format.match(/%[a-zA-Z]/g);\n\treturn function (date){\n\t\tvar set = [0, 0, 1, 0, 0, 0];\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\n\n\t\tfor (var i = 0; i < mask.length; i++) {\n\t\t\tswitch (mask[i]) {\n\t\t\t\tcase \"%j\":\n\t\t\t\tcase \"%d\":\n\t\t\t\t\tset[2] = temp[i] || 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%n\":\n\t\t\t\tcase \"%m\":\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%y\":\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%g\":\n\t\t\t\tcase \"%G\":\n\t\t\t\tcase \"%h\":\n\t\t\t\tcase \"%H\":\n\t\t\t\t\tset[3] = temp[i] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%i\":\n\t\t\t\t\tset[4] = temp[i] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%Y\":\n\t\t\t\t\tset[0] = temp[i] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%a\":\n\t\t\t\tcase \"%A\":\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%s\":\n\t\t\t\t\tset[5] = temp[i] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%M\":\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%F\":\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (utc) {\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\n\t\t}\n\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\n\t};\n};\n\nlet cspEnabled = undefined;\nfunction checkIfCSPEnabled(){\n\ttry {\n\t\tnew Function(\"cspEnabled = false;\");\n\t\tcspEnabled = false;\n\t} catch(e) {\n\t\tcspEnabled = true;\n\t}\n\treturn cspEnabled;\n}\n\nfunction useCsp() {\n\tvar result = false;\n\tif (scheduler.config.csp === \"auto\") {\n\t\tif(cspEnabled === undefined){\n\t\t\tcspEnabled = checkIfCSPEnabled();\n\t\t}\n\t\tresult = cspEnabled;\n\t} else {\n\t\tresult = scheduler.config.csp;\n\t}\n\treturn result;\n}\nscheduler.date = {\n\tinit:function(){\n\t\tvar s = scheduler.locale.date.month_short;\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\n\t\tfor (var i = 0; i < s.length; i++)\n\t\t\tt[s[i]]=i;\n\n\t\tvar s = scheduler.locale.date.month_full;\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\n\t\tfor (var i = 0; i < s.length; i++)\n\t\t\tt[s[i]]=i;\n\t},\n\tdate_part:function(date){\n\t\tvar old = new Date(date);\n\t\tdate.setHours(0);\n\t\tdate.setMinutes(0);\n\t\tdate.setSeconds(0);\n\t\tdate.setMilliseconds(0);\n\t\tif (date.getHours() && //shift to yesterday on dst\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\n\t\treturn date;\n\t},\n\ttime_part:function(date){\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\n\t},\n\tweek_start:function(date){\n\t\tvar shift=date.getDay();\n\t\tif (scheduler.config.start_on_monday){\n\t\t\tif (shift===0) shift=6;\n\t\t\telse shift--;\n\t\t}\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\n\t},\n\tmonth_start:function(date){\n\t\tdate.setDate(1);\n\t\treturn this.date_part(date);\n\t},\n\tyear_start:function(date){\n\t\tdate.setMonth(0);\n\t\treturn this.month_start(date);\n\t},\n\tday_start:function(date){\n\t\treturn this.date_part(date);\n\t},\n\t_add_days:function(date, inc){\n\t\tvar ndate = new Date(date.valueOf());\n\n\t\tndate.setDate(ndate.getDate() + inc);\n\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\n\t\tif(inc == Math.round(inc) && inc > 0){\n\t\t\tvar datesDiff = +ndate - +date,\n\t\t\t\trest = datesDiff % (24*60*60*1000);\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\n\t\t\t}\n\t\t}\n\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\n\t\treturn ndate;\n\t},\n\tadd:function(date,inc,mode){\n\t\tvar ndate=new Date(date.valueOf());\n\t\tswitch(mode){\n\t\t\tcase \"day\":\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\n\t\t\t\tbreak;\n\t\t\tcase \"week\":\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\n\t\t\t\tbreak;\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\n\t\t\tcase \"hour\":\n\t\t\t\t/*\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\n\t\t\t\t setTime seems working as expected\n\t\t\t\t*/\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\n\t\t\t\tbreak;\n\t\t\tcase \"minute\":\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\n\t\t}\n\t\treturn ndate;\n\t},\n\tto_fixed:function(num){\n\t\tif (num<10)\treturn \"0\"+num;\n\t\treturn num;\n\t},\n\tcopy:function(date){\n\t\treturn new Date(date.valueOf());\n\t},\n\tdate_to_str:function(format,utc){\n\t\tif (useCsp()) {\n\t\t\treturn csp_date_to_str(format,utc);\n\t\t}\n\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\n\t\t\tswitch(a){\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\n\t\t\t\tdefault: return a;\n\t\t\t}\n\t\t});\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\n\n\t\treturn func.bind(scheduler);\n\t},\n\tstr_to_date:function(format, utc, exactFormat){\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\n\t\t// eslint-disable-next-line\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})?)?$/;\n\n\t\t// MM/dd/yyyy - default old format for xml-date\n\t\t// eslint-disable-next-line\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\n\t\t// dd-MM-yyyy - default old format for api-date\n\t\t// eslint-disable-next-line\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})?)?$/;\n\t\t// eslint-disable-next-line\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)?)?)?)?$/;\n\n\t\tvar isYMDDate = function (datestr) {\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\n\t\t};\n\n\t\tvar isMDYDate = function (datestr) {\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\n\t\t};\n\t\tvar isDMYDate = function (datestr) {\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\n\t\t};\n\t\tvar isISO8601 = function (datestr) {\n\t\t\treturn ISO8601.test(datestr);\n\t\t};\n\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\n\n\t\treturn function (dateString) {\n\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\n\t\t\t\tif (dateString && dateString.getISOWeek) {\n\t\t\t\t\treturn new Date(dateString);\n\t\t\t\t} else if (typeof dateString === \"number\") {\n\t\t\t\t\treturn new Date(dateString);\n\t\t\t\t} else if (isYMDDate(dateString)) {\n\t\t\t\t\treturn parseYMD(dateString);\n\t\t\t\t} else if (isMDYDate(dateString)) {\n\t\t\t\t\treturn parseMDY(dateString);\n\t\t\t\t} else if (isDMYDate(dateString)) {\n\t\t\t\t\treturn parseDMY(dateString);\n\t\t\t\t} else if (isISO8601(dateString)) {\n\t\t\t\t\treturn new Date(dateString);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\n\t\t};\n\t},\n\tgetISOWeek: function(ndate) {\n\t\tif(!ndate) return false;\n\t\tndate = this.date_part(new Date(ndate));\n\t\tvar nday = ndate.getDay();\n\t\tif (nday === 0) {\n\t\t\tnday = 7;\n\t\t}\n\t\tvar first_thursday = new Date(ndate.valueOf());\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\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)\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\n\t\treturn week_number;\n\t},\n\tgetUTCISOWeek: function(ndate){\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\n\t},\n\tconvert_to_utc: function(date) {\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n\t}\n};\n\n}\n\n","export default function(scheduler){\n\treturn (function(){\n\t\tvar res = {};\n\t\tfor (var a in this._events){\n\t\t\tvar ev = this._events[a];\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\n\t\t\t\tres[ev.id] = ev;\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t}).bind(scheduler);\n}","import xmlLoaded from \"./loaders/xml\";\nimport jsonLoader from \"./loaders/json\";\nimport iCalLoader from \"./loaders/ical\";\nimport createSerializator from \"../core/common/get_serializable_events\";\n\nexport default function extend(scheduler) {\n\nscheduler._loaded = {};\nscheduler._load = function(url, from) {\n\turl = url || this._load_url;\n\n\tif(!url){\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\n\t\treturn;\n\t}\n\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\n\tvar to;\n\tfrom = from || this._date;\n\tfunction ajaxCallback(response) {\n\t\tscheduler.on_load(response);\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\n\t}\n\tif (this._load_mode) {\n\t\tvar lf = this.templates.load_format;\n\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\n\t\tto = from;\n\n\t\tvar cache_line = true;\n\t\twhile (to < this._max_date) {\n\t\t\tto = this.date.add(to, 1, this._load_mode);\n\t\t\tif (this._loaded[lf(from)] && cache_line)\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\n\t\t}\n\n\t\tvar temp_to = to;\n\t\tdo {\n\t\t\tto = temp_to;\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\n\n\t\tif (to <= from)\n\t\t\treturn false; //already loaded\n\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\n\n\t\twhile (from < to) {\n\t\t\tthis._loaded[lf(from)] = true;\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\n\t\t}\n\t} else {\n\t\tscheduler.ajax.get(url, ajaxCallback);\n\t}\n\n\t// TODO: remove onXLS\n\tthis.callEvent(\"onXLS\", []);\n\tthis.callEvent(\"onLoadStart\", []);\n\treturn true;\n};\n\nscheduler._parsers = {};\n\n\nxmlLoaded(scheduler);\njsonLoader(scheduler);\niCalLoader(scheduler);\n\nscheduler.on_load = function (loader) {\n\tthis.callEvent(\"onBeforeParse\", []);\n\n\tvar evs;\n\tvar error = false;\n\n\tvar foundParser = false;\n\tfor(var i in this._parsers){\n\t\tvar parser = this._parsers[i];\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\n\t\t\ttry{\n\t\t\t\tvar param = loader.xmlDoc.responseText;\n\t\t\t\tif(i === \"xml\"){\n\t\t\t\t\tparam = loader;\n\t\t\t\t}\n\t\t\t\tevs = parser.parse(param);\n\t\t\t\tif(!evs){\n\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t}catch(e){\n\t\t\t\terror = true;\n\t\t\t}\n\t\t\tfoundParser = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(!foundParser){\n\t\tif(this._process && this[this._process]){\n\t\t\ttry{\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\n\t\t\t}catch (e){\n\t\t\t\terror = true;\n\t\t\t}\n\t\t}else{\n\t\t\terror = true;\n\t\t}\n\t}\n\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\n\t\tevs = [];\n\t}\n\n\tthis._process_loading(evs);\n\n\t// TODO: remove onXLE\n\tthis.callEvent(\"onXLE\", []);\n\tthis.callEvent(\"onParse\", []);\n};\nscheduler._process_loading = function(evs) {\n\tthis._loading = true;\n\tthis._not_render = true;\n\tfor (var i = 0; i < evs.length; i++) {\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\n\t\tthis.addEvent(evs[i]);\n\t}\n\tthis._not_render = false;\n\tif (this._render_wait) this.render_view_data();\n\n\tthis._loading = false;\n\tif (this._after_call) this._after_call();\n\tthis._after_call = null;\n};\nscheduler._init_event = function(event) {\n\tevent.text = (event.text || event._tagvalue) || \"\";\n\tevent.start_date = scheduler._init_date(event.start_date);\n\tevent.end_date = scheduler._init_date(event.end_date);\n};\n\nscheduler._init_date = function(date){\n\tif(!date)\n\t\treturn null;\n\tif (typeof date == \"string\") {\n\t\treturn scheduler._helpers.parseDate(date);\n\t}\n\telse return new Date(date);\n};\n\nconst getSerializableData = createSerializator(scheduler);\nscheduler.serialize = function(){\n\tconst dataset = [];\n\tconst allEvents = getSerializableData();\n\tfor (var a in allEvents){\n\t\t\n\t\tconst exportedEvent = {};\n\t\tvar ev = allEvents[a];\n\n\t\tfor(var key in ev){\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet exportValue;\n\t\t\tconst rawValue = ev[key];\n\t\t\tif(scheduler.utils.isDate(rawValue)){\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\n\t\t\t}else{\n\t\t\t\texportValue = rawValue;\n\t\t\t}\n\t\t\t\n\t\t\texportedEvent[key] = exportValue;\n\t\t}\n\n\t\tdataset.push(exportedEvent);\n\t}\n\treturn dataset;\n};\n\n/*\nscheduler.json = {};\nscheduler.json.parse = function(data) {\n\n\tvar events = [];\n\n\tif (typeof data == \"string\") {\n\t\tdata = JSON.parse(data);\n\t}\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\n\t\tevents = data;\n\t} else {\n\t\tif(data){\n\t\t\tif(data.events){\n\t\t\t\tevents = data.events;\n\t\t\t}else if(data.data){\n\t\t\t\tevents = data.data;\n\t\t\t}\n\t\t}\n\t}\n\tevents = events || [];\n\n\tif (data.dhx_security) {\n\t\tif (window.dhtmlx) {\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\n\t\t}\n\t\tscheduler.security_key = data.dhx_security;\n\t}\n\n\tvar collections = (data && data.collections) ? data.collections : {};\n\tvar collections_loaded = false;\n\tfor (var key in collections) {\n\t\tif (collections.hasOwnProperty(key)) {\n\t\t\tcollections_loaded = true;\n\t\t\tvar collection = collections[key];\n\t\t\tvar arr = scheduler.serverList[key];\n\t\t\tif (!arr) {\n\t\t\t\tscheduler.serverList[key] = arr = [];\n\t\t\t}\n\t\t\tarr.splice(0, arr.length); //clear old options\n\t\t\tfor (var j = 0; j < collection.length; j++) {\n\t\t\t\tvar option = collection[j];\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\n\t\t\t\tfor (var option_key in option) {\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tarr.push(obj);\n\t\t\t}\n\t\t}\n\t}\n\tif (collections_loaded)\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\n\n\tvar evs = [];\n\tfor (var i = 0; i < events.length; i++) {\n\t\tvar event = events[i];\n\t\tscheduler._init_event(event);\n\t\tevs.push(event);\n\t}\n\treturn evs;\n};*/\nscheduler.parse = function(data, type) {\n\tthis._process = type;\n\tthis.on_load({xmlDoc: {responseText: data}});\n};\nscheduler.load = function(url, call) {\n\tif (typeof call == \"string\") {\n\t\tthis._process = call;\n\t\tcall = arguments[2];\n\t}\n\n\tthis._load_url = url;\n\tthis._after_call = call;\n\tthis._load(url, this._date);\n};\n//possible values - day,week,month,year,all\nscheduler.setLoadMode = function(mode) {\n\tif (mode == \"all\") mode = \"\";\n\tthis._load_mode = mode;\n};\n\nscheduler.serverList = function(name, array) {\n\tif (array) {\n\t\tthis.serverList[name] = array.slice(0);\n\t\treturn this.serverList[name];\n\t}\n\tthis.serverList[name] = (this.serverList[name] || []);\n\treturn this.serverList[name];\n};\nscheduler._userdata = {};\n\nscheduler._xmlNodeToJSON = function(node) {\n\tvar t = {};\n\tfor (var i = 0; i < node.attributes.length; i++)\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\n\n\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\tvar child = node.childNodes[i];\n\t\tif (child.nodeType == 1)\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\n\t}\n\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\n\n\treturn t;\n};\nscheduler.attachEvent(\"onXLS\", function() {\n\tif (this.config.show_loading === true) {\n\t\tvar t;\n\t\tt = this.config.show_loading = document.createElement(\"div\");\n\t\tt.className = 'dhx_loading';\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\n\t\tthis._obj.appendChild(t);\n\t}\n});\nscheduler.attachEvent(\"onXLE\", function() {\n\tvar t = this.config.show_loading;\n\tif (t && typeof t == \"object\") {\n\t\tif(t.parentNode) {\n\t\t\tt.parentNode.removeChild(t);\n\t\t}\n\t\tthis.config.show_loading = true;\n\t}\n});\n\n\n}","export default function extend(scheduler) {\n\n\nscheduler._parsers.xml = {\n\tcanParse: function(data, xhr){\n\t\t// IE returns non-empty responseXML type regardless of actual data type\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\n\t\t\treturn true;\n\t\t}\n\n\t\ttry{\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\n\t\t\tif(topElement && topElement.tagName === \"data\"){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}catch (e){\n\t\t}\n\t\treturn false;\n\t},\n\tparse: function(loader) {\n\t\tvar xml;\n\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\n\t\t}\n\t\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\n\t\tif (xml.tagName != \"data\") return null;//not an xml\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\n\t\tif (csrfToken) {\n\t\t\tif (window.dhtmlx) {\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\n\t\t\t}\n\t\t\tscheduler.security_key = csrfToken;\n\t\t}\n\t\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\n\t\tfor (var i = 0; i < opts.length; i++) {\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\n\t\t\tvar arr = scheduler.serverList[bind];\n\t\t\tif (!arr) {\n\t\t\t\tscheduler.serverList[bind] = arr = [];\n\t\t\t}\n\t\t\tarr.splice(0, arr.length);\t//clear old options\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\n\t\t\tfor (var j = 0; j < itms.length; j++) {\n\t\t\t\tvar itm = itms[j];\n\t\t\t\tvar attrs = itm.attributes;\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\n\t\t\t\t\tvar attr = attrs[k];\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\n\t\t\t\t}\n\t\t\t\tarr.push(obj);\n\t\t\t}\n\t\t}\n\t\tif (opts.length)\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\n\t\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\n\t\tfor (var i = 0; i < ud.length; i++) {\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\n\t\t\tscheduler._userdata[udx.name] = udx.text;\n\t\t}\n\t\n\t\tvar evs = [];\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\n\t\n\t\tfor (var i = 0; i < xml.length; i++) {\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\n\t\t\tscheduler._init_event(ev);\n\t\t}\n\t\treturn evs;\n\t}\n};\n\n}","export default function extend(scheduler) {\n\n\nscheduler.json = scheduler._parsers.json = {\n\tcanParse: function(data){\n\t\tif(data && typeof data === \"object\"){\n\t\t\treturn true;\n\t\t} else if(typeof data === \"string\"){\n\t\t\ttry {\n\t\t\t\tvar result = JSON.parse(data);\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\n\t\t\t} catch (err) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tparse: function(data) {\n\t\tvar events = [];\n\n\t\tif (typeof data == \"string\") {\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\n\t\t\tevents = data;\n\t\t} else {\n\t\t\tif(data){\n\t\t\t\tif(data.events){\n\t\t\t\t\tevents = data.events;\n\t\t\t\t}else if(data.data){\n\t\t\t\t\tevents = data.data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevents = events || [];\n\n\t\tif (data.dhx_security) {\n\t\t\tif (window.dhtmlx) {\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\n\t\t\t}\n\t\t\tscheduler.security_key = data.dhx_security;\n\t\t}\n\n\t\tvar collections = (data && data.collections) ? data.collections : {};\n\t\tvar collections_loaded = false;\n\t\tfor (var key in collections) {\n\t\t\tif (collections.hasOwnProperty(key)) {\n\t\t\t\tcollections_loaded = true;\n\t\t\t\tvar collection = collections[key];\n\t\t\t\tvar arr = scheduler.serverList[key];\n\t\t\t\tif (!arr) {\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\n\t\t\t\t}\n\t\t\t\tarr.splice(0, arr.length); //clear old options\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\n\t\t\t\t\tvar option = collection[j];\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\n\t\t\t\t\tfor (var option_key in option) {\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tarr.push(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (collections_loaded)\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\n\n\t\tvar evs = [];\n\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\tvar event = events[i];\n\t\t\tscheduler._init_event(event);\n\t\t\tevs.push(event);\n\t\t}\n\t\treturn evs;\n\t}\n};\n\n}","export default function extend(scheduler) {\n\n\nscheduler.ical = scheduler._parsers.ical = {\n\tcanParse: function(data){\n\t\tif(typeof data === \"string\"){\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\n\t\t}\n\n\t\treturn false;\n\t},\n\tparse:function(str){\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\n\t\tif (!data.length) return;\n\n\t\t// mpl: handle bad unfolding\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\n\n\t\t//unfolding \n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\n\t\t//drop property\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\n\t\t\n\t\t\n\t\tvar incoming=[];\n\t\tvar match;\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\n\t\twhile ((match=event_r.exec(data)) !== null){\n\t\t\tvar e={};\n\t\t\tvar param;\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\n\t\t\t\tthis.parse_param(param.toString(),e);\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\n\t\t\tincoming.push(e);\t\n\t\t}\n\t\treturn incoming;\n\t},\n\tparse_param:function(str,obj){\n\t\tvar d = str.indexOf(\":\"); \n\t\t\tif (d==-1) return;\n\t\t\n\t\tvar name = str.substr(0,d).toLowerCase();\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\n\t\tif (name==\"summary\")\n\t\t\tname=\"text\";\n\t\telse if (name==\"dtstart\"){\n\t\t\tname = \"start_date\";\n\t\t\tvalue = this.parse_date(value,0,0);\n\t\t}\n\t\telse if (name==\"dtend\"){\n\t\t\tname = \"end_date\";\n\t\t\tvalue = this.parse_date(value,0,0);\n\t\t}\n\t\tobj[name]=value;\n\t},\n\tparse_date:function(value,dh,dm){\n\t\tvar t = value.split(\"T\");\n\n\t\tvar utcMark = false;\n\t\tif (t[1]){\n\t\t\tdh=t[1].substr(0,2);\n\t\t\tdm=t[1].substr(2,2);\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\n\t\t}\n\t\tvar dy = t[0].substr(0,4);\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\n\t\tvar dd = t[0].substr(6,2);\n\n\t\tif(scheduler.config.server_utc || utcMark){\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\n\t\t}else{\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\n\t\t}\n\t},\n\tc_start:\"BEGIN:VCALENDAR\",\n\te_start:\"BEGIN:VEVENT\",\n\te_end:\"END:VEVENT\",\n\tc_end:\"END:VCALENDAR\"\t\n};\n\n}","export default function extend(scheduler) {\n\n\nscheduler._init_touch_events = function(){\n\tvar mobile = this.config.touch &&\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n\n\tif(mobile){\n\t\tthis.xy.scroll_width = 0;\n\t\tthis._mobile = true;\n\t}\n\n\tif(this.config.touch){\n\n\t\tvar touchEventsSupported = true;\n\t\ttry {\n\t\t\tdocument.createEvent(\"TouchEvent\");\n\t\t} catch (e) {\n\t\t\ttouchEventsSupported = false;\n\t\t}\n\n\t\tif (touchEventsSupported) {\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\n\t\t\t\tif (ev.touches[0])\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttarget: ev.target,\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\n\t\t\t\t\t};\n\t\t\t\telse\n\t\t\t\t\treturn ev;\n\t\t\t}, function () {\n\t\t\t\treturn false;\n\t\t\t});\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\n\t\t\t\treturn ev;\n\t\t\t}, function (ev) {\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\n\t\t\t});\n\t\t} else if (window.navigator.msPointerEnabled) {\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n\t\t\t\treturn ev;\n\t\t\t}, function (ev) {\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\n\t\t\t});\n\t\t}\n\t}\n};\n\nscheduler._touch_events = function(names, accessor, ignore){\n\t//webkit on android need to be handled separately\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\n\tvar dblclicktime = 0;\n\n\tfunction attachTouchEvent(element, name, callback){\n\t\t//touch gestures must be disabled when ligthbox is opened\n\t\tscheduler.event(element, name, function(e){\n\t\t\tif(scheduler._is_lightbox_open()){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tif (ignore(e)) return;\n\t\t\t\treturn callback(e);\n\t\t\t}\n\t\t}, { passive: false });\n\t}\n\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\n\t\tif (!s_ev || !e_ev) return false;\n\n\t\tvar t = s_ev.target;\n\t\twhile(t && t != scheduler._obj){\n\t\t\tt = t.parentNode;\n\t\t}\n\t\tif(t != scheduler._obj){\n\t\t\t//swipe outside scheduler\n\t\t\treturn false;\n\t\t}\n\n\t\t// ignore swipe in horizontal timeline\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\n\t\t\tif(timeline.scrollable){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\n\t\t\t\tscheduler._click.dhx_cal_next_button();\n\t\t\t}else {\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction doMouseMove(e){\n\t\tif (ignore(e)) return;\n\t\tvar dnd = scheduler.getState().drag_mode,\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\n\n\t\tvar original_render = scheduler.render_view_data;\n\t\tif(dnd == 'create' && timeline){\n\t\t\t//suppress full redraw of timeline on creating event\n\t\t\tscheduler.render_view_data = function() {\n\t\t\t\tvar id = scheduler.getState().drag_id;\n\t\t\t\tvar ev = scheduler.getEvent(id);\n\t\t\t\tvar property = timeline.y_property;\n\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\n\t\t\t\t\tif(evs[i][property] != ev[property]){\n\t\t\t\t\t\tevs.splice(i, 1);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tev._sorder = evs.length - 1;\n\t\t\t\tev._count = evs.length;\n\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\n\n\t\t\t};\n\t\t}\n\n\t\tscheduler._on_mouse_move(e);\n\n\t\tif(dnd == 'create' && timeline){\n\t\t\tscheduler.render_view_data = original_render;\n\t\t}\n\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\te.cancelBubble = true;\n\t\treturn false;\n\t}\n\n\t// touchmove\n\tattachTouchEvent(document.body, names[0], function(e){\n\t\tif (ignore(e)) return;\n\n\t\tvar acc = accessor(e);\n\t\tif(!acc) return;\n\t\tif (drag_mode){\n\t\t\tdoMouseMove(acc);\n\n\t\t\tif (e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\te.cancelBubble = true;\n\t\t\tscheduler._update_global_tip();\n\t\t\treturn false;\n\t\t}\n\t\t//if (tracker && a_webkit){\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\n\t\t//}\n\n\t\ttracker = accessor(e);\n\t\t//ignore common and scrolling moves\n\t\tif (!action_mode) return;\n\n\t\t//multitouch\n\t\tif (!tracker){\n\t\t\tscroll_mode = true;\n\t\t\treturn;\n\t\t}\n\n\t\t//target changed - probably in scroll mode\n\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\n\t\t\tscroll_mode = true;\n\t\t\tclearTimeout(timer);\n\t\t}\n\n\t});\n\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\n\t\tif (ignore(e)) return;\n\t\tif (action_mode){\n\t\t\tif (e && e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\te.cancelBubble = true;\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// touchstart\n\tattachTouchEvent(this._obj, names[1], function(e){\n\t\t// block pull-to-refresh\n\t\tif(document && document.body){\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\n\t\t}\n\n\t\tif (ignore(e)) return;\n\t\tscheduler._pointerDragId = e.pointerId;\n\n\t\tvar fake_event;\n\t\tdrag_mode = scroll_mode = false;\n\t\taction_mode = true;\n\t\tfake_event = tracker = accessor(e);\n\n\t\tif (!fake_event){\n\t\t\tscroll_mode = true;\n\t\t\treturn;\n\t\t}\n\n\t\t//dbl click\n\t\tvar now = new Date();\n\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\n\t\t\twindow.setTimeout(function(){\n\t\t\t\tif(scheduler.$destroyed){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//fake_event.type = \"dblclick\";\n\t\t\t\tscheduler._on_dbl_click(fake_event);\n\t\t\t}, 50);\n\n\t\t\tif (e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\te.cancelBubble = true;\n\t\t\tscheduler._block_next_stop = true;\n\t\t\treturn false;\n\t\t}\n\t\tdblclicktime = now;\n\n\t\t//drag\n\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\n\t\t\treturn;\n\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\n\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\n\t\t{\n\t\t\tif(e.preventDefault) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\te.cancelBubble = true;\n\t\t\tscheduler._ignore_next_click = false;\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\n\t\t\tsource = fake_event;\n\t\t\treturn false;\n\t\t}\n\t\t//there is no target\n\t\ttimer = setTimeout(function(){\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdrag_mode = true;\n\t\t\tvar target = source.target;\n\t\t\tvar className = scheduler._getClassName(target);\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\n\t\t\t\ttarget = target.previousSibling;\n\n\t\t\tscheduler._on_mouse_down(source, target);\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\n\t\t\t\t\tnode.style.display='none';\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (scheduler.config.touch_tip) {\n\t\t\t\tscheduler._show_global_tip();\n\t\t\t}\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\n\t\t},scheduler.config.touch_drag);\n\n\t\tsource = fake_event;\n\t});\n\tfunction drag_cancel(e){\n\t\tif (ignore(e)) return;\n\t\tscheduler._hide_global_tip();\n\t\tif (drag_mode){\n\t\t\tscheduler._on_mouse_up( accessor(e) );\n\t\t\tscheduler._temp_touch_block = false;\n\t\t}\n\t\tscheduler._drag_id = null;\n\t\tscheduler._drag_mode=null;\n\t\tscheduler._drag_pos=null;\n\t\tscheduler._pointerDragId = null;\n\t\tclearTimeout(timer);\n\t\tdrag_mode = action_mode = false;\n\t\tscroll_mode = true;\n\t}\n\n\t// touch end\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\n\t\tif(document && document.body){\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\n\t\t}\n\n\t\tif (ignore(e)) return;\n\n\t\tif(scheduler.config.touch_swipe_dates){\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\n\t\t\t\tscheduler._block_next_stop = true;\n\t\t\t}\n\t\t}\n\n\t\tif (drag_mode) {\n\t\t\tscheduler._ignore_next_click = true;\n\t\t\tsetTimeout(function(){\n\t\t\t\tscheduler._ignore_next_click = false;\n\t\t\t}, 100);\n\t\t}\n\n\t\tdrag_cancel(e);\n\t\tif (scheduler._block_next_stop){\n\t\t\tscheduler._block_next_stop = false;\n\t\t\tif (e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\te.cancelBubble = true;\n\t\t\treturn false;\n\t\t}\n\t});\n\n\tscheduler.event(document.body, names[2], drag_cancel);\n};\n\nscheduler._show_global_tip = function(){\n\tscheduler._hide_global_tip();\n\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\n\ttoptip.className='dhx_global_tip';\n\n\tscheduler._update_global_tip(1);\n\n\tdocument.body.appendChild(toptip);\n};\nscheduler._update_global_tip = function(init){\n\tvar toptip = scheduler._global_tip;\n\tif (toptip){\n\t\tvar time = \"\";\n\t\tif (scheduler._drag_id && !init){\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\n\t\t\tif (ev)\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\n\t\t}\n\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\n\t\telse\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\n\t}\n};\nscheduler._hide_global_tip = function(){\n\tvar toptip = scheduler._global_tip;\n\tif (toptip && toptip.parentNode){\n\t\ttoptip.parentNode.removeChild(toptip);\n\t\tscheduler._global_tip = 0;\n\t}\n};\n\n\n}","export default function extend(scheduler) {\n\n\nscheduler._addThemeClass = function(){\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\n};\n\nscheduler._skin_settings = {\n\tfix_tab_position: [1,0],\n\tuse_select_menu_space: [1,0],\n\twide_form: [1,0],\n\n\thour_size_px: [44,42],\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\n};\n\nscheduler._skin_xy = {\n\tlightbox_additional_height: [90,50],\n\tnav_height: [59,22],\n\tbar_height: [24,20]\n};\n\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\n// In order to render events correctly, we need to know which box sizing model is used\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\n\nscheduler._is_material_skin = function(){\n\tif(!scheduler.skin){\n\t\treturn checkIfMaterialSkin();\n\t}else{\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\n\t}\n};\n\nfunction themeNameFromFile(){\n\tvar links = document.getElementsByTagName(\"link\");\n\tfor (var i = 0; i < links.length; i++) {\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\n\t\tif (res){\n\t\t\treturn res[1];\n\t\t}\n\t}\n}\n\nscheduler._build_skin_info = function() {\n\tmonitorThemeChange();\n\tconst styles = getComputedStyle(this.$container);\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\n\n\tlet isCssVarTheme = !!themeVar;\n\tlet themeName;\n\tlet cssValues = {};\n\tlet oldMaterialTheme = false;\n\n\tif(isCssVarTheme){\n\t\tthemeName = themeVar;\n\t\tfor(let i in scheduler.xy){\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\n\t\t}\n\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\n\n\t}else{\n\t\tthemeName = themeNameFromFile();\n\t\toldMaterialTheme = scheduler._is_material_skin();\n\t}\n\n\n\tscheduler._theme_info = {\n\t\ttheme: themeName,\n\t\tcssVarTheme: isCssVarTheme,\n\t\toldMaterialTheme: oldMaterialTheme,\n\t\tvalues: cssValues\n\t};\n\n\tif(scheduler._theme_info.cssVarTheme){\n\t\tconst themeVariables = this._theme_info.values;\n\t\tfor(let i in scheduler.xy){\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar calculatedMaterial;\nfunction checkIfMaterialSkin(){\n\tif(calculatedMaterial === undefined){\n\t\tvar probe = document.createElement(\"div\");\n\t\tprobe.style.position = \"absolute\";\n\t\tprobe.style.left = \"-9999px\";\n\t\tprobe.style.top = \"-9999px\";\n\t\tprobe.innerHTML = \"
\" +\n\t\t\t\"
\" +\n\t\t\t\"
\"+\n\t\t\"
\";\n\t\tdocument.body.appendChild(probe);\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\n\t\tvar position = styles.getPropertyValue('position');\n\t\tif(position === \"absolute\"){\n\t\t\t// page has skins for placeholder element from material skin\n\t\t\tcalculatedMaterial = true;\n\t\t}else{\n\t\t\tcalculatedMaterial = false;\n\t\t}\n\n\t\tsetTimeout(function(){\n\t\t\tcalculatedMaterial = null;\n\t\t\tif(probe && probe.parentNode){\n\t\t\t\tprobe.parentNode.removeChild(probe);\n\t\t\t}\n\t\t}, 500);\n\t}\n\treturn calculatedMaterial;\n}\n\nvar cachedBorderBoxValue;\nfunction checkIfBorderBoxStyling(){\n\tif(scheduler._is_material_skin()){\n\t\treturn true;\n\t}else{\n\t\tif(cachedBorderBoxValue === undefined){\n\t\t\tvar probe = document.createElement(\"div\");\n\t\t\tprobe.style.position = \"absolute\";\n\t\t\tprobe.style.left = \"-9999px\";\n\t\t\tprobe.style.top = \"-9999px\";\n\t\t\tprobe.innerHTML = \"
\" +\n\t\t\t\t\"
\" +\n\t\t\t\t\t\"
\"+\n\t\t\t\t\"
\"+\n\t\t\t\"
\";\n\n\t\t\tdocument.body.appendChild(probe);\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\n\t\t\tdocument.body.removeChild(probe);\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\n\n\t\t\tif(!cachedBorderBoxValue){\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tcachedBorderBoxValue = undefined;\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\n\t\t\t}\n\t\t}else{\n\t\t\treturn cachedBorderBoxValue;\n\t\t}\n\t}\n}\n\nfunction refreshAfterLoad(){\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\n\t\treturn;\n\t}\n\n\tvar oldStyling = cachedBorderBoxValue;\n\tcachedBorderBoxValue = undefined;\n\tcalculatedMaterial = undefined;\n\tvar newStyling = checkIfBorderBoxStyling();\n\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\n\t// repaint scheduler in order to apply new styles\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\n\t\tscheduler.setCurrentView();\n\t}\n}\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\nscheduler.event(window, 'load', refreshAfterLoad);\n\nscheduler._border_box_events = function(){\n\treturn checkIfBorderBoxStyling();\n};\n\nscheduler._configure = function(col, data, skin){\n\tfor (var key in data)\n\t\tif (typeof col[key] == \"undefined\")\n\t\t\tcol[key] = data[key][skin];\n};\n\nscheduler.setSkin = function(value){\n\tthis.skin = value;\n\tscheduler._addThemeClass();\n\tif(scheduler.$container){\n\t\tthis._skin_init();\n\t\tthis.render();\n\t}\n\t\n\t//\n};\n\nfunction flatSkinHourScale(date){\n\tvar min = date.getMinutes();\n\tmin = min < 10 ? \"0\"+min : min;\n\tvar html = \"\"+ date.getHours() +\"\"+\n\t\t\" \"+ min +\"\";\n\treturn html;\n}\n\nlet monitorIntervalId = null;\nfunction monitorThemeChange(){\n\tconst container = scheduler.$container;\n\t\n\tclearInterval(monitorIntervalId);\n\tif(container){\n\t\tmonitorIntervalId = setInterval(() => {\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\n\t\t\t\tscheduler.setSkin(csstheme);\n\t\t\t}\n\n\t\t}, 100);\n\t}\n}\nscheduler.attachEvent(\"onDestroy\", function(){\n\tclearInterval(monitorIntervalId);\n});\n\nscheduler._skin_init = function(){\n\tthis._build_skin_info();\n\n\tif (!this.skin){\n\t\tthis.skin = this._theme_info.theme;\n\t}\n\tscheduler._addThemeClass();\n\tif (scheduler.skin === \"flat\"){\n\t\t// scheduler.xy.scale_height = 35;\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\n\t}\n\n\n\n\t//scheduler._lightbox_template=\"
 
\";\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\n\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\n\t\tif(!scheduler.templates._old_month_day){\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\n\t\t}\n\t\tvar old_month_day = scheduler.templates._old_month_day;\n\t\tscheduler.templates.month_day = function(date) {\n\t\t\tif (this._mode == \"month\") {\n\t\t\t\tvar label = date_to_str(date);\n\t\t\t\tif (date.getDate() == 1) {\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\n\t\t\t\t}\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\n\t\t\t\t}\n\t\t\t\treturn label;\n\t\t\t} else {\n\t\t\t\treturn old_month_day.call(this, date);\n\t\t\t}\n\t\t};\n\n\t\t// tab classes\n\t\tif(scheduler.config.fix_tab_position){\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\n\t\t\ttabs.forEach((tab) => {\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\n\n\t\t\t\tswitch (view) {\n\t\t\t\t\tcase \"day\":\n\t\t\t\t\tcase \"day_tab\":\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"week\":\n\t\t\t\t\tcase \"week_tab\":\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"month\":\n\t\t\t\t\tcase \"month_tab\":\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\n\n\t\t}\n\t}, {once: true});\n\n\tfunction reorderTabs(container) {\n\t\t// segmented tabs should go first\n\n\t\tif(scheduler.config.header){\n\t\t\treturn;\n\t\t\t// don't reorder tabs if header is defined via config\n\t\t}\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\n\t\n\t\t// segmented tabs\n\t\tconst order = ['day', 'week', 'month'];\n\t\n\t\tconst specialTabs = order.map(tabName => \n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\n\t\t).filter(tab => tab !== undefined);\n\t\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\n\n\t\tspecialTabs.reverse().forEach(tab => {\n\t\t\tcontainer.insertBefore(tab, firstTab);\n\t\t\tfirstTab = tab;\n\t\t});\n\t}\n\n\t// scheduler._skin_init = function(){\n\t// \tthis._build_skin_info();\n\t// \tthis.skin = this._theme_info.theme;\n\t// };\n};\n\n\n\n}","export default function DataProcessorEvents(scheduler, dp){\n\tthis.$scheduler = scheduler;\n\tthis.$dp = dp;\n\tthis._dataProcessorHandlers = [];\n\n\tthis.attach = function () {\n\t\tvar dp = this.$dp;\n\t\tvar scheduler = this.$scheduler;\n\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\n\t\t\tif (!this._loading && this._validId(id))\n\t\t\tdp.setUpdated(id,true,\"inserted\");\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\n\t\t\tif (!this._validId(id)) return;\n\t\t\tvar z=dp.getState(id);\n\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\n\t\t\tif (z==\"deleted\") return false;\n\t\t\tif (z==\"true_deleted\") return true;\n\n\t\t\tdp.setUpdated(id,true,\"deleted\");\n\t\t\treturn false;\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \n\t\t\tif (!this._loading && this._validId(id))\n\t\t\tdp.setUpdated(id,true,\"updated\");\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \n\t\t\t// clear dataprocessor state when scheduler is reset\n\t\t\tdp._in_progress={};\n\t\t\tdp._invalid={};\n\t\t\tdp.updatedRows = [];\n\t\t\tdp._waitMode = 0;\n\t\t}));\n\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\n\t\t\tif (scheduler.getEvent(id)){\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\n\t\t\t\tscheduler.deleteEvent(id);\n\t\t\t} else if (scheduler._add_rec_marker)\n\t\t\t\tscheduler._update_callback(upd, id);\n\t\t});\n\t};\n\n\tthis.detach = function () {\n\t\tfor (var key in this._dataProcessorHandlers) {\n\t\t\tvar handler = this._dataProcessorHandlers[key];\n\t\t\tthis.$scheduler.detachEvent(handler);\n\t\t}\n\t\tthis._dataProcessorHandlers = [];\n\t};\n}\n\nexport function extendScheduler(scheduler, dp){\n\tscheduler._validId=function(id){\n\t\tif(this._is_virtual_event){\n\t\t\treturn !this._is_virtual_event(id);\n\t\t}\n\t\treturn true;\n\t};\n\tscheduler.setUserData=function(id,name,value){\n\t\tif (id){\n\t\t\tvar ev = this.getEvent(id);\n\t\t\tif(ev) ev[name]=value;\n\t\t}else{\n\t\t\tthis._userdata[name]=value;\n\t\t}\n\t};\n\tscheduler.getUserData=function(id,name){\n\t\tif (id){\n\t\t\tvar ev = this.getEvent(id);\n\t\t\tif(ev)\n\t\t\t\treturn ev[name];\n\t\t\telse\n\t\t\t\treturn null;\n\t\t}else{\n\t\t\treturn this._userdata[name];\n\t\t}\n\t};\n\tscheduler._set_event_text_style=function(id,style){\n\t\tif(!scheduler.getEvent(id))\n\t\t\treturn;\n\t\tthis.for_rendered(id,function(r){\n\t\t\tr.style.cssText+=\";\"+style;\n\t\t});\n\t\tvar ev = this.getEvent(id);\n\t\tev[\"_text_style\"]=style;\n\t\tthis.event_updated(ev);\n\t};\n\tscheduler._update_callback = function(upd,id){\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\n\t\t//fix for updates of recurring events\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\n\t\tdata.text = data.text||data._tagvalue;\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\n\t\tscheduler.addEvent(data);\n\t\tif (scheduler._add_rec_marker)\n\t\t\tscheduler.setCurrentView();\n\t};\n\tscheduler._dp_change_event_id = function(id, new_id){\n\t\tif(!scheduler.getEvent(id))\n\t\t\treturn;\n\t\tscheduler.changeEventId(id, new_id);\n\t};\n\tscheduler._dp_hook_delete = function(id, new_id){\n\t\tif(!scheduler.getEvent(id))\n\t\t\treturn;\n\n\t\tif(new_id && id != new_id){\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\n\n\t\t\tthis.changeEventId(id, new_id);\n\t\t}\n\t\treturn this.deleteEvent(new_id, true);\n\t};\n\n\tscheduler.setDp = function() {\n\t\tthis._dp = dp;\n\t};\n\tscheduler.setDp();\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\nimport { extendScheduler } from \"./dataprocessor_hooks\";\nimport eventable from \"../../utils/eventable\";\nimport global from \"../../global\";\n\n/**\n *\t@desc: constructor, data processor object\n *\t@param: serverProcessorURL - url used for update\n *\t@type: public\n */\nexport function DataProcessor(serverProcessorURL){\n\tthis.serverProcessor = serverProcessorURL;\n\tthis.action_param = \"!nativeeditor_status\";\n\n\tthis.object = null;\n\tthis.updatedRows = []; // ids of updated rows\n\n\tthis.autoUpdate = true;\n\tthis.updateMode = \"cell\";\n\tthis._tMode = \"GET\";\n\tthis._headers = null;\n\tthis._payload = null;\n\tthis.post_delim = \"_\";\n\n\tthis._waitMode = 0;\n\tthis._in_progress = {};\n\tthis._invalid = {};\n\tthis.messages = [];\n\n\tthis.styles = {\n\t\tupdated: \"font-weight:bold;\",\n\t\tinserted: \"font-weight:bold;\",\n\t\tdeleted: \"text-decoration : line-through;\",\n\t\tinvalid: \"background-color:FFE0E0;\",\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\n\t\terror: \"color:red;\",\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\n\t};\n\tthis.enableUTFencoding(true);\n\teventable(this); // TODO: need to update\n\n\treturn this;\n}\nDataProcessor.prototype = {\n\tsetTransactionMode: function (mode, total) {\n\t\tif (typeof mode == \"object\") {\n\t\t\tthis._tMode = mode.mode || this._tMode;\n\n\t\t\tif (mode.headers !== undefined) {\n\t\t\t\tthis._headers = mode.headers;\n\t\t\t}\n\n\t\t\tif (mode.payload !== undefined) {\n\t\t\t\tthis._payload = mode.payload;\n\t\t\t}\n\t\t\tthis._tSend = !!total;\n\t\t} else {\n\t\t\tthis._tMode = mode;\n\t\t\tthis._tSend = total;\n\t\t}\n\n\t\tif (this._tMode == \"REST\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t}\n\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._serializeAsJson = true;\n\t\t\tthis._headers = this._headers || {};\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\n\t\t}else{\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\n\t\t\t}\n\t\t}\n\n\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._router = mode.router;\n\t\t}\n\t},\n\tescape: function (data) {\n\t\tif (this._utf)\n\t\t\treturn encodeURIComponent(data);\n\t\telse\n\t\t\treturn escape(data);\n\t},\n\t/**\n\t *\t@desc: allows to set escaping mode\n\t *\t@param: true - utf based escaping, simple - use current page encoding\n\t *\t@type: public\n\t */\n\tenableUTFencoding: function (mode) {\n\t\tthis._utf = !!mode;\n\t},\n\t/**\n\t *\t@desc: allows to define, which column may trigger update\n\t *\t@param: val - array or list of true/false values\n\t *\t@type: public\n\t */\n\tsetDataColumns: function (val) {\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\n\t},\n\t/**\n\t *\t@desc: get state of updating\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\n\t *\t@type: public\n\t */\n\tgetSyncState: function () {\n\t\treturn !this.updatedRows.length;\n\t},\n\t/**\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\n\t *\t@param: mode - true/false\n\t *\t@type: public\n\t */\n\tenableDataNames: function (mode) {\n\t\tthis._endnm = !!mode;\n\t},\n\t/**\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\n\t *\t@param: mode - true/false\n\t *\t@type: public\n\t */\n\tenablePartialDataSend: function (mode) {\n\t\tthis._changed = !!mode;\n\t},\n\t/**\n\t *\t@desc: set if rows should be send to server automatically\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\n\t *\t@type: public\n\t */\n\tsetUpdateMode: function (mode, dnd) {\n\t\tthis.autoUpdate = (mode == \"cell\");\n\t\tthis.updateMode = mode;\n\t\tthis.dnd = dnd;\n\t},\n\tignore: function (code, master) {\n\t\tthis._silent_mode = true;\n\t\tcode.call(master || window);\n\t\tthis._silent_mode = false;\n\t},\n\t/**\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\n\t *\t@param: rowId - id of row to set update-status for\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\n\t *\t@param: mode - update mode name\n\t *\t@type: public\n\t */\n\tsetUpdated: function (rowId, state, mode) {\n\t\tif (this._silent_mode) return;\n\t\tvar ind = this.findRow(rowId);\n\n\t\tmode = mode || \"updated\";\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\n\t\tif (existing && mode == \"updated\") mode = existing;\n\t\tif (state) {\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\n\t\t\tthis.updatedRows[ind] = rowId;\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\n\t\t\tif (this._in_progress[rowId])\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\n\t\t} else {\n\t\t\tif (!this.is_invalid(rowId)) {\n\t\t\t\tthis.updatedRows.splice(ind, 1);\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\n\t\t\t}\n\t\t}\n\n\t\tthis.markRow(rowId, state, mode);\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\n\t},\n\n\tmarkRow: function (id, state, mode) {\n\t\tvar str = \"\";\n\t\tvar invalid = this.is_invalid(id);\n\t\tif (invalid) {\n\t\t\tstr = this.styles[invalid];\n\t\t\tstate = true;\n\t\t}\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\n\t\t\t//default logic\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\n\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\n\n\t\t\tif (invalid && invalid.details) {\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\n\t\t\t\t\tif (invalid.details[i])\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\n\t\t\t}\n\t\t}\n\t},\n\tgetActionByState: function(state) {\n\t\tif (state === \"inserted\") {\n\t\t\treturn \"create\";\n\t\t}\n\t\tif (state === \"updated\") {\n\t\t\treturn \"update\";\n\t\t}\n\t\tif (state === \"deleted\") {\n\t\t\treturn \"delete\";\n\t\t}\n\t\treturn \"update\";\n\t},\n\n\tgetState: function (id) {\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\n\t},\n\tis_invalid: function (id) {\n\t\treturn this._invalid[id];\n\t},\n\tset_invalid: function (id, mode, details) {\n\t\tif (details) mode = {\n\t\t\tvalue: mode, details: details, toString: function () {\n\t\t\t\treturn this.value.toString();\n\t\t\t}\n\t\t};\n\t\tthis._invalid[id] = mode;\n\t},\n\t/**\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\n\t *\t@param: rowId - id of row to set update-status for\n\t *\t@type: public\n\t */\n\tcheckBeforeUpdate: function (rowId) {\n\t\treturn true;\n\t},\n\t/**\n\t *\t@desc: send row(s) values to server\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\n\t *\t@type: public\n\t */\n\tsendData: function (rowId) {\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\n\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\n\t\tif (this._in_progress[rowId]) return false;\n\n\t\tthis.messages = [];\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\n\t},\n\t_beforeSendData: function (data, rowId) {\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\n\t\tthis._sendData(data, rowId);\n\t},\n\tserialize: function (data, id) {\n\t\tif (this._serializeAsJson) {\n\t\t\treturn this._serializeAsJSON(data);\n\t\t}\n\n\t\tif (typeof data == \"string\")\n\t\t\treturn data;\n\t\tif (typeof id != \"undefined\")\n\t\t\treturn this.serialize_one(data, \"\");\n\t\telse {\n\t\t\tvar stack = [];\n\t\t\tvar keys = [];\n\t\t\tfor (var key in data)\n\t\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\n\t\t\tif (this.$scheduler.security_key)\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\n\t\t\treturn stack.join(\"&\");\n\t\t}\n\t},\n\tserialize_one: function (data, pref) {\n\t\tif (typeof data == \"string\")\n\t\t\treturn data;\n\t\tvar stack = [];\n\t\tvar serialized = \"\";\n\t\tfor (var key in data)\n\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\n\t\t\t\t\tserialized = data[key];\n\t\t\t\t} else {\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\n\t\t\t\t}\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\n\t\t\t}\n\t\treturn stack.join(\"&\");\n\t},\n\t_applyPayload: function (url) {\n\t\tvar ajax = this.$scheduler.ajax;\n\t\tif (this._payload)\n\t\t\tfor (var key in this._payload)\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\n\t\treturn url;\n\t},\n\t_sendData: function (dataToSend, rowId) {\n\t\tif (!dataToSend) {\n\t\t\treturn; // nothing to send\n\t\t}\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (rowId) {\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\n\t\t}\n\n\t\tvar self = this;\n\t\tvar ajax = this.$scheduler.ajax;\n\n\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\tvar state = this.getState(rowId);\n\t\t\tvar action = this.getActionByState(state);\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\n\t\t\t\tvar resultState = state;\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\n\t\t\t\t\tif(tag.status !== 200){\n\t\t\t\t\t\tresultState = \"error\";\n\t\t\t\t\t}\n\t\t\t\t\ttry{\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\n\t\t\t\t\t} catch (e){}\n\t\t\t\t}\n\n\t\t\t\tresultState = resultState || \"updated\";\n\t\t\t\tvar sid = rowId;\n\t\t\t\tvar tid = rowId;\n\n\t\t\t\tif (tag) {\n\t\t\t\t\tresultState = tag.action || resultState;\n\t\t\t\t\tsid = tag.sid || sid;\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\n\t\t\t\t}\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\n\t\t\t};\n\n\t\t\tconst routerMode = \"event\";\n\t\t\tvar actionPromise;\n\t\t\tif (this._router instanceof Function) {\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\n\t\t\t} else {\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(actionPromise){\n\t\t\t\t// neither promise nor {tid: newId} response object\n\t\t\t\tif(!actionPromise.then &&\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\n\t\t\t\t}\n\n\t\t\t\tif(actionPromise.then){\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\n\t\t\t\t\t\tif(error && error.action){\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\t// custom method may return a response object in case of sync action\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t_onResolvedCreateUpdate(null);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tvar queryParams = {\n\t\t\tcallback: function(xml) {\n\t\t\t\tvar ids = [];\n\n\t\t\t\tif (rowId) {\n\t\t\t\t\tids.push(rowId);\n\t\t\t\t} else if (dataToSend) {\n\t\t\t\t\tfor (var key in dataToSend) {\n\t\t\t\t\t\tids.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\n\t\t\t},\n\t\t\theaders: self._headers\n\t\t};\n\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\n\t\tvar url = this._applyPayload(urlParams);\n\t\tvar data;\n\n\t\tswitch (this._tMode) {\n\t\t\tcase \"GET\":\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\n\t\t\t\tqueryParams.method = \"GET\";\n\t\t\t\tbreak;\n\t\t\tcase \"POST\":\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\n\t\t\t\tqueryParams.url = url;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\n\t\t\t\tbreak;\n\t\t\tcase \"JSON\":\n\t\t\t\tdata = {};\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\n\t\t\t\tfor (var key in preprocessedData) {\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdata[key] = preprocessedData[key];\n\t\t\t\t}\n\n\t\t\t\tqueryParams.url = url;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = JSON.stringify({\n\t\t\t\t\tid: rowId,\n\t\t\t\t\taction: dataToSend[this.action_param],\n\t\t\t\t\tdata: data\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"REST\":\n\t\t\tcase \"REST-JSON\":\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\n\t\t\t\tdata = \"\";\n\n\t\t\t\tswitch (this.getState(rowId)) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tqueryParams.url = this._applyPayload(url);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._waitMode++;\n\t\treturn ajax.query(queryParams);\n\t},\n\tsendAllData: function () {\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\n\t\t\treturn;\n\t\t}\n\n\t\tthis.messages = [];\n\t\tvar valid = true;\n\n\t\tthis._forEachUpdatedRow(function(rowId) {\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\n\t\t});\n\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._tSend) {\n\t\t\tthis._sendData(this._getAllData());\n\t\t} else {\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\n\t\t\t\tif (!this._in_progress[rowId]) {\n\t\t\t\t\tif (this.is_invalid(rowId)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n\t_getAllData: function (rowId) {\n\t\tvar out = {};\n\t\tvar has_one = false;\n\t\tthis._forEachUpdatedRow(function(id) {\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar row = this._getRowData(id);\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tout[id] = row;\n\t\t\thas_one = true;\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\n\t\t});\n\t\treturn has_one ? out : null;\n\t},\n\n\tfindRow: function (pattern) {\n\t\tvar i = 0;\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\n\t\t\tif (pattern == this.updatedRows[i]) break;\n\t\treturn i;\n\t},\n\n\t/**\n\t *\t@desc: define custom actions\n\t *\t@param: name - name of action, same as value of action attribute\n\t *\t@param: handler - custom function, which receives a XMl response content for action\n\t *\t@type: private\n\t */\n\tdefineAction: function (name, handler) {\n\t\tif (!this._uActions) this._uActions = {};\n\t\tthis._uActions[name] = handler;\n\t},\n\n\t/**\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\n\t *\t @param: sid - id of item before update\n\t *\t @param: tid - id of item after up0ate\n\t *\t @param: action - action name\n\t *\t @type: public\n\t *\t @topic: 0\n\t */\n\tafterUpdateCallback: function (sid, tid, action, btag) {\n\t\tif(!this.$scheduler){\n\t\t\t// destructor has been called before the callback\n\t\t\treturn;\n\t\t}\n\n\t\tvar marker = sid;\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\n\t\tif (!correct) {\n\t\t\tthis.set_invalid(sid, action);\n\t\t}\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\n\t\t\treturn (delete this._in_progress[marker]);\n\t\t}\n\n\t\tif (this._in_progress[marker] !== \"wait\") {\n\t\t\tthis.setUpdated(sid, false);\n\t\t}\n\n\t\tvar originalSid = sid;\n\n\t\tswitch (action) {\n\t\t\tcase \"inserted\":\n\t\t\tcase \"insert\":\n\t\t\t\tif (tid != sid) {\n\t\t\t\t\tthis.setUpdated(sid, false);\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\n\t\t\t\t\tsid = tid;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"delete\":\n\t\t\tcase \"deleted\":\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\n\t\t\t\tdelete this._in_progress[marker];\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\n\t\t}\n\n\t\tif (this._in_progress[marker] !== \"wait\") {\n\t\t\tif (correct) {\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\n\t\t\t}\n\t\t\tdelete this._in_progress[marker];\n\t\t} else {\n\t\t\tdelete this._in_progress[marker];\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\n\t\t}\n\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\n\t},\n\n\t_errorResponse: function (xml, id){\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\n\t\t}\n\t\treturn this.cleanUpdate(id);\n\t},\n\n\t_setDefaultTransactionMode: function () {\n\t\tif (this.serverProcessor) {\n\t\t\tthis.setTransactionMode(\"POST\", true);\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\n\t\t\tthis._serverProcessor = this.serverProcessor;\n\t\t}\n\t},\n\t\n\t/**\n\t *\t@desc: response from server\n\t *\t@param: xml - XMLLoader object with response XML\n\t *\t@type: private\n\t */\n\tafterUpdate: function (that, xml, id) {\n\t\tvar ajax = this.$scheduler.ajax;\n\n\t\tif (xml.xmlDoc.status !== 200){\n\t\t\tthis._errorResponse(xml, id);\n\t\t\treturn;\n\t\t}\n\n\t\t// try to use json first\n\t\tvar tag;\n\t\ttry {\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\n\t\t} catch (e) {\n\t\t\t// empty response also can be processed by json handler\n\t\t\tif (!xml.xmlDoc.responseText.length) {\n\t\t\t\ttag = {};\n\t\t\t}\n\t\t}\n\n\t\tif (tag) {\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\n\t\t\tvar sid = tag.sid || id[0];\n\t\t\tvar tid = tag.tid || id[0];\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\n\t\t\tthat.finalizeUpdate();\n\t\t\treturn;\n\t\t}\n\n\t\t// xml response\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\n\t\tif (!top) {\n\t\t\treturn this._errorResponse(xml, id);\n\t\t}\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\n\t\tif (!atag.length) {\n\t\t\treturn this._errorResponse(xml, id);\n\t\t}\n\n\t\tfor (var i = 0; i < atag.length; i++) {\n\t\t\tvar btag = atag[i];\n\t\t\tvar action = btag.getAttribute(\"type\");\n\t\t\tvar sid = btag.getAttribute(\"sid\");\n\t\t\tvar tid = btag.getAttribute(\"tid\");\n\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\n\t\t}\n\t\tthat.finalizeUpdate();\n\t},\n\tcleanUpdate: function (id) {\n\t\tif (id)\n\t\t\tfor (var i = 0; i < id.length; i++)\n\t\t\t\tdelete this._in_progress[id[i]];\n\t},\n\tfinalizeUpdate: function () {\n\t\tif (this._waitMode) this._waitMode--;\n\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\n\t\tif (!this.updatedRows.length)\n\t\t\tthis.callEvent(\"onFullSync\", []);\n\t},\n\n\t/**\n\t *\t@desc: initializes data-processor\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\n\t *\t@type: public\n\t */\n\tinit: function (scheduler) {\n\t\tif (this._initialized) {\n\t\t\treturn;\n\t\t}\n\t\tthis.$scheduler = scheduler;\n\t\tif (this.$scheduler._dp_init) {\n\t\t\tthis.$scheduler._dp_init(this);\n\t\t}\n\n\t\tthis._setDefaultTransactionMode();\n\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\n\t\textendScheduler(this.$scheduler, this);\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\n\t\tdataProcessorEvents.attach();\n\t\tthis.attachEvent(\"onDestroy\", function() {\n\t\t\tdelete this._getRowData;\n\n\t\t\tdelete this.$scheduler._dp;\n\t\t\tdelete this.$scheduler._dataprocessor;\n\t\t\tdelete this.$scheduler._set_event_text_style;\n\t\t\tdelete this.$scheduler._dp_change_event_id;\n\t\t\tdelete this.$scheduler._dp_hook_delete;\n\t\t\tdelete this.$scheduler;\n\t\t\tdataProcessorEvents.detach();\n\t\t});\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\n\t\tthis._initialized = true;\n\n\t\tscheduler._dataprocessor=this;\n\t},\n\n\tsetOnAfterUpdate: function (ev) {\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\n\t},\n\tsetOnBeforeUpdateHandler: function (func) {\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\n\t},\n\n\t/* starts autoupdate mode\n\t\t@param interval time interval for sending update requests\n\t*/\n\tsetAutoUpdate: function (interval, user) {\n\t\tinterval = interval || 2000;\n\n\t\tthis._user = user || (new Date()).valueOf();\n\t\tthis._need_update = false;\n\t\t//this._loader = null;\n\t\tthis._update_busy = false;\n\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\n\t\t});\n\t\tthis.attachEvent(\"onFullSync\", function () {\n\t\t\tthis.fullSync();\n\t\t});\n\n\t\tvar self = this;\n\t\tlet intervalId = global.setInterval(function () {\n\t\t\tself.loadUpdate();\n\t\t}, interval);\n\t\tthis.attachEvent(\"onDestroy\", function(){\n\t\t\tclearInterval(intervalId);\n\t\t});\n\t},\n\n\t/* process updating request answer\n\t\tif status == collision version is deprecated\n\t\tset flag for autoupdating immediately\n\t*/\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\n\t\tif (action == 'collision') {\n\t\t\tthis._need_update = true;\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t/* callback function for onFillSync event\n\t\tcall update function if it's need\n\t*/\n\tfullSync: function () {\n\t\tif (this._need_update) {\n\t\t\tthis._need_update = false;\n\t\t\tthis.loadUpdate();\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* sends query to the server and call callback function\n\t*/\n\tgetUpdates: function (url, callback) {\n\t\tvar ajax = this.$scheduler.ajax;\n\t\tif (this._update_busy)\n\t\t\treturn false;\n\t\telse\n\t\t\tthis._update_busy = true;\n\n\t\tajax.get(url, callback);\n\t},\n\n\t/* returns xml node value\n\t\t@param node\n\t\t\txml node\n\t*/\n\t_getXmlNodeValue: function(node) {\n\t\tif (node.firstChild) {\n\t\t\treturn node.firstChild.nodeValue;\n\t\t}\n\t\treturn \"\";\n\t},\n\n\t/* loads updates and processes them\n\t*/\n\tloadUpdate: function () {\n\t\tvar self = this;\n\t\tvar ajax = this.$scheduler.ajax;\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\n\t\turl = url.replace(\"editing=true&\", \"\");\n\t\tthis.getUpdates(url, function (xml) {\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\n\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\n\t\t\tif (updates.length) {\n\t\t\t\tself._silent_mode = true;\n\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\n\t\t\t\t\tswitch (status) {\n\t\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"updated\":\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tself._silent_mode = false;\n\t\t\t}\n\t\t\tself._update_busy = false;\n\t\t\tself = null;\n\t\t});\n\t},\n\n\tdestructor: function() {\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t\tthis.updatedRows = [];\n\t\tthis._in_progress = {};\n\t\tthis._invalid = {};\n\t\tthis._headers = null;\n\t\tthis._payload = null;\n\t\tdelete this._initialized;\n\t},\n\n\turl: function(url) {\n\t\tthis.serverProcessor = this._serverProcessor = url;\n\t},\n\n\t_serializeAsJSON: function(data) {\n\t\tif (typeof data === \"string\") {\n\t\t\treturn data;\n\t\t}\n\n\t\tvar copy = this.$scheduler.utils.copy(data);\n\t\tif (this._tMode === \"REST-JSON\") {\n\t\t\tdelete copy.id;\n\t\t\tdelete copy[this.action_param];\n\t\t}\n\n\t\treturn JSON.stringify(copy);\n\t},\n\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\n\t// clear extra info from the data in order not to change the request format\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\n\t\tvar processedData;\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\n\t\t\tprocessedData = {};\n\t\t\tfor(var i in dataToSend) {\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\n\t\t}\n\t\treturn processedData;\n\t},\n\t_cleanupItemBeforeSend: function(updatedItem) {\n\t\tvar output = null;\n\t\tif(updatedItem){\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\n\t\t\t\toutput = {};\n\t\t\t\toutput.id = updatedItem.id;\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\n\t\t\t}else{\n\t\t\t\toutput = updatedItem;\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t_forEachUpdatedRow: function(code) {\n\t\tvar updatedRows = this.updatedRows.slice();\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\n\t\t\tvar rowId = updatedRows[i];\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\n\t\t\t\tcode.call(this, rowId);\n\t\t\t}\n\t\t}\n\t},\n\t_prepareItemForJson(item){\n\t\tconst processedItem = {};\n\t\tconst scheduler = this.$scheduler;\n\t\tconst copy = scheduler.utils.copy(item);\n\t\tfor (let i in copy) {\n\t\t\tlet prop = copy[i];\n\t\t\tif (i.indexOf(\"_\") === 0) {\n\t\t\t\tcontinue;\n\t\t\t} else if (prop){\n\t\t\t\tif(prop.getUTCFullYear){\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\n\t\t\t\t} else if(typeof prop == \"object\") {\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForJson(prop);\n\t\t\t\t} else {\n\t\t\t\t\tprocessedItem[i] = prop; \n\t\t\t\t}\n\t\t\t} else if (prop !== undefined){\n\t\t\t\tprocessedItem[i] = prop; \n\t\t\t}\n\t\t}\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\n\t\treturn processedItem;\n\t},\n\t_prepareItemForForm(item){\n\t\tconst processedItem = {};\n\t\tconst scheduler = this.$scheduler;\n\t\tconst copy = scheduler.utils.copy(item);\n\t\tfor (var i in copy) {\n\t\t\tlet prop = copy[i];\n\t\t\tif (i.indexOf(\"_\") === 0) {\n\t\t\t\tcontinue;\n\t\t\t} else if (prop) {\n\t\t\t\tif(prop.getUTCFullYear){\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\n\t\t\t\t} else if(typeof prop == \"object\") {\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForForm(prop);\n\t\t\t\t} else {\n\t\t\t\t\tprocessedItem[i] = prop;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprocessedItem[i] = \"\"; // for all falthy values\n\t\t\t}\n\t\t}\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\n\t\treturn processedItem;\n\t},\n\t_prepareDataItem: function(item) {\n\t\tif(this._serializeAsJson){\n\t\t\treturn this._prepareItemForJson(item);\n\t\t}else {\n\t\t\treturn this._prepareItemForForm(item);\n\t\t}\n\t},\n\t_getRowData: function(id) {\n\t\tvar dataItem = this.$scheduler.getEvent(id);\n\t\tif (!dataItem) {\n\t\t\tdataItem = { id: id };\n\t\t}\n\t\treturn this._prepareDataItem(dataItem);\n\t}\n};\n\n\nexport default function extend(scheduler) {\n\nscheduler.createDataProcessor = function(config) {\n\tvar router;\n\tvar tMode;\n\tif (config instanceof Function) {\n\t\trouter = config;\n\t} else if (config.hasOwnProperty(\"router\")) {\n\t\trouter = config.router;\n\t} else if(config.hasOwnProperty(\"event\")){\n\t\trouter = config;\n\t}\n\n\tif (router) {\n\t\ttMode = \"CUSTOM\";\n\t} else {\n\t\ttMode = config.mode || \"REST-JSON\";\n\t}\n\n\tvar dp = new DataProcessor(config.url);\n\tdp.init(scheduler);\n\tdp.setTransactionMode({\n\t\tmode: tMode,\n\t\trouter: router\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\n\treturn dp;\n};\n\nscheduler.DataProcessor = DataProcessor;\n\n}\n\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\nimport domHelpers from \"./utils/dom_helpers\";\n\n\nexport default function(scheduler) {\n\n\tvar boxAttribute = \"data-dhxbox\";\n\n\tvar _dhx_msg_cfg = null;\n\n\tfunction callback(config, result) {\n\t\tvar usercall = config.callback;\n\t\tmodalBox.hide(config.box);\n\n\t\t_dhx_msg_cfg = config.box = null;\n\tif (usercall)\n\t\t\tusercall(result);\n\t}\n\n\tfunction modal_key(event) {\n\t\tif (_dhx_msg_cfg) {\n\n\t\t\tvar code = event.which || event.keyCode;\n\t\t\tvar preventDefault = false;\n\n\t\t\tif (messageBox.keyboard) {\n\t\t\t\tif (code == 13 || code == 32) {\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\n\t\t\t\t\tvar target = event.target || event.srcElement;\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\n\t\t\t\t\t\tpreventDefault = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (code == 27) {\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\n\t\t\t\t\tpreventDefault = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (preventDefault) {\n\t\t\t\tif (event.preventDefault){\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\treturn !(event.cancelBubble = true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tscheduler.event(document, \"keydown\", modal_key, true);\n\n\tfunction modality(mode) {\n\t\tif (!modality.cover) {\n\t\t\tmodality.cover = document.createElement(\"div\");\n\t\t\t//necessary for IE only\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\n\t\t\tdocument.body.appendChild(modality.cover);\n\t\t}\n\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\n\t}\n\n\tfunction button(text, classValue, result) {\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \n\t\treturn `
${text}
`;\n\t}\n\n\tfunction info(text) {\n\t\tif (!messageBox.area) {\n\t\t\tmessageBox.area = document.createElement(\"div\");\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\n\t\t\tdocument.body.appendChild(messageBox.area);\n\t\t}\n\n\t\tmessageBox.hide(text.id);\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\n\t\tscheduler.event(message, \"click\",function (e) {\n if(text.callback) {\n text.callback.call(this, e);\n }\n\t\t\tmessageBox.hide(text.id);\n\t\t\ttext = null;\n\t\t});\n\n\t\tscheduler._waiAria.messageInfoAttr(message);\n\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\n\t\telse\n\t\t\tmessageBox.area.appendChild(message);\n\n\t\tif (text.expire > 0)\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\n\t\t\t}, text.expire);\n\n\t\tmessageBox.pull[text.id] = message;\n\t\tmessage = null;\n\n\t\treturn text.id;\n\t}\n\n\tfunction getFirstDefined() {\n\t\tvar values = [].slice.apply(arguments, [0]);\n\n\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\tif (values[i]) {\n\t\t\t\treturn values[i];\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfunction _boxStructure(config, ok, cancel) {\n\t\tvar box = document.createElement(\"div\");\n\n\t\tvar contentId = utils.uid();\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\n\n\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\n\t\tbox.setAttribute(boxAttribute, 1);\n\n\t\tvar inner = '';\n\n\t\tif (config.width)\n\t\t\tbox.style.width = config.width;\n\t\tif (config.height)\n\t\t\tbox.style.height = config.height;\n\t\tif (config.title)\n\t\t\tinner += '
' + config.title + '
';\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\n\t\tif (ok)\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\n\t\tif (cancel)\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n\t\tif (config.buttons) {\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\n\t\t\t\tvar btn = config.buttons[i];\n\t\t\t\tif (typeof btn == \"object\") {\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n\t\t\t\t\tvar label = btn.label;\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\n\t\t\t\t\tvar value = btn.value || i;\n\t\t\t\t\tinner += button(label, css, value);\n\t\t\t\t} else {\n\t\t\t\t\tinner += button(btn, btn, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinner += '
';\n\t\tbox.innerHTML = inner;\n\n\t\tif (config.content) {\n\t\t\tvar node = config.content;\n\t\t\tif (typeof node == \"string\")\n\t\t\t\tnode = document.getElementById(node);\n\t\t\tif (node.style.display == 'none')\n\t\t\t\tnode.style.display = \"\";\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\n\t\t}\n\n\t\tscheduler.event(box, \"click\", function (event) {\n\t\t\tvar source = event.target || event.srcElement;\n\t\t\tif (!source.className) source = source.parentNode;\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\n\t\t\t\tcallback(config, result);\n\t\t\t}\n\t\t});\n\t\tconfig.box = box;\n\t\tif (ok || cancel)\n\t\t\t_dhx_msg_cfg = config;\n\n\t\treturn box;\n\t}\n\n\tfunction _createBox(config, ok, cancel) {\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\n\n\t\tif (!config.hidden)\n\t\t\tmodality(true);\n\t\tdocument.body.appendChild(box);\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n\t\tif (config.position == \"top\")\n\t\t\tbox.style.top = \"-3px\";\n\t\telse\n\t\t\tbox.style.top = y + 'px';\n\t\tbox.style.left = x + 'px';\n\t\t//necessary for IE only\n\t\tscheduler.event(box, \"keydown\", modal_key);\n\n\t\tmodalBox.focus(box);\n\n\t\tif (config.hidden)\n\t\t\tmodalBox.hide(box);\n\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\n\t\treturn box;\n\t}\n\n\tfunction alertPopup(config) {\n\t\treturn _createBox(config, true, false);\n\t}\n\n\tfunction confirmPopup(config) {\n\t\treturn _createBox(config, true, true);\n\t}\n\n\tfunction boxPopup(config) {\n\t\treturn _createBox(config);\n\t}\n\n\tfunction box_params(text, type, callback) {\n\t\tif (typeof text != \"object\") {\n\t\t\tif (typeof type == \"function\") {\n\t\t\t\tcallback = type;\n\t\t\t\ttype = \"\";\n\t\t\t}\n\t\t\ttext = {text: text, type: type, callback: callback};\n\t\t}\n\t\treturn text;\n\t}\n\n\tfunction params(text, type, expire, id, callback) {\n\t\tif (typeof text != \"object\")\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\n\t\ttext.id = text.id || utils.uid();\n\t\ttext.expire = text.expire || messageBox.expire;\n\t\treturn text;\n\t}\n\n\tvar alertBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"confirm\";\n\t\treturn alertPopup(text);\n\t};\n\tvar confirmBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn confirmPopup(text);\n\t};\n\tvar modalBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn boxPopup(text);\n\t};\n\tmodalBox.hide = function (node) {\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\n\t\t\tnode = node.parentNode;\n\t\tif (node) {\n\t\t\tnode.parentNode.removeChild(node);\n\t\t\tmodality(false);\n\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\n\t\t}\n\t};\n\n\tmodalBox.focus = function (node) {\n\t\tsetTimeout(function () {\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\n\t\t\tif (focusable.length) {\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\n\t\t\t}\n\t\t}, 1);\n\t};\n\n\tvar messageBox = function (text, type, expire, id) {\n\t\ttext = params.apply(this, arguments);\n\t\ttext.type = text.type || \"info\";\n\n\t\tvar subtype = text.type.split(\"-\")[0];\n\t\tswitch (subtype) {\n\t\t\tcase \"alert\":\n\t\t\t\treturn alertPopup(text);\n\t\t\tcase \"confirm\":\n\t\t\t\treturn confirmPopup(text);\n\t\t\tcase \"modalbox\":\n\t\t\t\treturn boxPopup(text);\n\t\t\tdefault:\n\t\t\t\treturn info(text);\n\t\t}\n\t};\n\n\tmessageBox.seed = (new Date()).valueOf();\n\tmessageBox.uid = utils.uid;\n\tmessageBox.expire = 4000;\n\tmessageBox.keyboard = true;\n\tmessageBox.position = \"top\";\n\tmessageBox.pull = {};\n\tmessageBox.timers = {};\n\n\tmessageBox.hideAll = function () {\n\t\tfor (var key in messageBox.pull)\n\t\t\tmessageBox.hide(key);\n\t};\n\tmessageBox.hide = function (id) {\n\t\tvar obj = messageBox.pull[id];\n\t\tif (obj && obj.parentNode) {\n\t\t\twindow.setTimeout(function () {\n\t\t\t\tobj.parentNode.removeChild(obj);\n\t\t\t\tobj = null;\n\t\t\t}, 2000);\n\t\t\tobj.className += \" hidden\";\n\n\t\t\tif (messageBox.timers[id])\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\n\t\t\tdelete messageBox.pull[id];\n\t\t}\n\t};\n\n\tvar popups = [];\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\n\t\tpopups.push(box);\n\t});\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i] === box){\n\t\t\t\tpopups.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t});\n\n\tscheduler.attachEvent(\"onDestroy\", function(){\n\t\tif(modality.cover && modality.cover.parentNode){\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\n\t\t}\n\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i].parentNode){\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\n\t\t\t}\n\t\t}\n\t\tpopups = null;\n\n\t\tif(messageBox.area && messageBox.area.parentNode){\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\n\t\t}\n\t\tmessageBox = null;\n\t});\n\n\treturn {\n\t\talert: alertBox,\n\t\tconfirm: confirmBox,\n\t\tmessage: messageBox,\n\t\tmodalbox: modalBox\n\t};\n}","export default {\n\tdate: {\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"اليوم\",\n\t\tday_tab: \"يوم\",\n\t\tweek_tab: \"أسبوع\",\n\t\tmonth_tab: \"شهر\",\n\t\tnew_event: \"حدث جديد\",\n\t\ticon_save: \"اخزن\",\n\t\ticon_cancel: \"الغاء\",\n\t\ticon_details: \"تفاصيل\",\n\t\ticon_edit: \"تحرير\",\n\t\ticon_delete: \"حذف\",\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\n\t\tsection_description: \"الوصف\",\n\t\tsection_time: \"الفترة الزمنية\",\n\t\tfull_day: \"طوال اليوم\",\n\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\n\t\tsection_recurring: \"تكرار الحدث\",\n\t\tbutton_recurring: \"تعطيل\",\n\t\tbutton_recurring_open: \"تمكين\",\n\t\tbutton_edit_series: \"تحرير سلسلة\",\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"جدول\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create: \"Drag to create\",\n\t\tdrag_to_move: \"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour: \"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"شهري\",\n\t\trepeat_radio_year: \"سنوي\",\n\t\trepeat_radio_day_type: \"كل\",\n\t\trepeat_text_day_count: \"يوم\",\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\n\t\trepeat_week: \" تكرار كل\",\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\n\t\trepeat_radio_month_type: \"تكرار\",\n\t\trepeat_radio_month_start: \"في\",\n\t\trepeat_text_month_day: \"يوم كل\",\n\t\trepeat_text_month_count: \"شهر\",\n\t\trepeat_text_month_count2_before: \"كل\",\n\t\trepeat_text_month_count2_after: \"شهر\",\n\t\trepeat_year_label: \"في\",\n\t\tselect_year_day2: \"من\",\n\t\trepeat_text_year_day: \"يوم\",\n\t\tselect_year_month: \"شهر\",\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\n\t\trepeat_text_occurences_count: \"تكرارات\",\n\t\trepeat_radio_end2: \"بعد\",\n\t\trepeat_radio_end3: \"ينتهي في\",\n\n\t\trepeat_never: \"أبداً\",\n\t\trepeat_daily: \"كل يوم\",\n\t\trepeat_workdays: \"كل يوم عمل\",\n\t\trepeat_weekly: \"كل أسبوع\",\n\t\trepeat_monthly: \"كل شهر\",\n\t\trepeat_yearly: \"كل سنة\",\n\t\trepeat_custom: \"تخصيص\",\n\t\trepeat_freq_day: \"يوم\",\n\t\trepeat_freq_week: \"أسبوع\",\n\t\trepeat_freq_month: \"شهر\",\n\t\trepeat_freq_year: \"سنة\",\n\t\trepeat_on_date: \"في التاريخ\",\n\t\trepeat_ends: \"ينتهي\",\n\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\n\t}\n};\n\n\n","/*\n Translation by Sofya Morozova\n */\nexport default {\n\tdate: {\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Сёння\",\n\t\tday_tab: \"Дзень\",\n\t\tweek_tab: \"Тыдзень\",\n\t\tmonth_tab: \"Месяц\",\n\t\tnew_event: \"Новая падзея\",\n\t\ticon_save: \"Захаваць\",\n\t\ticon_cancel: \"Адмяніць\",\n\t\ticon_details: \"Дэталі\",\n\t\ticon_edit: \"Змяніць\",\n\t\ticon_delete: \"Выдаліць\",\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\n\t\tsection_description: \"Апісанне\",\n\t\tsection_time: \"Перыяд часу\",\n\t\tfull_day: \"Увесь дзень\",\n\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\n\t\tsection_recurring: \"Паўтарэнне\",\n\t\tbutton_recurring: \"Адключана\",\n\t\tbutton_recurring_open: \"Уключана\",\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Спіс\",\n\t\tdate: \"Дата\",\n\t\tdescription: \"Апісанне\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Год\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Спіс\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Спic\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Дзень\",\n\t\trepeat_radio_week: \"Тыдзень\",\n\t\trepeat_radio_month: \"Месяц\",\n\t\trepeat_radio_year: \"Год\",\n\t\trepeat_radio_day_type: \"Кожны\",\n\t\trepeat_text_day_count: \"дзень\",\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\n\t\trepeat_week: \" Паўтараць кожны\",\n\t\trepeat_text_week_count: \"тыдзень\",\n\t\trepeat_radio_month_type: \"Паўтараць\",\n\t\trepeat_radio_month_start: \"\",\n\t\trepeat_text_month_day: \" чысла кожнага\",\n\t\trepeat_text_month_count: \"месяцу\",\n\t\trepeat_text_month_count2_before: \"кожны \",\n\t\trepeat_text_month_count2_after: \"месяц\",\n\t\trepeat_year_label: \"\",\n\t\tselect_year_day2: \"\",\n\t\trepeat_text_year_day: \"дзень\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"Без даты заканчэння\",\n\t\trepeat_text_occurences_count: \"паўтораў\",\n\t\trepeat_radio_end2: \"\",\n\t\trepeat_radio_end3: \"Да \",\n\n\t\trepeat_never: \"Ніколі\",\n\t\trepeat_daily: \"Кожны дзень\",\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\n\t\trepeat_weekly: \"Кожны тыдзень\",\n\t\trepeat_monthly: \"Кожны месяц\",\n\t\trepeat_yearly: \"Кожны год\",\n\t\trepeat_custom: \"Наладжвальны\",\n\t\trepeat_freq_day: \"Дзень\",\n\t\trepeat_freq_week: \"Тыдзень\",\n\t\trepeat_freq_month: \"Месяц\",\n\t\trepeat_freq_year: \"Год\",\n\t\trepeat_on_date: \"На дату\",\n\t\trepeat_ends: \"Заканчваецца\",\n\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\n\t}\n};\n","/*\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\n */\nexport default {\n\tdate: {\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Hui\",\n\t\tday_tab: \"Dia\",\n\t\tweek_tab: \"Setmana\",\n\t\tmonth_tab: \"Mes\",\n\t\tnew_event: \"Nou esdeveniment\",\n\t\ticon_save: \"Guardar\",\n\t\ticon_cancel: \"Cancel·lar\",\n\t\ticon_details: \"Detalls\",\n\t\ticon_edit: \"Editar\",\n\t\ticon_delete: \"Esborrar\",\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\n\t\tsection_description: \"Descripció\",\n\t\tsection_time: \"Periode de temps\",\n\t\tfull_day: \"Tot el dia\",\n\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\n\t\tbutton_recurring: \"Impedit\",\n\t\tbutton_recurring_open: \"Permés\",\n\t\tbutton_edit_series: \"Edit sèrie\",\n\t\tbutton_edit_occurrence: \"Edita Instància\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Data\",\n\t\tdescription: \"Descripció\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Any\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Taula\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create: \"Drag to create\",\n\t\tdrag_to_move: \"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour: \"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"Mensual\",\n\t\trepeat_radio_year: \"Anual\",\n\t\trepeat_radio_day_type: \"Cada\",\n\t\trepeat_text_day_count: \"dia\",\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\n\t\trepeat_week: \" Repetir cada\",\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\n\t\trepeat_radio_month_type: \"Repetir\",\n\t\trepeat_radio_month_start: \"El\",\n\t\trepeat_text_month_day: \"dia cada\",\n\t\trepeat_text_month_count: \"mes\",\n\t\trepeat_text_month_count2_before: \"cada\",\n\t\trepeat_text_month_count2_after: \"mes\",\n\t\trepeat_year_label: \"El\",\n\t\tselect_year_day2: \"de\",\n\t\trepeat_text_year_day: \"dia\",\n\t\tselect_year_month: \"mes\",\n\t\trepeat_radio_end: \"Sense data de finalització\",\n\t\trepeat_text_occurences_count: \"ocurrències\",\n\t\trepeat_radio_end2: \"Després\",\n\t\trepeat_radio_end3: \"Finalitzar el\",\n\n\t\trepeat_never: \"Mai\",\n\t\trepeat_daily: \"Cada dia\",\n\t\trepeat_workdays: \"Cada dia laborable\",\n\t\trepeat_weekly: \"Cada setmana\",\n\t\trepeat_monthly: \"Cada mes\",\n\t\trepeat_yearly: \"Cada any\",\n\t\trepeat_custom: \"Personalitzat\",\n\t\trepeat_freq_day: \"Dia\",\n\t\trepeat_freq_week: \"Setmana\",\n\t\trepeat_freq_month: \"Mes\",\n\t\trepeat_freq_year: \"Any\",\n\t\trepeat_on_date: \"En la data\",\n\t\trepeat_ends: \"Finalitza\",\n\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\n\t}\n};","/*\nTranslation by FreezeSoul\n*/\n//scheduler.config.day_date=\"%M %d日 %D\";\n//scheduler.config.default_date=\"%Y年 %M %d日\";\n//scheduler.config.month_date=\"%Y年 %M\";\n\nexport default {\n\tdate: {\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"今天\",\n\t\tday_tab: \"日\",\n\t\tweek_tab: \"周\",\n\t\tmonth_tab: \"月\",\n\t\tnew_event: \"新建日程\",\n\t\ticon_save: \"保存\",\n\t\ticon_cancel: \"关闭\",\n\t\ticon_details: \"详细\",\n\t\ticon_edit: \"编辑\",\n\t\ticon_delete: \"删除\",\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\n\t\tconfirm_deleting: \"是否删除日程?\",\n\t\tsection_description: \"描述\",\n\t\tsection_time: \"时间范围\",\n\t\tfull_day: \"整天\",\n\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\n\t\tsection_recurring:\"重复周期\",\n\t\tbutton_recurring:\"禁用\",\n\t\tbutton_recurring_open:\"启用\",\n\t\tbutton_edit_series: \"编辑系列\",\n\t\tbutton_edit_occurrence: \"编辑实例\",\n\t\t\n\t\t/*agenda view extension*/\n\t\tagenda_tab:\"议程\",\n\t\tdate:\"日期\",\n\t\tdescription:\"说明\",\n\t\t\n\t\t/*year view extension*/\n\t\tyear_tab:\"今年\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"议程\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab:\"电网\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"按天\",\n\t\trepeat_radio_week: \"按周\",\n\t\trepeat_radio_month: \"按月\",\n\t\trepeat_radio_year: \"按年\",\n\t\trepeat_radio_day_type: \"每\",\n\t\trepeat_text_day_count: \"天\",\n\t\trepeat_radio_day_type2: \"每个工作日\",\n\t\trepeat_week: \" 重复 每\",\n\t\trepeat_text_week_count: \"星期的:\",\n\t\trepeat_radio_month_type: \"重复\",\n\t\trepeat_radio_month_start: \"在\",\n\t\trepeat_text_month_day: \"日 每\",\n\t\trepeat_text_month_count: \"月\",\n\t\trepeat_text_month_count2_before: \"每\",\n\t\trepeat_text_month_count2_after: \"月\",\n\t\trepeat_year_label: \"在\",\n\t\tselect_year_day2: \"的\",\n\t\trepeat_text_year_day: \"日\",\n\t\tselect_year_month: \"月\",\n\t\trepeat_radio_end: \"无结束日期\",\n\t\trepeat_text_occurences_count: \"次结束\",\n\t\trepeat_radio_end2: \"重复\",\n\t\trepeat_radio_end3: \"结束于\",\n\t\t\n\t\trepeat_never: \"从不\",\n\t\trepeat_daily: \"每天\",\n\t\trepeat_workdays: \"每个工作日\",\n\t\trepeat_weekly: \"每周\",\n\t\trepeat_monthly: \"每月\",\n\t\trepeat_yearly: \"每年\",\n\t\trepeat_custom: \"自定义\",\n\t\trepeat_freq_day: \"天\",\n\t\trepeat_freq_week: \"周\",\n\t\trepeat_freq_month: \"月\",\n\t\trepeat_freq_year: \"年\",\n\t\trepeat_on_date: \"在日期\",\n\t\trepeat_ends: \"结束\",\n\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Dnes\",\n\t\tday_tab: \"Den\",\n\t\tweek_tab: \"Týden\",\n\t\tmonth_tab: \"Měsíc\",\n\t\tnew_event: \"Nová událost\",\n\t\ticon_save: \"Uložit\",\n\t\ticon_cancel: \"Zpět\",\n\t\ticon_details: \"Detail\",\n\t\ticon_edit: \"Edituj\",\n\t\ticon_delete: \"Smazat\",\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\n\t\tsection_description: \"Poznámky\",\n\t\tsection_time: \"Doba platnosti\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\n\t\tsection_recurring: \"Opakování události\",\n\t\tbutton_recurring: \"Vypnuto\",\n\t\tbutton_recurring_open: \"Zapnuto\",\n\t\tbutton_edit_series: \"Edit series\",\n\t\tbutton_edit_occurrence: \"Upravit instance\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Program\",\n\t\tdate: \"Datum\",\n\t\tdescription: \"Poznámka\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Rok\",\n\t\tfull_day: \"Full day\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Program\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Mřížka\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Denně\",\n\t\trepeat_radio_week: \"Týdně\",\n\t\trepeat_radio_month: \"Měsíčně\",\n\t\trepeat_radio_year: \"Ročně\",\n\t\trepeat_radio_day_type: \"každý\",\n\t\trepeat_text_day_count: \"Den\",\n\t\trepeat_radio_day_type2: \"pracovní dny\",\n\t\trepeat_week: \"Opakuje každých\",\n\t\trepeat_text_week_count: \"Týdnů na:\",\n\t\trepeat_radio_month_type: \"u každého\",\n\t\trepeat_radio_month_start: \"na\",\n\t\trepeat_text_month_day: \"Den každého\",\n\t\trepeat_text_month_count: \"Měsíc\",\n\t\trepeat_text_month_count2_before: \"každý\",\n\t\trepeat_text_month_count2_after: \"Měsíc\",\n\t\trepeat_year_label: \"na\",\n\t\tselect_year_day2: \"v\",\n\t\trepeat_text_year_day: \"Den v\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"bez data ukončení\",\n\t\trepeat_text_occurences_count: \"Události\",\n\t\trepeat_radio_end2: \"po\",\n\t\trepeat_radio_end3: \"Konec\",\n\n\t\trepeat_never: \"Nikdy\",\n\t\trepeat_daily: \"Každý den\",\n\t\trepeat_workdays: \"Každý pracovní den\",\n\t\trepeat_weekly: \"Každý týden\",\n\t\trepeat_monthly: \"Každý měsíc\",\n\t\trepeat_yearly: \"Každý rok\",\n\t\trepeat_custom: \"Vlastní\",\n\t\trepeat_freq_day: \"Den\",\n\t\trepeat_freq_week: \"Týden\",\n\t\trepeat_freq_month: \"Měsíc\",\n\t\trepeat_freq_year: \"Rok\",\n\t\trepeat_on_date: \"Na datum\",\n\t\trepeat_ends: \"Končí\",\n\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Idag\",\n\t\tday_tab: \"Dag\",\n\t\tweek_tab: \"Uge\",\n\t\tmonth_tab: \"Måned\",\n\t\tnew_event: \"Ny begivenhed\",\n\t\ticon_save: \"Gem\",\n\t\ticon_cancel: \"Fortryd\",\n\t\ticon_details: \"Detaljer\",\n\t\ticon_edit: \"Tilret\",\n\t\ticon_delete: \"Slet\",\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\n\t\tsection_description: \"Beskrivelse\",\n\t\tsection_time: \"Tidsperiode\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\n\t\tsection_recurring: \"Gentag begivenhed\",\n\t\tbutton_recurring: \"Frakoblet\",\n\t\tbutton_recurring_open: \"Tilkoblet\",\n\t\tbutton_edit_series: \"Rediger serien\",\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Dagsorden\",\n\t\tdate: \"Dato\",\n\t\tdescription: \"Beskrivelse\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"År\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Dagsorden\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Grid\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Daglig\",\n\t\trepeat_radio_week: \"Ugenlig\",\n\t\trepeat_radio_month: \"Månedlig\",\n\t\trepeat_radio_year: \"Årlig\",\n\t\trepeat_radio_day_type: \"Hver\",\n\t\trepeat_text_day_count: \"dag\",\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\n\t\trepeat_week: \" Gentager sig hver\",\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\n\t\trepeat_radio_month_type: \"Hver den\",\n\t\trepeat_radio_month_start: \"Den\",\n\t\trepeat_text_month_day: \" i hver\",\n\t\trepeat_text_month_count: \"måned\",\n\t\trepeat_text_month_count2_before: \"hver\",\n\t\trepeat_text_month_count2_after: \"måned\",\n\t\trepeat_year_label: \"Den\",\n\t\tselect_year_day2: \"i\",\n\t\trepeat_text_year_day: \"dag i\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"Ingen slutdato\",\n\t\trepeat_text_occurences_count: \"gentagelse\",\n\t\trepeat_radio_end2: \"Efter\",\n\t\trepeat_radio_end3: \"Slut\",\n\n\t\trepeat_never: \"Aldrig\",\n\t\trepeat_daily: \"Hver dag\",\n\t\trepeat_workdays: \"Hver hverdag\",\n\t\trepeat_weekly: \"Hver uge\",\n\t\trepeat_monthly: \"Hver måned\",\n\t\trepeat_yearly: \"Hvert år\",\n\t\trepeat_custom: \"Brugerdefineret\",\n\t\trepeat_freq_day: \"Dag\",\n\t\trepeat_freq_week: \"Uge\",\n\t\trepeat_freq_month: \"Måned\",\n\t\trepeat_freq_year: \"År\",\n\t\trepeat_on_date: \"På dato\",\n\t\trepeat_ends: \"Slutter\",\n\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Heute\",\n\t\tday_tab: \"Tag\",\n\t\tweek_tab: \"Woche\",\n\t\tmonth_tab: \"Monat\",\n\t\tnew_event: \"neuer Eintrag\",\n\t\ticon_save: \"Speichern\",\n\t\ticon_cancel: \"Abbrechen\",\n\t\ticon_details: \"Details\",\n\t\ticon_edit: \"Ändern\",\n\t\ticon_delete: \"Löschen\",\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\n\t\tsection_description: \"Beschreibung\",\n\t\tsection_time: \"Zeitspanne\",\n\t\tfull_day: \"Ganzer Tag\",\n\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\n\t\tsection_recurring: \"Wiederholung\",\n\t\tbutton_recurring: \"Aus\",\n\t\tbutton_recurring_open: \"An\",\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Datum\",\n\t\tdescription: \"Beschreibung\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Jahre\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Grid\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Täglich\",\n\t\trepeat_radio_week: \"Wöchentlich\",\n\t\trepeat_radio_month: \"Monatlich\",\n\t\trepeat_radio_year: \"Jährlich\",\n\t\trepeat_radio_day_type: \"jeden\",\n\t\trepeat_text_day_count: \"Tag\",\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\n\t\trepeat_week: \" Wiederholt sich jede\",\n\t\trepeat_text_week_count: \"Woche am:\",\n\t\trepeat_radio_month_type: \"an jedem\",\n\t\trepeat_radio_month_start: \"am\",\n\t\trepeat_text_month_day: \"Tag eines jeden\",\n\t\trepeat_text_month_count: \"Monats\",\n\t\trepeat_text_month_count2_before: \"jeden\",\n\t\trepeat_text_month_count2_after: \"Monats\",\n\t\trepeat_year_label: \"am\",\n\t\tselect_year_day2: \"im\",\n\t\trepeat_text_year_day: \"Tag im\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"kein Enddatum\",\n\t\trepeat_text_occurences_count: \"Ereignissen\",\n\t\trepeat_radio_end3: \"Schluß\",\n\t\trepeat_radio_end2: \"nach\",\n\n\t\trepeat_never: \"Nie\",\n\t\trepeat_daily: \"Jeden Tag\",\n\t\trepeat_workdays: \"Jeden Werktag\",\n\t\trepeat_weekly: \"Jede Woche\",\n\t\trepeat_monthly: \"Jeden Monat\",\n\t\trepeat_yearly: \"Jedes Jahr\",\n\t\trepeat_custom: \"Benutzerdefiniert\",\n\t\trepeat_freq_day: \"Tag\",\n\t\trepeat_freq_week: \"Woche\",\n\t\trepeat_freq_month: \"Monat\",\n\t\trepeat_freq_year: \"Jahr\",\n\t\trepeat_on_date: \"Am Datum\",\n\t\trepeat_ends: \"Endet\",\n\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Σήμερα\",\n\t\tday_tab: \"Ημέρα\",\n\t\tweek_tab: \"Εβδομάδα\",\n\t\tmonth_tab: \"Μήνας\",\n\t\tnew_event: \"Νέο έργο\",\n\t\ticon_save: \"Αποθήκευση\",\n\t\ticon_cancel: \"Άκυρο\",\n\t\ticon_details: \"Λεπτομέρειες\",\n\t\ticon_edit: \"Επεξεργασία\",\n\t\ticon_delete: \"Διαγραφή\",\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\n\t\tsection_description: \"Περιγραφή\",\n\t\tsection_time: \"Χρονική περίοδος\",\n\t\tfull_day: \"Πλήρης Ημέρα\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\n\t\tbutton_recurring: \"Ανενεργό\",\n\t\tbutton_recurring_open: \"Ενεργό\",\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\n\t\tdate: \"Ημερομηνία\",\n\t\tdescription: \"Περιγραφή\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Έτος\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Πλέγμα\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Ημερησίως\",\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\n\t\trepeat_radio_month: \"Μηνιαίως\",\n\t\trepeat_radio_year: \"Ετησίως\",\n\t\trepeat_radio_day_type: \"Κάθε\",\n\t\trepeat_text_day_count: \"ημέρα\",\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\n\t\trepeat_week: \" Επανάληψη κάθε\",\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\n\t\trepeat_radio_month_type: \"Επανάληψη\",\n\t\trepeat_radio_month_start: \"Την\",\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\n\t\trepeat_text_month_count: \"μήνα\",\n\t\trepeat_text_month_count2_before: \"κάθε\",\n\t\trepeat_text_month_count2_after: \"μήνα\",\n\t\trepeat_year_label: \"Την\",\n\t\tselect_year_day2: \"του\",\n\t\trepeat_text_year_day: \"ημέρα\",\n\t\tselect_year_month: \"μήνα\",\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\n\t\trepeat_radio_end3: \"Λήγει την\",\n\t\trepeat_radio_end2: \"Μετά από\",\n\n\t\trepeat_never: \"Ποτέ\",\n\t\trepeat_daily: \"Κάθε μέρα\",\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\n\t\trepeat_monthly: \"Κάθε μήνα\",\n\t\trepeat_yearly: \"Κάθε χρόνο\",\n\t\trepeat_custom: \"Προσαρμοσμένο\",\n\t\trepeat_freq_day: \"Ημέρα\",\n\t\trepeat_freq_week: \"Εβδομάδα\",\n\t\trepeat_freq_month: \"Μήνας\",\n\t\trepeat_freq_year: \"Χρόνος\",\n\t\trepeat_on_date: \"Σε ημερομηνία\",\n\t\trepeat_ends: \"Λήγει\",\n\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\n\t}\n};\n\n","export default {\n\tdate:{\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n\t},\n\tlabels:{\n\t\tdhx_cal_today_button:\"Today\",\n\t\tday_tab:\"Day\",\n\t\tweek_tab:\"Week\",\n\t\tmonth_tab:\"Month\",\n\t\tnew_event:\"New event\",\n\t\ticon_save:\"Save\",\n\t\ticon_cancel:\"Cancel\",\n\t\ticon_details:\"Details\",\n\t\ticon_edit:\"Edit\",\n\t\ticon_delete:\"Delete\",\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\n\t\tsection_description:\"Description\",\n\t\tsection_time:\"Time period\",\n\t\tfull_day:\"Full day\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\n\t\tsection_recurring:\"Repeat event\",\n\t\tbutton_recurring:\"Disabled\",\n\t\tbutton_recurring_open:\"Enabled\",\n\t\tbutton_edit_series: \"Edit series\",\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab:\"Agenda\",\n\t\tdate:\"Date\",\n\t\tdescription:\"Description\",\n\n\t\t/*year view extension*/\n\t\tyear_tab:\"Year\",\n\n\t\t/* week agenda extension */\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Grid\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"Monthly\",\n\t\trepeat_radio_year: \"Yearly\",\n\t\trepeat_radio_day_type: \"Every\",\n\t\trepeat_text_day_count: \"day\",\n\t\trepeat_radio_day_type2: \"Every workday\",\n\t\trepeat_week: \" Repeat every\",\n\t\trepeat_text_week_count: \"week next days:\",\n\t\trepeat_radio_month_type: \"Repeat\",\n\t\trepeat_radio_month_start: \"On\",\n\t\trepeat_text_month_day: \"day every\",\n\t\trepeat_text_month_count: \"month\",\n\t\trepeat_text_month_count2_before: \"every\",\n\t\trepeat_text_month_count2_after: \"month\",\n\t\trepeat_year_label: \"On\",\n\t\tselect_year_day2: \"of\",\n\t\trepeat_text_year_day: \"day\",\n\t\tselect_year_month: \"month\",\n\t\trepeat_radio_end: \"No end date\",\n\t\trepeat_text_occurences_count: \"occurrences\",\n\t\trepeat_radio_end2: \"After\",\n\t\trepeat_radio_end3: \"End by\",\n\n\t\trepeat_never: \"Never\",\n\t\trepeat_daily: \"Every day\",\n\t\trepeat_workdays: \"Every weekday\",\n\t\trepeat_weekly: \"Every week\",\n\t\trepeat_monthly: \"Every month\",\n\t\trepeat_yearly: \"Every year\",\n\t\trepeat_custom: \"Custom\",\n\t\trepeat_freq_day: \"Day\",\n\t\trepeat_freq_week: \"Week\",\n\t\trepeat_freq_month: \"Month\",\n\t\trepeat_freq_year: \"Year\",\n\t\trepeat_on_date: \"On date\",\n\t\trepeat_ends: \"Ends\",\n\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\n\t}\n};\n\n","/*\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\n */\nexport default {\n\tdate: {\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Hoy\",\n\t\tday_tab: \"Día\",\n\t\tweek_tab: \"Semana\",\n\t\tmonth_tab: \"Mes\",\n\t\tnew_event: \"Nuevo evento\",\n\t\ticon_save: \"Guardar\",\n\t\ticon_cancel: \"Cancelar\",\n\t\ticon_details: \"Detalles\",\n\t\ticon_edit: \"Editar\",\n\t\ticon_delete: \"Eliminar\",\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\n\t\tsection_description: \"Descripción\",\n\t\tsection_time: \"Período\",\n\t\tfull_day: \"Todo el día\",\n\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\n\t\tsection_recurring: \"Repita el evento\",\n\t\tbutton_recurring: \"Impedido\",\n\t\tbutton_recurring_open: \"Permitido\",\n\t\tbutton_edit_series: \"Editar la serie\",\n\t\tbutton_edit_occurrence: \"Editar este evento\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Día\",\n\t\tdate: \"Fecha\",\n\t\tdescription: \"Descripción\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Año\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Día\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Reja\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Diariamente\",\n\t\trepeat_radio_week: \"Semanalmente\",\n\t\trepeat_radio_month: \"Mensualmente\",\n\t\trepeat_radio_year: \"Anualmente\",\n\t\trepeat_radio_day_type: \"Cada\",\n\t\trepeat_text_day_count: \"dia\",\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\n\t\trepeat_week: \" Repetir cada\",\n\t\trepeat_text_week_count: \"semana:\",\n\t\trepeat_radio_month_type: \"Repita\",\n\t\trepeat_radio_month_start: \"El\",\n\t\trepeat_text_month_day: \"dia cada \",\n\t\trepeat_text_month_count: \"mes\",\n\t\trepeat_text_month_count2_before: \"cada\",\n\t\trepeat_text_month_count2_after: \"mes\",\n\t\trepeat_year_label: \"El\",\n\t\tselect_year_day2: \"del\",\n\t\trepeat_text_year_day: \"dia\",\n\t\tselect_year_month: \"mes\",\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\n\t\trepeat_text_occurences_count: \"ocurrencias\",\n\t\trepeat_radio_end3: \"Fin\",\n\t\trepeat_radio_end2: \"Después de\",\n\n\t\trepeat_never: \"Nunca\",\n\t\trepeat_daily: \"Cada día\",\n\t\trepeat_workdays: \"Cada día laborable\",\n\t\trepeat_weekly: \"Cada semana\",\n\t\trepeat_monthly: \"Cada mes\",\n\t\trepeat_yearly: \"Cada año\",\n\t\trepeat_custom: \"Personalizado\",\n\t\trepeat_freq_day: \"Día\",\n\t\trepeat_freq_week: \"Semana\",\n\t\trepeat_freq_month: \"Mes\",\n\t\trepeat_freq_year: \"Año\",\n\t\trepeat_on_date: \"En la fecha\",\n\t\trepeat_ends: \"Termina\",\n\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\n\t}\n};\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Tänään\",\n\t\tday_tab: \"Päivä\",\n\t\tweek_tab: \"Viikko\",\n\t\tmonth_tab: \"Kuukausi\",\n\t\tnew_event: \"Uusi tapahtuma\",\n\t\ticon_save: \"Tallenna\",\n\t\ticon_cancel: \"Peru\",\n\t\ticon_details: \"Tiedot\",\n\t\ticon_edit: \"Muokkaa\",\n\t\ticon_delete: \"Poista\",\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\n\t\tsection_description: \"Kuvaus\",\n\t\tsection_time: \"Aikajakso\",\n\t\tfull_day: \"Koko päivä\",\n\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\n\t\tsection_recurring: \"Toista tapahtuma\",\n\t\tbutton_recurring: \"Ei käytössä\",\n\t\tbutton_recurring_open: \"Käytössä\",\n\t\tbutton_edit_series: \"Muokkaa sarja\",\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Esityslista\",\n\t\tdate: \"Päivämäärä\",\n\t\tdescription: \"Kuvaus\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Vuoden\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Esityslista\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Ritilä\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\n\t\tdrag_to_move:\"Siirrä vetämällä\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Päivittäin\",\n\t\trepeat_radio_week: \"Viikoittain\",\n\t\trepeat_radio_month: \"Kuukausittain\",\n\t\trepeat_radio_year: \"Vuosittain\",\n\t\trepeat_radio_day_type: \"Joka\",\n\t\trepeat_text_day_count: \"päivä\",\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\n\t\trepeat_week: \"Toista joka\",\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\n\t\trepeat_radio_month_type: \"Toista\",\n\t\trepeat_radio_month_start: \"\",\n\t\trepeat_text_month_day: \"päivänä joka\",\n\t\trepeat_text_month_count: \"kuukausi\",\n\t\trepeat_text_month_count2_before: \"joka\",\n\t\trepeat_text_month_count2_after: \"kuukausi\",\n\t\trepeat_year_label: \"\",\n\t\tselect_year_day2: \"\",\n\t\trepeat_text_year_day: \"päivä\",\n\t\tselect_year_month: \"kuukausi\",\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\n\t\trepeat_radio_end3: \"Loppuu\",\n\t\trepeat_radio_end2: \"\",\n\n\t\trepeat_never: \"Ei koskaan\",\n\t\trepeat_daily: \"Joka päivä\",\n\t\trepeat_workdays: \"Joka arkipäivä\",\n\t\trepeat_weekly: \"Joka viikko\",\n\t\trepeat_monthly: \"Joka kuukausi\",\n\t\trepeat_yearly: \"Joka vuosi\",\n\t\trepeat_custom: \"Mukautettu\",\n\t\trepeat_freq_day: \"Päivä\",\n\t\trepeat_freq_week: \"Viikko\",\n\t\trepeat_freq_month: \"Kuukausi\",\n\t\trepeat_freq_year: \"Vuosi\",\n\t\trepeat_on_date: \"Tiettynä päivänä\",\n\t\trepeat_ends: \"Päättyy\",\n\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\n\t}\n};\n\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\n\t\tday_tab: \"Jour\",\n\t\tweek_tab: \"Semaine\",\n\t\tmonth_tab: \"Mois\",\n\t\tnew_event: \"Nouvel événement\",\n\t\ticon_save: \"Enregistrer\",\n\t\ticon_cancel: \"Annuler\",\n\t\ticon_details: \"Détails\",\n\t\ticon_edit: \"Modifier\",\n\t\ticon_delete: \"Effacer\",\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\n\t\tsection_description: \"Description\",\n\t\tsection_time: \"Période\",\n\t\tfull_day: \"Journée complète\",\n\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\n\t\tsection_recurring: \"Périodicité\",\n\t\tbutton_recurring: \"Désactivé\",\n\t\tbutton_recurring_open: \"Activé\",\n\t\tbutton_edit_series: \"Modifier la série\",\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Jour\",\n\t\tdate: \"Date\",\n\t\tdescription: \"Description\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Année\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Jour\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Grille\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Quotidienne\",\n\t\trepeat_radio_week: \"Hebdomadaire\",\n\t\trepeat_radio_month: \"Mensuelle\",\n\t\trepeat_radio_year: \"Annuelle\",\n\t\trepeat_radio_day_type: \"Chaque\",\n\t\trepeat_text_day_count: \"jour\",\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\n\t\trepeat_week: \" Répéter toutes les\",\n\t\trepeat_text_week_count: \"semaine:\",\n\t\trepeat_radio_month_type: \"Répéter\",\n\t\trepeat_radio_month_start: \"Le\",\n\t\trepeat_text_month_day: \"jour chaque\",\n\t\trepeat_text_month_count: \"mois\",\n\t\trepeat_text_month_count2_before: \"chaque\",\n\t\trepeat_text_month_count2_after: \"mois\",\n\t\trepeat_year_label: \"Le\",\n\t\tselect_year_day2: \"du\",\n\t\trepeat_text_year_day: \"jour\",\n\t\tselect_year_month: \"mois\",\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\n\t\trepeat_text_occurences_count: \"occurrences\",\n\t\trepeat_radio_end3: \"Fin\",\n\t\trepeat_radio_end2: \"Après\",\n\n\t\trepeat_never: \"Jamais\",\n\t\trepeat_daily: \"Chaque jour\",\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\n\t\trepeat_weekly: \"Chaque semaine\",\n\t\trepeat_monthly: \"Chaque mois\",\n\t\trepeat_yearly: \"Chaque année\",\n\t\trepeat_custom: \"Personnalisé\",\n\t\trepeat_freq_day: \"Jour\",\n\t\trepeat_freq_week: \"Semaine\",\n\t\trepeat_freq_month: \"Mois\",\n\t\trepeat_freq_year: \"Année\",\n\t\trepeat_on_date: \"À la date\",\n\t\trepeat_ends: \"Se termine\",\n\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\n\t}\n};\n","export default {\n\tdate: {\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"היום\",\n\t\tday_tab: \"יום\",\n\t\tweek_tab: \"שבוע\",\n\t\tmonth_tab: \"חודש\",\n\t\tnew_event: \"ארוע חדש\",\n\t\ticon_save: \"שמור\",\n\t\ticon_cancel: \"בטל\",\n\t\ticon_details: \"פרטים\",\n\t\ticon_edit: \"ערוך\",\n\t\ticon_delete: \"מחק\",\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\n\t\tsection_description: \"תיאור\",\n\t\tsection_time: \"תקופה\",\n\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\n\t\tsection_recurring: \"להעתיק ארוע\",\n\t\tbutton_recurring: \"לא פעיל\",\n\t\tbutton_recurring_open: \"פעיל\",\n\t\tfull_day: \"יום שלם\",\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"סדר יום\",\n\t\tdate: \"תאריך\",\n\t\tdescription: \"תיאור\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"לשנה\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"סדר יום\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"סורג\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"גרור כדי להזיז\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"בטל\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"הבא\",\n\t\tprev: \"הקודם\",\n\t\tyear: \"שנה\",\n\t\tmonth: \"חודש\",\n\t\tday: \"יום\",\n\t\thour:\"שעה\",\n\t\tminute: \"דקה\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"יומי\",\n\t\trepeat_radio_week: \"שבועי\",\n\t\trepeat_radio_month: \"חודשי\",\n\t\trepeat_radio_year: \"שנתי\",\n\t\trepeat_radio_day_type: \"חזור כל\",\n\t\trepeat_text_day_count: \"ימים\",\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\n\t\trepeat_week: \" חזור כל\",\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\n\t\trepeat_radio_month_type: \"חזור כל\",\n\t\trepeat_radio_month_start: \"כל\",\n\t\trepeat_text_month_day: \"ימים כל\",\n\t\trepeat_text_month_count: \"חודשים\",\n\t\trepeat_text_month_count2_before: \"חזור כל\",\n\t\trepeat_text_month_count2_after: \"חודש\",\n\t\trepeat_year_label: \"כל\",\n\t\tselect_year_day2: \"בחודש\",\n\t\trepeat_text_year_day: \"ימים\",\n\t\tselect_year_month: \"חודש\",\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\n\t\trepeat_text_occurences_count: \"אירועים\",\n\t\trepeat_radio_end3: \"מסתיים ב\",\n\t\trepeat_radio_end2: \"אחרי\",\n\n\t\trepeat_never: \"אף פעם\",\n\t\trepeat_daily: \"כל יום\",\n\t\trepeat_workdays: \"כל יום עבודה\",\n\t\trepeat_weekly: \"כל שבוע\",\n\t\trepeat_monthly: \"כל חודש\",\n\t\trepeat_yearly: \"כל שנה\",\n\t\trepeat_custom: \"מותאם אישית\",\n\t\trepeat_freq_day: \"יום\",\n\t\trepeat_freq_week: \"שבוע\",\n\t\trepeat_freq_month: \"חודש\",\n\t\trepeat_freq_year: \"שנה\",\n\t\trepeat_on_date: \"בתאריך\",\n\t\trepeat_ends: \"מסתיים\",\n\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\n\t}\n};\n\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Ma\",\n\t\tday_tab: \"Nap\",\n\t\tweek_tab: \"Hét\",\n\t\tmonth_tab: \"Hónap\",\n\t\tnew_event: \"Új esemény\",\n\t\ticon_save: \"Mentés\",\n\t\ticon_cancel: \"Mégse\",\n\t\ticon_details: \"Részletek\",\n\t\ticon_edit: \"Szerkesztés\",\n\t\ticon_delete: \"Törlés\",\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\n\t\tsection_description: \"Leírás\",\n\t\tsection_time: \"Idõszak\",\n\t\tfull_day: \"Egesz napos\",\n\n\t\t/*ismétlõdõ események*/\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\n\t\tsection_recurring: \"Esemény ismétlése\",\n\t\tbutton_recurring: \"Tiltás\",\n\t\tbutton_recurring_open: \"Engedélyezés\",\n\t\tbutton_edit_series: \"Edit series\",\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\n\n\t\t/*napirendi nézet*/\n\t\tagenda_tab: \"Napirend\",\n\t\tdate: \"Dátum\",\n\t\tdescription: \"Leírás\",\n\n\t\t/*éves nézet*/\n\t\tyear_tab: \"Év\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"Havi\",\n\t\trepeat_radio_year: \"Éves\",\n\t\trepeat_radio_day_type: \"Minden\",\n\t\trepeat_text_day_count: \"nap\",\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\n\t\trepeat_week: \" Ismételje meg minden\",\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\n\t\trepeat_radio_month_type: \"Ismétlés\",\n\t\trepeat_radio_month_start: \"Ekkor\",\n\t\trepeat_text_month_day: \"nap minden\",\n\t\trepeat_text_month_count: \"hónapban\",\n\t\trepeat_text_month_count2_before: \"minden\",\n\t\trepeat_text_month_count2_after: \"hónapban\",\n\t\trepeat_year_label: \"Ekkor\",\n\t\tselect_year_day2: \"-án/-én\",\n\t\trepeat_text_year_day: \"nap\",\n\t\tselect_year_month: \"hónap\",\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\n\t\trepeat_text_occurences_count: \"esemény\",\n\t\trepeat_radio_end2: \"Után\",\n\t\trepeat_radio_end3: \"Befejező dátum\",\n\n\t\trepeat_never: \"Soha\",\n\t\trepeat_daily: \"Minden nap\",\n\t\trepeat_workdays: \"Minden munkanap\",\n\t\trepeat_weekly: \"Minden héten\",\n\t\trepeat_monthly: \"Minden hónapban\",\n\t\trepeat_yearly: \"Minden évben\",\n\t\trepeat_custom: \"Egyedi\",\n\t\trepeat_freq_day: \"Nap\",\n\t\trepeat_freq_week: \"Hét\",\n\t\trepeat_freq_month: \"Hónap\",\n\t\trepeat_freq_year: \"Év\",\n\t\trepeat_on_date: \"Dátum szerint\",\n\t\trepeat_ends: \"Befejeződik\",\n\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Hari Ini\",\n\t\tday_tab: \"Hari\",\n\t\tweek_tab: \"Minggu\",\n\t\tmonth_tab: \"Bulan\",\n\t\tnew_event: \"Acara Baru\",\n\t\ticon_save: \"Simpan\",\n\t\ticon_cancel: \"Batal\",\n\t\ticon_details: \"Detail\",\n\t\ticon_edit: \"Edit\",\n\t\ticon_delete: \"Hapus\",\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\n\t\tconfirm_deleting: \"Acara akan dihapus\",\n\t\tsection_description: \"Keterangan\",\n\t\tsection_time: \"Periode\",\n\t\tfull_day: \"Hari penuh\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\n\t\tsection_recurring: \"Acara Rutin\",\n\t\tbutton_recurring: \"Tidak Difungsikan\",\n\t\tbutton_recurring_open: \"Difungsikan\",\n\t\tbutton_edit_series: \"Mengedit seri\",\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Tanggal\",\n\t\tdescription: \"Keterangan\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Tahun\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Tabel\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"Bulanan\",\n\t\trepeat_radio_year: \"Tahunan\",\n\t\trepeat_radio_day_type: \"Setiap\",\n\t\trepeat_text_day_count: \"hari\",\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\n\t\trepeat_week: \" Ulangi setiap\",\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\n\t\trepeat_radio_month_type: \"Ulangi\",\n\t\trepeat_radio_month_start: \"Pada\",\n\t\trepeat_text_month_day: \"hari setiap\",\n\t\trepeat_text_month_count: \"bulan\",\n\t\trepeat_text_month_count2_before: \"setiap\",\n\t\trepeat_text_month_count2_after: \"bulan\",\n\t\trepeat_year_label: \"Pada\",\n\t\tselect_year_day2: \"dari\",\n\t\trepeat_text_year_day: \"hari\",\n\t\tselect_year_month: \"bulan\",\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\n\t\trepeat_text_occurences_count: \"kejadian\",\n\t\trepeat_radio_end2: \"Setelah\",\n\t\trepeat_radio_end3: \"Berakhir pada\",\n\n\t\trepeat_never: \"Tidak pernah\",\n\t\trepeat_daily: \"Setiap hari\",\n\t\trepeat_workdays: \"Setiap hari kerja\",\n\t\trepeat_weekly: \"Setiap minggu\",\n\t\trepeat_monthly: \"Setiap bulan\",\n\t\trepeat_yearly: \"Setiap tahun\",\n\t\trepeat_custom: \"Kustom\",\n\t\trepeat_freq_day: \"Hari\",\n\t\trepeat_freq_week: \"Minggu\",\n\t\trepeat_freq_month: \"Bulan\",\n\t\trepeat_freq_year: \"Tahun\",\n\t\trepeat_on_date: \"Pada tanggal\",\n\t\trepeat_ends: \"Berakhir\",\n\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\n\t}\n};","export default {\n\tdate: {\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Oggi\",\n\t\tday_tab: \"Giorno\",\n\t\tweek_tab: \"Settimana\",\n\t\tmonth_tab: \"Mese\",\n\t\tnew_event: \"Nuovo evento\",\n\t\ticon_save: \"Salva\",\n\t\ticon_cancel: \"Chiudi\",\n\t\ticon_details: \"Dettagli\",\n\t\ticon_edit: \"Modifica\",\n\t\ticon_delete: \"Elimina\",\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\n\t\tsection_description: \"Descrizione\",\n\t\tsection_time: \"Periodo di tempo\",\n\t\tfull_day: \"Intera giornata\",\n\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\n\t\tsection_recurring: \"Ripetere l'evento\",\n\t\tbutton_recurring: \"Disattivato\",\n\t\tbutton_recurring_open: \"Attivato\",\n\t\tbutton_edit_series: \"Modificare la serie\",\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Data\",\n\t\tdescription: \"Descrizione\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Anno\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Griglia\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Quotidiano\",\n\t\trepeat_radio_week: \"Settimanale\",\n\t\trepeat_radio_month: \"Mensile\",\n\t\trepeat_radio_year: \"Annuale\",\n\t\trepeat_radio_day_type: \"Ogni\",\n\t\trepeat_text_day_count: \"giorno\",\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\n\t\trepeat_week: \" Ripetere ogni\",\n\t\trepeat_text_week_count: \"settimana:\",\n\t\trepeat_radio_month_type: \"Ripetere\",\n\t\trepeat_radio_month_start: \"Il\",\n\t\trepeat_text_month_day: \"giorno ogni\",\n\t\trepeat_text_month_count: \"mese\",\n\t\trepeat_text_month_count2_before: \"ogni\",\n\t\trepeat_text_month_count2_after: \"mese\",\n\t\trepeat_year_label: \"Il\",\n\t\tselect_year_day2: \"del\",\n\t\trepeat_text_year_day: \"giorno\",\n\t\tselect_year_month: \"mese\",\n\t\trepeat_radio_end: \"Senza data finale\",\n\t\trepeat_text_occurences_count: \"occorenze\",\n\t\trepeat_radio_end3: \"Fine\",\n\t\trepeat_radio_end2: \"Dopo\",\n\n\t\trepeat_never: \"Mai\",\n\t\trepeat_daily: \"Ogni giorno\",\n\t\trepeat_workdays: \"Ogni giorno feriale\",\n\t\trepeat_weekly: \"Ogni settimana\",\n\t\trepeat_monthly: \"Ogni mese\",\n\t\trepeat_yearly: \"Ogni anno\",\n\t\trepeat_custom: \"Personalizzato\",\n\t\trepeat_freq_day: \"Giorno\",\n\t\trepeat_freq_week: \"Settimana\",\n\t\trepeat_freq_month: \"Mese\",\n\t\trepeat_freq_year: \"Anno\",\n\t\trepeat_on_date: \"Alla data\",\n\t\trepeat_ends: \"Finisce\",\n\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\n\t}\n};\n","/*\n Translation by Genexus Japan Inc.\n */\nexport default {\n\tdate: {\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"今日\",\n\t\tday_tab: \"日\",\n\t\tweek_tab: \"週\",\n\t\tmonth_tab: \"月\",\n\t\tnew_event: \"新イベント\",\n\t\ticon_save: \"保存\",\n\t\ticon_cancel: \"キャンセル\",\n\t\ticon_details: \"詳細\",\n\t\ticon_edit: \"編集\",\n\t\ticon_delete: \"削除\",\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\n\t\tsection_description: \"デスクリプション\",\n\t\tsection_time: \"期間\",\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\n\t\tsection_recurring: \"イベントを繰り返す\",\n\t\tbutton_recurring: \"無効\",\n\t\tbutton_recurring_open: \"有効\",\n\t\tfull_day: \"終日\",\n\t\tbutton_edit_series: \"シリーズを編集します\",\n\t\tbutton_edit_occurrence: \"コピーを編集\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"議題は\",\n\t\tdate: \"日付\",\n\t\tdescription: \"説明\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"今年\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"議題は\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"グリッド\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"毎月\",\n\t\trepeat_radio_year: \"毎年\",\n\t\trepeat_radio_day_type: \"毎\",\n\t\trepeat_text_day_count: \"日\",\n\t\trepeat_radio_day_type2: \"毎営業日\",\n\t\trepeat_week: \" 繰り返し毎\",\n\t\trepeat_text_week_count: \"週 次の日:\",\n\t\trepeat_radio_month_type: \"繰り返し\",\n\t\trepeat_radio_month_start: \"オン\",\n\t\trepeat_text_month_day: \"日毎\",\n\t\trepeat_text_month_count: \"月\",\n\t\trepeat_text_month_count2_before: \"毎\",\n\t\trepeat_text_month_count2_after: \"月\",\n\t\trepeat_year_label: \"オン\",\n\t\tselect_year_day2: \"の\",\n\t\trepeat_text_year_day: \"日\",\n\t\tselect_year_month: \"月\",\n\t\trepeat_radio_end: \"終了日なし\",\n\t\trepeat_text_occurences_count: \"回数\",\n\t\trepeat_radio_end2: \"後\",\n\t\trepeat_radio_end3: \"終了日まで\",\n\n\t\trepeat_never: \"決して\",\n\t\trepeat_daily: \"毎日\",\n\t\trepeat_workdays: \"毎営業日\",\n\t\trepeat_weekly: \"毎週\",\n\t\trepeat_monthly: \"毎月\",\n\t\trepeat_yearly: \"毎年\",\n\t\trepeat_custom: \"カスタム\",\n\t\trepeat_freq_day: \"日\",\n\t\trepeat_freq_week: \"週\",\n\t\trepeat_freq_month: \"月\",\n\t\trepeat_freq_year: \"年\",\n\t\trepeat_on_date: \"日にち\",\n\t\trepeat_ends: \"終了\",\n\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\n\t}\n};\n\n\n","export default class LocaleManager{\n\tconstructor(config){\n\t\tthis._locales = {};\n\t\tfor(const i in config){\n\t\t\tthis._locales[i] = config[i];\n\t\t}\n\t}\n\n\taddLocale(name, locale) {\n\t\tthis._locales[name] = locale;\n\t}\n\n\tgetLocale(name) {\n\t\treturn this._locales[name];\n\t}\n}","export default {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"I dag\",\n\t\tday_tab: \"Dag\",\n\t\tweek_tab: \"Uke\",\n\t\tmonth_tab: \"Måned\",\n\t\tnew_event: \"Ny hendelse\",\n\t\ticon_save: \"Lagre\",\n\t\ticon_cancel: \"Avbryt\",\n\t\ticon_details: \"Detaljer\",\n\t\ticon_edit: \"Rediger\",\n\t\ticon_delete: \"Slett\",\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\n\t\tsection_description: \"Beskrivelse\",\n\t\tsection_time: \"Tidsperiode\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\n\t\tsection_recurring: \"Repeter hendelsen\",\n\t\tbutton_recurring: \"Av\",\n\t\tbutton_recurring_open: \"På\",\n\t\tbutton_edit_series: \"Rediger serien\",\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Dato\",\n\t\tdescription: \"Beskrivelse\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"År\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Grid\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Daglig\",\n\t\trepeat_radio_week: \"Ukentlig\",\n\t\trepeat_radio_month: \"Månedlig\",\n\t\trepeat_radio_year: \"Årlig\",\n\t\trepeat_radio_day_type: \"Hver\",\n\t\trepeat_text_day_count: \"dag\",\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\n\t\trepeat_week: \" Gjentas hver\",\n\t\trepeat_text_week_count: \"uke på:\",\n\t\trepeat_radio_month_type: \"På hver\",\n\t\trepeat_radio_month_start: \"På\",\n\t\trepeat_text_month_day: \"dag hver\",\n\t\trepeat_text_month_count: \"måned\",\n\t\trepeat_text_month_count2_before: \"hver\",\n\t\trepeat_text_month_count2_after: \"måned\",\n\t\trepeat_year_label: \"på\",\n\t\tselect_year_day2: \"i\",\n\t\trepeat_text_year_day: \"dag i\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"Ingen sluttdato\",\n\t\trepeat_text_occurences_count: \"forekomst\",\n\t\trepeat_radio_end3: \"Stop den\",\n\t\trepeat_radio_end2: \"Etter\",\n\n\t\trepeat_never: \"Aldri\",\n\t\trepeat_daily: \"Hver dag\",\n\t\trepeat_workdays: \"Hver ukedag\",\n\t\trepeat_weekly: \"Hver uke\",\n\t\trepeat_monthly: \"Hver måned\",\n\t\trepeat_yearly: \"Hvert år\",\n\t\trepeat_custom: \"Tilpasset\",\n\t\trepeat_freq_day: \"Dag\",\n\t\trepeat_freq_week: \"Uke\",\n\t\trepeat_freq_month: \"Måned\",\n\t\trepeat_freq_year: \"År\",\n\t\trepeat_on_date: \"På dato\",\n\t\trepeat_ends: \"Slutter\",\n\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\n\t}\n};\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Vandaag\",\n\t\tday_tab: \"Dag\",\n\t\tweek_tab: \"Week\",\n\t\tmonth_tab: \"Maand\",\n\t\tnew_event: \"Nieuw item\",\n\t\ticon_save: \"Opslaan\",\n\t\ticon_cancel: \"Annuleren\",\n\t\ticon_details: \"Details\",\n\t\ticon_edit: \"Bewerken\",\n\t\ticon_delete: \"Verwijderen\",\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\n\t\tsection_description: \"Beschrijving\",\n\t\tsection_time: \"Tijd periode\",\n\t\tfull_day: \"Hele dag\",\n\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\n\t\tsection_recurring: \"Item herhalen\",\n\t\tbutton_recurring: \"Uit\",\n\t\tbutton_recurring_open: \"Aan\",\n\t\tbutton_edit_series: \"Bewerk de serie\",\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Datum\",\n\t\tdescription: \"Omschrijving\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Jaar\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Tabel\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Dagelijks\",\n\t\trepeat_radio_week: \"Wekelijks\",\n\t\trepeat_radio_month: \"Maandelijks\",\n\t\trepeat_radio_year: \"Jaarlijks\",\n\t\trepeat_radio_day_type: \"Elke\",\n\t\trepeat_text_day_count: \"dag(en)\",\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\n\t\trepeat_week: \" Herhaal elke\",\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\n\t\trepeat_radio_month_type: \"Herhaal\",\n\t\trepeat_radio_month_start: \"Op\",\n\t\trepeat_text_month_day: \"dag iedere\",\n\t\trepeat_text_month_count: \"maanden\",\n\t\trepeat_text_month_count2_before: \"iedere\",\n\t\trepeat_text_month_count2_after: \"maanden\",\n\t\trepeat_year_label: \"Op\",\n\t\tselect_year_day2: \"van\",\n\t\trepeat_text_year_day: \"dag\",\n\t\tselect_year_month: \"maand\",\n\t\trepeat_radio_end: \"Geen eind datum\",\n\t\trepeat_text_occurences_count: \"keren\",\n\t\trepeat_radio_end3: \"Eindigd per\",\n\t\trepeat_radio_end2: \"Na\",\n\n\t\trepeat_never: \"Nooit\",\n\t\trepeat_daily: \"Elke dag\",\n\t\trepeat_workdays: \"Elke werkdag\",\n\t\trepeat_weekly: \"Elke week\",\n\t\trepeat_monthly: \"Elke maand\",\n\t\trepeat_yearly: \"Elk jaar\",\n\t\trepeat_custom: \"Aangepast\",\n\t\trepeat_freq_day: \"Dag\",\n\t\trepeat_freq_week: \"Week\",\n\t\trepeat_freq_month: \"Maand\",\n\t\trepeat_freq_year: \"Jaar\",\n\t\trepeat_on_date: \"Op datum\",\n\t\trepeat_ends: \"Eindigt\",\n\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\n\t}\n};\n\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Idag\",\n\t\tday_tab: \"Dag\",\n\t\tweek_tab: \"Uke\",\n\t\tmonth_tab: \"Måned\",\n\t\tnew_event: \"Ny\",\n\t\ticon_save: \"Lagre\",\n\t\ticon_cancel: \"Avbryt\",\n\t\ticon_details: \"Detaljer\",\n\t\ticon_edit: \"Endre\",\n\t\ticon_delete: \"Slett\",\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\n\t\tsection_description: \"Beskrivelse\",\n\t\tsection_time: \"Tidsperiode\",\n\t\tfull_day: \"Full dag\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\n\t\tsection_recurring: \"Repeterende oppføring\",\n\t\tbutton_recurring: \"Ikke aktiv\",\n\t\tbutton_recurring_open: \"Aktiv\",\n\t\tbutton_edit_series: \"Rediger serien\",\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Dato\",\n\t\tdescription: \"Beskrivelse\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"År\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Grid\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"Månedlig\",\n\t\trepeat_radio_year: \"Årlig\",\n\t\trepeat_radio_day_type: \"Hver\",\n\t\trepeat_text_day_count: \"dag\",\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\n\t\trepeat_week: \" Gjenta hver\",\n\t\trepeat_text_week_count: \"uke neste dager:\",\n\t\trepeat_radio_month_type: \"Gjenta\",\n\t\trepeat_radio_month_start: \"På\",\n\t\trepeat_text_month_day: \"dag hver\",\n\t\trepeat_text_month_count: \"måned\",\n\t\trepeat_text_month_count2_before: \"hver\",\n\t\trepeat_text_month_count2_after: \"måned\",\n\t\trepeat_year_label: \"På\",\n\t\tselect_year_day2: \"av\",\n\t\trepeat_text_year_day: \"dag\",\n\t\tselect_year_month: \"måned\",\n\t\trepeat_radio_end: \"Ingen sluttdato\",\n\t\trepeat_text_occurences_count: \"forekomster\",\n\t\trepeat_radio_end2: \"Etter\",\n\t\trepeat_radio_end3: \"Slutt innen\",\n\n\t\trepeat_never: \"Aldri\",\n\t\trepeat_daily: \"Hver dag\",\n\t\trepeat_workdays: \"Hver ukedag\",\n\t\trepeat_weekly: \"Hver uke\",\n\t\trepeat_monthly: \"Hver måned\",\n\t\trepeat_yearly: \"Hvert år\",\n\t\trepeat_custom: \"Tilpasset\",\n\t\trepeat_freq_day: \"Dag\",\n\t\trepeat_freq_week: \"Uke\",\n\t\trepeat_freq_month: \"Måned\",\n\t\trepeat_freq_year: \"År\",\n\t\trepeat_on_date: \"På dato\",\n\t\trepeat_ends: \"Slutter\",\n\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Dziś\",\n\t\tday_tab: \"Dzień\",\n\t\tweek_tab: \"Tydzień\",\n\t\tmonth_tab: \"Miesiąc\",\n\t\tnew_event: \"Nowe zdarzenie\",\n\t\ticon_save: \"Zapisz\",\n\t\ticon_cancel: \"Anuluj\",\n\t\ticon_details: \"Szczegóły\",\n\t\ticon_edit: \"Edytuj\",\n\t\ticon_delete: \"Usuń\",\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\n\t\tsection_description: \"Opis\",\n\t\tsection_time: \"Okres czasu\",\n\t\tfull_day: \"Cały dzień\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\n\t\tsection_recurring: \"Powtórz zdarzenie\",\n\t\tbutton_recurring: \"Nieaktywne\",\n\t\tbutton_recurring_open: \"Aktywne\",\n\t\tbutton_edit_series: \"Edytuj serię\",\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Agenda\",\n\t\tdate: \"Data\",\n\t\tdescription: \"Opis\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Rok\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Tabela\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Codziennie\",\n\t\trepeat_radio_week: \"Co tydzie\",\n\t\trepeat_radio_month: \"Co miesic\",\n\t\trepeat_radio_year: \"Co rok\",\n\t\trepeat_radio_day_type: \"Kadego\",\n\t\trepeat_text_day_count: \"dnia\",\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\n\t\trepeat_week: \" Powtarzaj kadego\",\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\n\t\trepeat_radio_month_type: \"Powtrz\",\n\t\trepeat_radio_month_start: \"W\",\n\t\trepeat_text_month_day: \"dnia kadego\",\n\t\trepeat_text_month_count: \"miesica\",\n\t\trepeat_text_month_count2_before: \"kadego\",\n\t\trepeat_text_month_count2_after: \"miesica\",\n\t\trepeat_year_label: \"W\",\n\t\tselect_year_day2: \"miesica\",\n\t\trepeat_text_year_day: \"dnia miesica\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"Bez daty kocowej\",\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\n\t\trepeat_radio_end3: \"Zakocz w\",\n\t\trepeat_radio_end2: \"Po\",\n\n\t\trepeat_never: \"Nigdy\",\n\t\trepeat_daily: \"Codziennie\",\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\n\t\trepeat_weekly: \"Co tydzień\",\n\t\trepeat_monthly: \"Co miesiąc\",\n\t\trepeat_yearly: \"Co rok\",\n\t\trepeat_custom: \"Niestandardowy\",\n\t\trepeat_freq_day: \"Dzień\",\n\t\trepeat_freq_week: \"Tydzień\",\n\t\trepeat_freq_month: \"Miesiąc\",\n\t\trepeat_freq_year: \"Rok\",\n\t\trepeat_on_date: \"W dniu\",\n\t\trepeat_ends: \"Kończy się\",\n\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\n\t}\n};\n\n","/*\n\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\n\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\n\n www.atrixian.com.br\n\n */\n\nexport default {\n\tdate: {\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Hoje\",\n\t\tday_tab: \"Dia\",\n\t\tweek_tab: \"Semana\",\n\t\tmonth_tab: \"Mês\",\n\t\tnew_event: \"Novo evento\",\n\t\ticon_save: \"Salvar\",\n\t\ticon_cancel: \"Cancelar\",\n\t\ticon_details: \"Detalhes\",\n\t\ticon_edit: \"Editar\",\n\t\ticon_delete: \"Deletar\",\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\n\t\tsection_description: \"Descrição\",\n\t\tsection_time: \"Período de tempo\",\n\t\tfull_day: \"Dia inteiro\",\n\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\n\t\tsection_recurring: \"Repetir evento\",\n\t\tbutton_recurring: \"Desabilitar\",\n\t\tbutton_recurring_open: \"Habilitar\",\n\t\tbutton_edit_series: \"Editar a série\",\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Dia\",\n\t\tdate: \"Data\",\n\t\tdescription: \"Descrição\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Ano\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Dia\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Grade\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Diário\",\n\t\trepeat_radio_week: \"Semanal\",\n\t\trepeat_radio_month: \"Mensal\",\n\t\trepeat_radio_year: \"Anual\",\n\t\trepeat_radio_day_type: \"Cada\",\n\t\trepeat_text_day_count: \"dia(s)\",\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\n\t\trepeat_week: \" Repita cada\",\n\t\trepeat_text_week_count: \"semana:\",\n\t\trepeat_radio_month_type: \"Repetir\",\n\t\trepeat_radio_month_start: \"Em\",\n\t\trepeat_text_month_day: \"todo dia\",\n\t\trepeat_text_month_count: \"mês\",\n\t\trepeat_text_month_count2_before: \"todo\",\n\t\trepeat_text_month_count2_after: \"mês\",\n\t\trepeat_year_label: \"Em\",\n\t\tselect_year_day2: \"of\",\n\t\trepeat_text_year_day: \"dia\",\n\t\tselect_year_month: \"mês\",\n\t\trepeat_radio_end: \"Sem data final\",\n\t\trepeat_text_occurences_count: \"ocorrências\",\n\t\trepeat_radio_end3: \"Fim\",\n\t\trepeat_radio_end2: \"Depois\",\n\n\t\trepeat_never: \"Nunca\",\n\t\trepeat_daily: \"Todos os dias\",\n\t\trepeat_workdays: \"Todos os dias úteis\",\n\t\trepeat_weekly: \"Toda semana\",\n\t\trepeat_monthly: \"Todo mês\",\n\t\trepeat_yearly: \"Todo ano\",\n\t\trepeat_custom: \"Personalizado\",\n\t\trepeat_freq_day: \"Dia\",\n\t\trepeat_freq_week: \"Semana\",\n\t\trepeat_freq_month: \"Mês\",\n\t\trepeat_freq_year: \"Ano\",\n\t\trepeat_on_date: \"Na data\",\n\t\trepeat_ends: \"Termina\",\n\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\n\t}\n};\n\n\n","/*\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\n */\n\nexport default {\n\tdate:{\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\n\t},\n\tlabels:{\n\t\tdhx_cal_today_button:\"Astazi\",\n\t\tday_tab:\"Zi\",\n\t\tweek_tab:\"Saptamana\",\n\t\tmonth_tab:\"Luna\",\n\t\tnew_event:\"Eveniment nou\",\n\t\ticon_save:\"Salveaza\",\n\t\ticon_cancel:\"Anuleaza\",\n\t\ticon_details:\"Detalii\",\n\t\ticon_edit:\"Editeaza\",\n\t\ticon_delete:\"Sterge\",\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\n\t\tsection_description:\"Descriere\",\n\t\tsection_time:\"Interval\",\n\t\tfull_day:\"Toata ziua\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\n\t\tsection_recurring:\"Repetare\",\n\t\tbutton_recurring:\"Dezactivata\",\n\t\tbutton_recurring_open:\"Activata\",\n\t\tbutton_edit_series: \"Editeaza serie\",\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab:\"Agenda\",\n\t\tdate:\"Data\",\n\t\tdescription:\"Descriere\",\n\n\t\t/*year view extension*/\n\t\tyear_tab:\"An\",\n\n\t\t/* week agenda extension */\n\t\tweek_agenda_tab: \"Agenda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Lista\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Zilnic\",\n\t\trepeat_radio_week: \"Saptamanal\",\n\t\trepeat_radio_month: \"Lunar\",\n\t\trepeat_radio_year: \"Anual\",\n\t\trepeat_radio_day_type: \"La fiecare\",\n\t\trepeat_text_day_count: \"zi(le)\",\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\n\t\trepeat_week: \" Repeta la fiecare\",\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\n\t\trepeat_radio_month_type: \"Repeta in\",\n\t\trepeat_radio_month_start: \"In a\",\n\t\trepeat_text_month_day: \"zi la fiecare\",\n\t\trepeat_text_month_count: \"luni\",\n\t\trepeat_text_month_count2_before: \"la fiecare\",\n\t\trepeat_text_month_count2_after: \"luni\",\n\t\trepeat_year_label: \"In\",\n\t\tselect_year_day2: \"a lunii\",\n\t\trepeat_text_year_day: \"zi a lunii\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\n\t\trepeat_text_occurences_count: \"evenimente\",\n\t\trepeat_radio_end3: \"La data\",\n\t\trepeat_radio_end2: \"Dupa\",\n\n\t\trepeat_never: \"Niciodată\",\n\t\trepeat_daily: \"În fiecare zi\",\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\n\t\trepeat_weekly: \"În fiecare săptămână\",\n\t\trepeat_monthly: \"În fiecare lună\",\n\t\trepeat_yearly: \"În fiecare an\",\n\t\trepeat_custom: \"Personalizat\",\n\t\trepeat_freq_day: \"Zi\",\n\t\trepeat_freq_week: \"Săptămână\",\n\t\trepeat_freq_month: \"Lună\",\n\t\trepeat_freq_year: \"An\",\n\t\trepeat_on_date: \"La data\",\n\t\trepeat_ends: \"Se termină\",\n\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Сегодня\",\n\t\tday_tab: \"День\",\n\t\tweek_tab: \"Неделя\",\n\t\tmonth_tab: \"Месяц\",\n\t\tnew_event: \"Новое событие\",\n\t\ticon_save: \"Сохранить\",\n\t\ticon_cancel: \"Отменить\",\n\t\ticon_details: \"Детали\",\n\t\ticon_edit: \"Изменить\",\n\t\ticon_delete: \"Удалить\",\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\n\t\tsection_description: \"Описание\",\n\t\tsection_time: \"Период времени\",\n\t\tfull_day: \"Весь день\",\n\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\n\t\tsection_recurring: \"Повторение\",\n\t\tbutton_recurring: \"Отключено\",\n\t\tbutton_recurring_open: \"Включено\",\n\t\tbutton_edit_series: \"Редактировать серию\",\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Список\",\n\t\tdate: \"Дата\",\n\t\tdescription: \"Описание\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Год\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Список\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Таблица\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"День\",\n\t\trepeat_radio_week: \"Неделя\",\n\t\trepeat_radio_month: \"Месяц\",\n\t\trepeat_radio_year: \"Год\",\n\t\trepeat_radio_day_type: \"Каждый\",\n\t\trepeat_text_day_count: \"день\",\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\n\t\trepeat_week: \" Повторять каждую\",\n\t\trepeat_text_week_count: \"неделю , в:\",\n\t\trepeat_radio_month_type: \"Повторять\",\n\t\trepeat_radio_month_start: \"\",\n\t\trepeat_text_month_day: \" числа каждый \",\n\t\trepeat_text_month_count: \"месяц\",\n\t\trepeat_text_month_count2_before: \"каждый \",\n\t\trepeat_text_month_count2_after: \"месяц\",\n\t\trepeat_year_label: \"\",\n\t\tselect_year_day2: \"\",\n\t\trepeat_text_year_day: \"день\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"Без даты окончания\",\n\t\trepeat_text_occurences_count: \"повторений\",\n\t\trepeat_radio_end3: \"До \",\n\t\trepeat_radio_end2: \"\",\n\n\t\trepeat_never: \"Никогда\",\n\t\trepeat_daily: \"Каждый день\",\n\t\trepeat_workdays: \"Каждый будний день\",\n\t\trepeat_weekly: \"Каждую неделю\",\n\t\trepeat_monthly: \"Каждый месяц\",\n\t\trepeat_yearly: \"Каждый год\",\n\t\trepeat_custom: \"Настроить\",\n\t\trepeat_freq_day: \"День\",\n\t\trepeat_freq_week: \"Неделя\",\n\t\trepeat_freq_month: \"Месяц\",\n\t\trepeat_freq_year: \"Год\",\n\t\trepeat_on_date: \"В дату\",\n\t\trepeat_ends: \"Заканчивается\",\n\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\n\t}\n};\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Danes\",\n\t\tday_tab: \"Dan\",\n\t\tweek_tab: \"Teden\",\n\t\tmonth_tab: \"Mesec\",\n\t\tnew_event: \"Nov dogodek\",\n\t\ticon_save: \"Shrani\",\n\t\ticon_cancel: \"Prekliči\",\n\t\ticon_details: \"Podrobnosti\",\n\t\ticon_edit: \"Uredi\",\n\t\ticon_delete: \"Izbriši\",\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\n\t\tsection_description: \"Opis\",\n\t\tsection_time: \"Časovni okvir\",\n\t\tfull_day: \"Ves dan\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\n\t\tsection_recurring: \"Ponovi dogodek\",\n\t\tbutton_recurring: \"Onemogočeno\",\n\t\tbutton_recurring_open: \"Omogočeno\",\n\t\tbutton_edit_series: \"Edit series\",\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Zadeva\",\n\t\tdate: \"Datum\",\n\t\tdescription: \"Opis\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Leto\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Zadeva\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Miza\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"Mesečno\",\n\t\trepeat_radio_year: \"Letno\",\n\t\trepeat_radio_day_type: \"Vsak\",\n\t\trepeat_text_day_count: \"dan\",\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\n\t\trepeat_week: \" Ponavljaj vsak\",\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\n\t\trepeat_radio_month_type: \"Ponavljaj\",\n\t\trepeat_radio_month_start: \"Na\",\n\t\trepeat_text_month_day: \"dan vsak\",\n\t\trepeat_text_month_count: \"mesec\",\n\t\trepeat_text_month_count2_before: \"vsak\",\n\t\trepeat_text_month_count2_after: \"mesec\",\n\t\trepeat_year_label: \"Na\",\n\t\tselect_year_day2: \"od\",\n\t\trepeat_text_year_day: \"dan\",\n\t\tselect_year_month: \"mesec\",\n\t\trepeat_radio_end: \"Brez končnega datuma\",\n\t\trepeat_text_occurences_count: \"pojavitve\",\n\t\trepeat_radio_end2: \"Po\",\n\t\trepeat_radio_end3: \"Končaj do\",\n\n\t\trepeat_never: \"Nikoli\",\n\t\trepeat_daily: \"Vsak dan\",\n\t\trepeat_workdays: \"Vsak delovni dan\",\n\t\trepeat_weekly: \"Vsak teden\",\n\t\trepeat_monthly: \"Vsak mesec\",\n\t\trepeat_yearly: \"Vsako leto\",\n\t\trepeat_custom: \"Po meri\",\n\t\trepeat_freq_day: \"Dan\",\n\t\trepeat_freq_week: \"Teden\",\n\t\trepeat_freq_month: \"Mesec\",\n\t\trepeat_freq_year: \"Leto\",\n\t\trepeat_on_date: \"Na datum\",\n\t\trepeat_ends: \"Konča se\",\n\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Dnes\",\n\t\tday_tab: \"Deň\",\n\t\tweek_tab: \"Týždeň\",\n\t\tmonth_tab: \"Mesiac\",\n\t\tnew_event: \"Nová udalosť\",\n\t\ticon_save: \"Uložiť\",\n\t\ticon_cancel: \"Späť\",\n\t\ticon_details: \"Detail\",\n\t\ticon_edit: \"Edituj\",\n\t\ticon_delete: \"Zmazať\",\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\n\t\tsection_description: \"Poznámky\",\n\t\tsection_time: \"Doba platnosti\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\n\t\tsection_recurring: \"Opakovanie udalosti\",\n\t\tbutton_recurring: \"Vypnuté\",\n\t\tbutton_recurring_open: \"Zapnuté\",\n\t\tbutton_edit_series: \"Upraviť opakovania\",\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Program\",\n\t\tdate: \"Dátum\",\n\t\tdescription: \"Poznámka\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Rok\",\n\t\tfull_day: \"Celý deň\", // Full day\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Program\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Mriežka\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Denne\",\n\t\trepeat_radio_week: \"Týždenne\",\n\t\trepeat_radio_month: \"Mesaène\",\n\t\trepeat_radio_year: \"Roène\",\n\t\trepeat_radio_day_type: \"Každý\",\n\t\trepeat_text_day_count: \"deò\",\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\n\t\trepeat_week: \"Opakova každý\",\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\n\t\trepeat_radio_month_type: \"Opakova\",\n\t\trepeat_radio_month_start: \"On\",\n\t\trepeat_text_month_day: \"deò každý\",\n\t\trepeat_text_month_count: \"mesiac\",\n\t\trepeat_text_month_count2_before: \"každý\",\n\t\trepeat_text_month_count2_after: \"mesiac\",\n\t\trepeat_year_label: \"On\",\n\t\tselect_year_day2: \"poèas\",\n\t\trepeat_text_year_day: \"deò\",\n\t\tselect_year_month: \"mesiac\",\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\n\t\trepeat_text_occurences_count: \"udalostiach\",\n\t\trepeat_radio_end3: \"Ukonèi\",\n\t\trepeat_radio_end2: \"Po\",\n\n\t\trepeat_never: \"Nikdy\",\n\t\trepeat_daily: \"Každý deň\",\n\t\trepeat_workdays: \"Každý pracovný deň\",\n\t\trepeat_weekly: \"Každý týždeň\",\n\t\trepeat_monthly: \"Každý mesiac\",\n\t\trepeat_yearly: \"Každý rok\",\n\t\trepeat_custom: \"Vlastné\",\n\t\trepeat_freq_day: \"Deň\",\n\t\trepeat_freq_week: \"Týždeň\",\n\t\trepeat_freq_month: \"Mesiac\",\n\t\trepeat_freq_year: \"Rok\",\n\t\trepeat_on_date: \"Na dátum\",\n\t\trepeat_ends: \"Koniec\",\n\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\n\t}\n};\n\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Idag\",\n\t\tday_tab: \"Dag\",\n\t\tweek_tab: \"Vecka\",\n\t\tmonth_tab: \"Månad\",\n\t\tnew_event: \"Ny händelse\",\n\t\ticon_save: \"Spara\",\n\t\ticon_cancel: \"Ångra\",\n\t\ticon_details: \"Detaljer\",\n\t\ticon_edit: \"Ändra\",\n\t\ticon_delete: \"Ta bort\",\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\n\t\tsection_description: \"Beskrivning\",\n\t\tsection_time: \"Tid\",\n\t\tfull_day: \"Hela dagen\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\n\t\tsection_recurring: \"Upprepa händelse\",\n\t\tbutton_recurring: \"Inaktiverat\",\n\t\tbutton_recurring_open: \"Aktiverat\",\n\t\tbutton_edit_series: \"Redigera serien\",\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Dagordning\",\n\t\tdate: \"Datum\",\n\t\tdescription: \"Beskrivning\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"År\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Dagordning\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Galler\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Dra för att skapa ny\",\n\t\tdrag_to_move:\"Dra för att flytta\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Dagligen\",\n\t\trepeat_radio_week: \"Veckovis\",\n\t\trepeat_radio_month: \"Månadsvis\",\n\t\trepeat_radio_year: \"Årligen\",\n\t\trepeat_radio_day_type: \"Var\",\n\t\trepeat_text_day_count: \"dag\",\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\n\t\trepeat_week: \" Upprepa var\",\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\n\t\trepeat_radio_month_type: \"Upprepa\",\n\t\trepeat_radio_month_start: \"Den\",\n\t\trepeat_text_month_day: \"dagen var\",\n\t\trepeat_text_month_count: \"månad\",\n\t\trepeat_text_month_count2_before: \"var\",\n\t\trepeat_text_month_count2_after: \"månad\",\n\t\trepeat_year_label: \"Den\",\n\t\tselect_year_day2: \"i\",\n\t\trepeat_text_year_day: \"dag i\",\n\t\tselect_year_month: \"månad\",\n\t\trepeat_radio_end: \"Inget slutdatum\",\n\t\trepeat_text_occurences_count: \"upprepningar\",\n\t\trepeat_radio_end3: \"Sluta efter\",\n\t\trepeat_radio_end2: \"Efter\",\n\n\t\trepeat_never: \"Aldrig\",\n\t\trepeat_daily: \"Varje dag\",\n\t\trepeat_workdays: \"Varje vardag\",\n\t\trepeat_weekly: \"Varje vecka\",\n\t\trepeat_monthly: \"Varje månad\",\n\t\trepeat_yearly: \"Varje år\",\n\t\trepeat_custom: \"Anpassad\",\n\t\trepeat_freq_day: \"Dag\",\n\t\trepeat_freq_week: \"Vecka\",\n\t\trepeat_freq_month: \"Månad\",\n\t\trepeat_freq_year: \"År\",\n\t\trepeat_on_date: \"På datum\",\n\t\trepeat_ends: \"Slutar\",\n\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\n\t}\n};\n","export default {\n\tdate: {\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Bugün\",\n\t\tday_tab: \"Gün\",\n\t\tweek_tab: \"Hafta\",\n\t\tmonth_tab: \"Ay\",\n\t\tnew_event: \"Uygun\",\n\t\ticon_save: \"Kaydet\",\n\t\ticon_cancel: \"Ýptal\",\n\t\ticon_details: \"Detaylar\",\n\t\ticon_edit: \"Düzenle\",\n\t\ticon_delete: \"Sil\",\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\n\t\tsection_description: \"Açýklama\",\n\t\tsection_time: \"Zaman aralýðý\",\n\t\tfull_day: \"Tam gün\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\n\t\tsection_recurring: \"Etkinliði tekrarla\",\n\t\tbutton_recurring: \"Pasif\",\n\t\tbutton_recurring_open: \"Aktif\",\n\t\tbutton_edit_series: \"Dizi düzenleme\",\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Ajanda\",\n\t\tdate: \"Tarih\",\n\t\tdescription: \"Açýklama\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Yýl\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Ajanda\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Izgara\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\n\t\trepeat_radio_month: \"Aylık\",\n\t\trepeat_radio_year: \"Yıllık\",\n\t\trepeat_radio_day_type: \"Her\",\n\t\trepeat_text_day_count: \"gün\",\n\t\trepeat_radio_day_type2: \"Her iş günü\",\n\t\trepeat_week: \" Tekrar her\",\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\n\t\trepeat_radio_month_type: \"Tekrar et\",\n\t\trepeat_radio_month_start: \"Tarihinde\",\n\t\trepeat_text_month_day: \"gün her\",\n\t\trepeat_text_month_count: \"ay\",\n\t\trepeat_text_month_count2_before: \"her\",\n\t\trepeat_text_month_count2_after: \"ay\",\n\t\trepeat_year_label: \"Tarihinde\",\n\t\tselect_year_day2: \"ayın\",\n\t\trepeat_text_year_day: \"günü\",\n\t\tselect_year_month: \"ay\",\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\n\t\trepeat_text_occurences_count: \"olay\",\n\t\trepeat_radio_end2: \"Sonra\",\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\n\n\t\trepeat_never: \"Asla\",\n\t\trepeat_daily: \"Her gün\",\n\t\trepeat_workdays: \"Her iş günü\",\n\t\trepeat_weekly: \"Her hafta\",\n\t\trepeat_monthly: \"Her ay\",\n\t\trepeat_yearly: \"Her yıl\",\n\t\trepeat_custom: \"Özel\",\n\t\trepeat_freq_day: \"Gün\",\n\t\trepeat_freq_week: \"Hafta\",\n\t\trepeat_freq_month: \"Ay\",\n\t\trepeat_freq_year: \"Yıl\",\n\t\trepeat_on_date: \"Tarihinde\",\n\t\trepeat_ends: \"Biter\",\n\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\n\t}\n};","export default {\n\tdate: {\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\n\t},\n\tlabels: {\n\t\tdhx_cal_today_button: \"Сьогодні\",\n\t\tday_tab: \"День\",\n\t\tweek_tab: \"Тиждень\",\n\t\tmonth_tab: \"Місяць\",\n\t\tnew_event: \"Нова подія\",\n\t\ticon_save: \"Зберегти\",\n\t\ticon_cancel: \"Відміна\",\n\t\ticon_details: \"Деталі\",\n\t\ticon_edit: \"Редагувати\",\n\t\ticon_delete: \"Вилучити\",\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\n\t\tsection_description: \"Опис\",\n\t\tsection_time: \"Часовий проміжок\",\n\t\tfull_day: \"Весь день\",\n\n\t\t/*recurring events*/\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\n\t\tsection_recurring: \"Повторювана подія\",\n\t\tbutton_recurring: \"Відключено\",\n\t\tbutton_recurring_open: \"Включено\",\n\t\tbutton_edit_series: \"Редагувати серію\",\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\n\n\t\t/*agenda view extension*/\n\t\tagenda_tab: \"Перелік\",\n\t\tdate: \"Дата\",\n\t\tdescription: \"Опис\",\n\n\t\t/*year view extension*/\n\t\tyear_tab: \"Рік\",\n\n\t\t/*week agenda view extension*/\n\t\tweek_agenda_tab: \"Перелік\",\n\n\t\t/*grid view extension*/\n\t\tgrid_tab: \"Таблиця\",\n\n\t\t/* touch tooltip*/\n\t\tdrag_to_create:\"Drag to create\",\n\t\tdrag_to_move:\"Drag to move\",\n\n\t\t/* dhtmlx message default buttons */\n\t\tmessage_ok:\"OK\",\n\t\tmessage_cancel:\"Cancel\",\n\n\t\t/* wai aria labels for non-text controls */\n\t\tnext: \"Next\",\n\t\tprev: \"Previous\",\n\t\tyear: \"Year\",\n\t\tmonth: \"Month\",\n\t\tday: \"Day\",\n\t\thour:\"Hour\",\n\t\tminute: \"Minute\",\n\n\t\t/* recurring event components */\n\t\trepeat_radio_day: \"День\",\n\t\trepeat_radio_week: \"Тиждень\",\n\t\trepeat_radio_month: \"Місяць\",\n\t\trepeat_radio_year: \"Рік\",\n\t\trepeat_radio_day_type: \"Кожний\",\n\t\trepeat_text_day_count: \"день\",\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\n\t\trepeat_week: \" Повторювати кожен\",\n\t\trepeat_text_week_count: \"тиждень , по:\",\n\t\trepeat_radio_month_type: \"Повторювати\",\n\t\trepeat_radio_month_start: \"\",\n\t\trepeat_text_month_day: \" числа кожний \",\n\t\trepeat_text_month_count: \"місяць\",\n\t\trepeat_text_month_count2_before: \"кожен \",\n\t\trepeat_text_month_count2_after: \"місяць\",\n\t\trepeat_year_label: \"\",\n\t\tselect_year_day2: \"\",\n\t\trepeat_text_year_day: \"день\",\n\t\tselect_year_month: \"\",\n\t\trepeat_radio_end: \"Без дати закінчення\",\n\t\trepeat_text_occurences_count: \"повторень\",\n\t\trepeat_radio_end3: \"До \",\n\t\trepeat_radio_end2: \"\",\n\n\t\trepeat_never: \"Ніколи\",\n\t\trepeat_daily: \"Щодня\",\n\t\trepeat_workdays: \"Щодня в робочі дні\",\n\t\trepeat_weekly: \"Щотижня\",\n\t\trepeat_monthly: \"Щомісяця\",\n\t\trepeat_yearly: \"Щороку\",\n\t\trepeat_custom: \"Налаштоване\",\n\t\trepeat_freq_day: \"День\",\n\t\trepeat_freq_week: \"Тиждень\",\n\t\trepeat_freq_month: \"Місяць\",\n\t\trepeat_freq_year: \"Рік\",\n\t\trepeat_on_date: \"На дату\",\n\t\trepeat_ends: \"Закінчується\",\n\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\n\t}\n};\n","import eventable from \"../utils/eventable\";\n\nexport class DatePicker {\n\tconstructor(scheduler, container, state = {}) {\n\t\tthis.state = {\n\t\t\tdate: new Date(),\n\t\t\tmodes: ['days', 'months', 'years'],\n\t\t\tcurrentRange: [],\n\t\t\teventDates: [],\n\t\t\tfilterDays: null,\n\t\t\tcurrentModeIndex: 0,\n\t\t\t...state\n\t\t};\n\t\tthis.container = null;\n\t\tthis.element = null;\n\t\tthis.onStateChangeHandlers = [];\n\t\tthis.scheduler = scheduler;\n\t\tthis._domEvents = scheduler._createDomEventScope();\n\t\tthis.state = this.getState();\n\t\teventable(this);\n\t\tif(container){\n\n\t\t\tthis.container = container;\n\t\t\tthis.render(this.container);\n\t\t}\n\n\t\tthis.onStateChange((oldState, newState) => {\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\n\t\t});\n\t}\n\n\tgetState() {\n\t\treturn { \n\t\t\t...this.state,\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\n\t\t};\n\t}\n\n\tsetState(newState) {\n\t\tconst oldState = { ...this.state };\n\t\tif(newState.mode){\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\n\t\t}\n\t\tthis.state = { ...this.state, ...newState };\n\n\t\tthis._notifyStateChange(oldState, this.state);\n\n\t\tif (this.container) {\n\t\t\tthis.render(this.container);\n\t\t}\n\t}\n\n\tonStateChange(handler) {\n\t\tthis.onStateChangeHandlers.push(handler);\n\n\t\t// function to remove the handler\n\t\treturn () => {\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n\n\t_notifyStateChange(oldState, newState) {\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\n\t}\n\n\t_adjustDate(direction) {\n\n\t\tconst {mode, date} = this.getState();\n\t\tconst newDate = new Date(date);\n\t\tif (mode === 'days') {\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\n\t\t} else if (mode === 'months') {\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\n\t\t} else {\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\n\t\t}\n\t\tthis.setState({ date: newDate });\n\t}\n\n\t_toggleMode() {\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\n\t\tthis.setState({ currentModeIndex: newIndex });\n\t}\n\n\t_renderCalendarHeader(container) {\n\t\tconst {mode, date} = this.getState();\n\n\t\tconst header = document.createElement('div');\n\t\theader.classList.add('dhx_cal_datepicker_header');\n\n\t\tconst backwardArrow = document.createElement('button');\n\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\n\t\theader.appendChild(backwardArrow);\n\n\t\tconst monthLabel = document.createElement('div');\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\n\n\t\tif (mode === 'days') {\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\n\t\t} else if (mode === 'months') {\n\t\t\tmonthLabel.innerText = date.getFullYear();\n\t\t} else {\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\n\t\t}\n\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\n\t\theader.appendChild(monthLabel);\n\n\t\tconst forwardArrow = document.createElement('button');\n\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\n\t\theader.appendChild(forwardArrow);\n\n\t\tcontainer.appendChild(header);\n\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\n\t}\n\n\trender(container) {\n\t\tthis._domEvents.detachAll();\n\t\tthis.container = container || this.container; \n\t\tthis.container.innerHTML = '';\n\n\t\tif(!this.element){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\n\t\t}\n\t\tthis.element.innerHTML = '';\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis._renderCalendarHeader(this.element);\n\t\tconst dataContainer = document.createElement(\"div\");\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\n\t\tthis.element.appendChild(dataContainer);\n\n\t\tconst {mode} = this.getState();\n\t\tif (mode === 'days') {\n\t\t\tthis._renderDayGrid(dataContainer);\n\t\t} else if (mode === 'months') {\n\t\t\tthis._renderMonthGrid(dataContainer);\n\t\t} else {\n\t\t\tthis._renderYearGrid(dataContainer);\n\t\t}\n\t}\n\n\t_renderDayGridHeader(daysOfWeekContainer) {\n\t\tconst {date, filterDays} = this.getState();\n\t\tconst scheduler = this.scheduler;\n\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\n\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\n\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\n\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\n\t\t\tif(!(filterDays && filterDays(currentDate))){\n\t\t\t\tconst label = labelFormat(currentDate);\n\n\t\t\t\tconst dayElement = document.createElement('div');\n\t\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\n\t\t\t\tdayElement.innerText = label;\n\t\t\t\tdaysOfWeekContainer.appendChild(dayElement);\n\t\t\t}\n\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\n\t\t}\n\t}\n\n\t_weeksBetween(min, max) {\n\t\tconst scheduler = this.scheduler;\n\t\tlet weeks = 0;\n\t\tlet currWeek = new Date(min);\n\t\twhile(currWeek.valueOf() < max.valueOf()){\n\t\t\tweeks += 1;\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\n\t\t}\n\t\treturn weeks;\n\t}\n\n\t_renderDayGrid(container) {\n\t\tconst {date, currentRange, eventDates, minWeeks, filterDays} = this.getState();\n\n\t\tlet minSchedulerDate = currentRange[0];\n\t\tlet maxSchedulerDate = currentRange[1];\n\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\n\t\t\tacc[dayStart.valueOf()] = true;\n\t\t\treturn acc;\n\t\t}, {});\n\n\n\t\t// Render Days of the Week\n\t\tconst daysOfWeekContainer = document.createElement('div');\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\n\t\tconst weekLength = daysOfWeekContainer.children.length;\n\t\tcontainer.appendChild(daysOfWeekContainer);\n\t\tif(weekLength !== 7){\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-week-length\", weekLength);\n\t\t}\n\n\t\tconst scheduler = this.scheduler;\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\n\t\tif(lastDate.getDay() !== 0){\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\n\t\t}\n\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\n\t\tif(minWeeks && weeks < minWeeks){\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\n\t\t}\n\n\t\tlet currDate = firstDate;\n\n\t\tconst dayGridContainer = document.createElement('div');\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\n\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\n\t\t});\n\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\n\t\t\tif(!(filterDays && filterDays(currDate))){\n\n\t\t\t\tconst dayElement = document.createElement('div');\n\t\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\n\t\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\n\t\t\t\tdayElement.innerHTML = currDate.getDate();\n\n\t\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\n\t\t\t\t\tdayElement.classList.add('dhx_before');\n\t\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\n\t\t\t\t\tdayElement.classList.add('dhx_after');\n\t\t\t\t}\n\n\t\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\n\t\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\n\t\t\t\t}\n\n\t\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\n\t\t\t\t\tdayElement.classList.add(\"dhx_now\");\n\t\t\t\t}\n\n\t\t\t\tif(minSchedulerDate && maxSchedulerDate){\n\t\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\n\t\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(eventDaysTable[currDate.valueOf()]){\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\n\n\t\t\t\tdayGridContainer.appendChild(dayElement);\n\t\t\t}\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\n\t\t}\n\n\t\tcontainer.appendChild(dayGridContainer);\n\n\t}\n\n\t_renderMonthGrid(container) {\n\t\tconst {date} = this.getState();\n\n\t\tconst wrapper = document.createElement('div');\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\n\n\t\tconst months = [];\n\t\tfor(let i = 0; i < 12; i++){\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\n\t\t}\n\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\n\t\tmonths.forEach(month => {\n\t\t\tconst monthElement = document.createElement('div');\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\n\t\t\tif(date.getMonth() === month.getMonth()){\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\n\t\t\t}\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\n\t\t\tmonthElement.innerHTML = formatLabel(month);\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\n\t\t\t\tconst newDate = new Date(month);\n\t\t\t\tthis.setState({\n\t\t\t\t\tdate: newDate,\n\t\t\t\t\tmode: 'days'\n\t\t\t\t});\n\t\t\t});\n\t\t\twrapper.appendChild(monthElement);\n\t\t});\n\t\tcontainer.appendChild(wrapper);\n\n\t\tconst doneArea = document.createElement(\"div\");\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\n\t\tconst doneBtn = document.createElement(\"button\");\n\t\tdoneBtn.innerText = \"Done\";\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\n\t\t\tthis.setState({\n\t\t\t\tmode: 'days'\n\t\t\t});\n\t\t});\n\t\tdoneArea.appendChild(doneBtn);\n\t\tcontainer.appendChild(doneArea);\n\t}\n\n\t_renderYearGrid(container) {\n\t\tconst {date} = this.getState();\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\n\t\t\n\t\tconst wrapper = document.createElement('div');\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\n\t\t\tconst yearElement = document.createElement('div');\n\t\t\tyearElement.innerText = i;\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\n\t\t\tyearElement.setAttribute(\"data-year\", i);\n\t\t\tif(date.getFullYear() === i){\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\n\t\t\t}\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\n\t\t\t\tthis.setState({\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\n\t\t\t\t\tmode: 'months'\n\t\t\t\t});\n\t\t\t});\n\t\t\twrapper.appendChild(yearElement);\n\t\t\t\n\t\t}\n\t\tcontainer.appendChild(wrapper);\n\n\t\tconst doneArea = document.createElement(\"div\");\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\n\t\tconst doneBtn = document.createElement(\"button\");\n\t\tdoneBtn.innerText = \"Done\";\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\n\t\t\tthis.setState({\n\t\t\t\tmode: 'months'\n\t\t\t});\n\t\t});\n\t\tdoneArea.appendChild(doneBtn);\n\t\tcontainer.appendChild(doneArea);\n\t}\n\n\tdestructor(){\n\t\tthis.onStateChangeHandlers = [];\n\t\tif(this.element){\n\t\t\tthis.element.innerHTML = '';\n\t\t\tthis.element.remove();\n\t\t}\n\n\t\tthis._domEvents.detachAll();\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t\tthis.scheduler = null;\n\t}\n}","// import \"./css/dhtmlxscheduler_terrace\";\n// import \"./css/dhtmlxscheduler_material\";\n// import \"./css/dhtmlxscheduler_material_nofont\";\n// import \"./css/dhtmlxscheduler_flat\";\n// import \"./css/dhtmlxscheduler_contrast_black\";\n// import \"./css/dhtmlxscheduler_contrast_white\";\n\nimport addPlugins from \"./plugins\";\nimport stateProvider from \"./core/state\";\nimport assert from \"./core/common/assert\";\nimport common_errors from \"./core/common_errors\";\nimport connector from \"./core/connector\";\nimport schedulerCore from \"./core/scheduler\";\nimport common from \"./core/common\";\nimport wai_aria from \"./core/wai_aria\";\nimport utils from \"./core/utils/utils\";\nimport dom_helpers from \"./core/utils/dom_helpers\";\nimport env from \"./utils/env\";\nimport destructor from \"./core/destructor\";\nimport ajax from \"./core/utils/ajax\";\nimport base from \"./core/base\";\nimport config from \"./core/config\";\nimport event from \"./core/event\";\nimport event_highlight from \"./core/event_highlight\";\nimport load from \"./core/load\";\nimport lightbox from \"./core/lightbox\";\nimport touch from \"./core/touch\";\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\nimport skins from \"./core/skins\";\nimport jquery from \"./core/jquery\";\nimport delay_render from \"./core/delay_render\";\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\nimport message from \"./core/message\";\nimport i18nFactory from \"./locale\";\n\nimport voidFirst from \"./publish_helpers/void_script_first\";\nimport voidSecond from \"./publish_helpers/void_script_second\";\nimport voidThird from \"./publish_helpers/void_script_third\";\n\n//import datepickerHeader from \"./core/clickable_header\";\n\nimport { DatePicker } from \"./core/datepicker\";\n\nexport default function(extensionManager) {\n\n\tconst scheduler = { version: VERSION };\n\t\n\tscheduler.$stateProvider = stateProvider();\n\n\tscheduler.getState = scheduler.$stateProvider.getState;\n\tcommon_errors(scheduler);\n\tcommon(scheduler);\n\tschedulerCore(scheduler);\n\twai_aria(scheduler);\n\t//utils(scheduler);\n\n\tscheduler.utils = utils;\n\tscheduler.$domHelpers = dom_helpers;\n\tscheduler.utils.dom = dom_helpers;\n\tscheduler.uid = utils.uid;\n\tscheduler.mixin = utils.mixin;\n\tscheduler.defined = utils.defined;\n\tscheduler.assert = assert(scheduler);\n\tscheduler.copy = utils.copy;\n\n\tscheduler._createDatePicker = function(container, config){\n\t\treturn new DatePicker(scheduler, container, config);\n\t};\n\n\t//datepickerHeader(scheduler);\n\n\n\t//old api compatibility\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\n\tscheduler._getClassName = dom_helpers.getClassName;\n\tscheduler._locate_css = dom_helpers.locateCss;\n\n\tconst messageApi = message(scheduler);\n\tscheduler.utils.mixin(scheduler, messageApi);\n\n\tscheduler.env = scheduler.$env = env;\n\tscheduler.Promise = window.Promise;\n\tdestructor(scheduler);\n\tajax(scheduler);\n\tvoidFirst(scheduler);\n\tbase(scheduler);\n\tconfig(scheduler);\n\tevent(scheduler);\n\tevent_highlight(scheduler);\n\tload(scheduler);\n\tlightbox(scheduler);\n\ttouch(scheduler);\n\tdhtmlx_suite_hooks(scheduler);\n\tvoidSecond(scheduler);\n\tskins(scheduler);\n\tjquery(scheduler);\n\tdelay_render(scheduler);\n\tdataProcessorExtend(scheduler);\n\tvoidThird(scheduler);\n\tconnector(scheduler);\n\tconst i18n = i18nFactory();\n\tscheduler.i18n = {\n\t\taddLocale: i18n.addLocale,\n\t\tsetLocale: function(locale){\n\t\t\tif(typeof locale === \"string\"){\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\n\t\t\t\tif(!localeObject){\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\n\t\t\t\t}\n\n\t\t\t\tscheduler.locale = localeObject;\n\t\t\t}else if(locale){\n\t\t\t\tif(!scheduler.locale){\n\t\t\t\t\tscheduler.locale = locale;\n\t\t\t\t}else{\n\t\t\t\t\tfor(var i in locale){\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar labels = scheduler.locale.labels;\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\n\n\t\t\tif(scheduler.$container){\n\t\t\t\tscheduler.get_elements();\n\t\t\t}\n\t\t\t\n\t\t},\n\t\tgetLocale: i18n.getLocale\n\t};\n\tscheduler.i18n.setLocale(\"en\");\n\taddPlugins(scheduler);\n\tscheduler.ext = {};\n\n\tconst activePlugins = {};\n\tscheduler.plugins = function(config){\n\t\tconst extensionList = getExtensionList(config, {\n\t\t\t\ttreetimeline: [\"timeline\"],\n\t\t\t\tdaytimeline: [\"timeline\"],\n\t\t\t\touterdrag: [\"legacy\"]\n\t\t\t}, {\n\t\t\t\tlegacy: 1,\n\t\t\t\tlimit: 1,\n\t\t\t\ttimeline: 2,\n\t\t\t\tdaytimeline: 3,\n\t\t\t\ttreetimeline: 3,\n\t\t\t\touterdrag:6\n\t\t\t});\n\n\t\textensionList.forEach(function(name){\n\t\t\tif(!activePlugins[name]){\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\n\t\t\t\tif(plugin){\n\t\t\t\t\tplugin(scheduler);\n\t\t\t\t\tactivePlugins[name] = true;\n\t\t\t\t}else{\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tfunction getExtensionList(config, dependencies, priorities){\n\t\tconst result = [];\n\n\t\tfor(const i in config){\n\t\t\tif(config[i]){\n\t\t\t\tconst extension = i.toLowerCase();\n\t\t\t\tif(dependencies[extension]){\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\n\t\t\t\t\t\tif(!config[dependencyName]){\n\t\t\t\t\t\t\tresult.push(dependencyName);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tresult.push(extension);\n\t\t\t}\n\t\t}\n\t\t\n\t\tresult.sort(function(a, b){\n\t\t\tconst orderA = priorities[a] || 0;\n\t\t\tconst orderB = priorities[b] || 0;\n\t\t\tif(orderA > orderB){\n\t\t\t\treturn 1;\n\t\t\t}else if(orderA < orderB){\n\t\t\t\treturn -1;\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\treturn scheduler;\n\n}","import utils from \"./utils/utils\";\n\nconst StateService = (function(){\n\tconst stateProviders = {};\n\n\tfunction getState(name){\n\t\tconst provider = stateProviders[name];\n\t\tif(provider){\n\t\t\treturn stateProviders[name].method();\n\t\t}else{\n\t\t\tconst res = {};\n\t\t\tfor(const i in stateProviders){\n\t\t\t\tif(!stateProviders[i].internal)\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t}\n\n\tfunction registerProvider(name, provider, internal){\n\t\tstateProviders[name] = { method: provider, internal: internal};\n\t}\n\n\tfunction unregisterProvider(name){\n\t\tdelete stateProviders[name];\n\t}\n\n\treturn {\n\t\tgetState: getState,\n\t\tregisterProvider: registerProvider,\n\t\tunregisterProvider: unregisterProvider\n\t};\n});\n\nexport default StateService;\n\n","export default function extend(scheduler) {\n\nvar commonViews = {\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\n};\n\nvar requiredExtensions = {\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\n\tunit: \"ext/dhtmlxscheduler_units.js\",\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\n};\n\nscheduler._commonErrorMessages = {\n\tunknownView: function(view){\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\n\t\treturn (\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\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\" + \n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\n\t},\n\tcollapsedContainer: function(div){\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\n\t\t\"
\\n\";\n\t}\n};\n\nscheduler.createTimelineView = function() {\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \n\t\"\\n\" +\n\t\"Related docs: \" + commonViews.timeline);\n};\n\nscheduler.createUnitsView = function() {\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \n\t\"\\n\" +\n\t\"Related docs: \" + commonViews.unit);\n};\n\nscheduler.createGridView = function() {\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \n\t\"\\n\" +\n\t\"Related docs: \" + commonViews.grid);\n};\n\nscheduler.addMarkedTimespan = function() {\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \n\t\"\\n\" +\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\n};\n\nscheduler.renderCalendar = function() {\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \n\t\"\\n\" +\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\n};\n\nscheduler.exportToPNG = function() {\n\tthrow new Error([\n\t\t\"scheduler.exportToPNG is not implemented.\",\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\n\t].join(\"\\n\"));\n};\n\nscheduler.exportToPDF = function() {\n\tthrow new Error([\n\t\t\"scheduler.exportToPDF is not implemented.\",\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\n\t].join(\"\\n\"));\n};\n\n\n}","\nimport nav_bar from \"./nav_bar\";\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\nimport eventable from \"../utils/eventable\";\n\n\nexport default function extend(scheduler) {\n\neventable(scheduler);\n\nnav_bar(scheduler);\n\nscheduler._detachDomEvent = function(el, event, handler){\n\tif (el.removeEventListener){\n\t\tel.removeEventListener(event, handler, false);\n\n\t}else if (el.detachEvent){\n\t\tel.detachEvent(\"on\"+event, handler);\n\t}\n};\n\n\nscheduler._init_once = function(){\n\tscheduler_resize_listener(scheduler);\n\n\tscheduler._init_once = function(){};\n};\n\nconst layout = {\n\t\"navbar\": {\n\t\trender: function (config) {\n\t\t\treturn scheduler._init_nav_bar(config);\n\t\t}\n\t},\n\t\"header\": {\n\t\trender: function (config) {\n\t\t\tconst element = document.createElement(\"div\");\n\t\t\telement.className = \"dhx_cal_header\";\n\t\t\treturn element;\n\t\t}\n\t},\n\t\"dataArea\": {\n\t\trender: function (config) {\n\t\t\tconst element = document.createElement(\"div\");\n\t\t\telement.className = \"dhx_cal_data\";\n\t\t\treturn element;\n\t\t}\n\t},\n\t\"html_element\": {\n\t\trender: function (config) {\n\t\t\treturn config.html;\n\t\t}\n\t}\n};\n\nfunction hasSchedulerMarkup(element){\n\treturn !!(\n\t\telement.querySelector(\".dhx_cal_header\") &&\n\t\telement.querySelector(\".dhx_cal_data\") &&\n\t\telement.querySelector(\".dhx_cal_navline\")\n\t\t);\n}\n\nfunction createDefaultHeader(scheduler){\n\tconst views = [\n\t\t\"day\",\n\t\t\"week\",\n\t\t\"month\"\n\t];\n\tconst date = [\n\t\t\"date\"\n\t];\n\tconst nav = [\n\t\t\"prev\",\n\t\t\"today\",\n\t\t\"next\"\n\t];\n\n\tif(scheduler.matrix){\n\t\tfor(const i in scheduler.matrix){\n\t\t\tviews.push(i);\n\t\t}\n\t}\n\tif(scheduler._props){\n\t\tfor(const i in scheduler._props){\n\t\t\tviews.push(i);\n\t\t}\n\t}\n\n\tif(scheduler._grid && scheduler._grid.names){\n\t\tfor(const i in scheduler._grid.names){\n\t\t\tviews.push(i);\n\t\t}\n\t}\n\n\tconst optionalViews = [\n\t\t\"map\",\n\t\t\"agenda\",\n\t\t\"week_agenda\",\n\t\t\"year\"\n\t];\n\n\toptionalViews.forEach(function(viewName){\n\t\tif(scheduler[viewName + \"_view\"]){\n\t\t\tviews.push(viewName);\n\t\t}\n\t});\n\n\treturn views.concat(date).concat(nav);\n}\n\nscheduler.init=function(id,date,mode){\n\tif(this.$destroyed){\n\t\treturn; // not have errors when try to reinit destroyed scheduler\n\t}\n\tdate=date||(scheduler._currentDate());\n\tmode=mode||\"week\";\n\n\tif(this._obj){\n\t\tthis.unset_actions();\n\t}\n\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\n\tthis.$container = this._obj;\n\tthis.$root = this._obj;\n\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\n\t\t// scheduler container has zero height and non-zero width\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\n\t}\n\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\n\t\tthis.$container.setAttribute(\"role\", \"application\");\n\t}\n\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\n\t\t// if no header config and no required markup - use the default header\n\t\t// so the scheduler could be initialized in an empty div\n\t\tthis.config.header = createDefaultHeader(this);\n\t\twindow.console.log([// jshint ignore:line\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\n\t\t\t\"Using a default header configuration: \",\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\n\t\t].join(\"\\n\"));// jshint ignore:line\n\t}\n\n\tif (this.config.header) {\n\t\tthis.$container.innerHTML = \"\";\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\n\t\tif(this.config.header.height){\n\t\t\tthis.xy.nav_height = this.config.header.height;\n\t\t}\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\n\t\tthis.$container.appendChild(layout.header.render());\n\t\tthis.$container.appendChild(layout.dataArea.render());\n\t} else {\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\n\t\tif(!hasSchedulerMarkup(this.$container)){\n\t\t\tthrow new Error([\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\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\"\n\t\t\t].join(\"\\n\"));\n\t\t}\n\t}\n\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\n\n\t//hook for terrace skin\n\tif (this._skin_init)\n\t\tscheduler._skin_init();\n\n\tscheduler.date.init();\n\n\tthis._scroll=true;\n\n\tthis._els=[];\n\tthis.get_elements();\n\tthis.init_templates();\n\tthis.set_actions();\n\n\tthis._init_once();\n\tthis._init_touch_events();\n\n\tthis.set_sizes();\n\tscheduler.callEvent('onSchedulerReady', []);\n\tscheduler.$initialized = true;\n\tthis.setCurrentView(date,mode);\n\n};\n\nscheduler.xy={\n\tmin_event_height:20,\n\tbar_height: 24,\n\tscale_width:50,\n\tscroll_width:18,\n\tscale_height:20,\n\tmonth_scale_height:20,\n\tmenu_width:25,\n\tmargin_top:0,\n\tmargin_left:0,\n\teditor_width:140,\n\tmonth_head_height:22,\n\tevent_header_height: 14\n};\nscheduler.keys={\n\tedit_save:13,\n\tedit_cancel:27\n};\n\nscheduler.bind = function bind(functor, object){\n\tif(functor.bind)\n\t\treturn functor.bind(object);\n\telse\n\t\treturn function(){ return functor.apply(object,arguments); };\n};\n\nscheduler.set_sizes=function(){\n\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\n\n\t//not-table mode always has scroll - need to be fixed in future\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\n\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\n\tif(scheduler._is_material_skin()){\n\t\tif(!materialScalePlaceholder) {\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\n\t\t}\n\t\tmaterialScalePlaceholder.style.display = \"block\";\n\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\n\n\t}else{\n\t\tif(materialScalePlaceholder){\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\n\t\t}\n\t}\n\n\tif (this._lightbox) {\n\t\tif (scheduler.$container.offsetWidth < 1200) {\n\t\t} else {\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\n\t\t}\n\t}\n\n\tthis._data_width = w-scale_x;\n\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\n\tconst header = this._els[\"dhx_cal_header\"][0];\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\n\theader.style.left = ``;\n\theader.style.right = ``;\n\tif(!this._table_view){\n\t\tif(this.config.rtl){\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\n\t\t}else{\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\n\t\t}\n\t} else {\n\t\tif(!this.config.rtl){\n\t\t\theader.style.left = `-1px`;\n\t\t} else {\n\t\t\theader.style.right = `-1px`;\n\t\t}\n\t}\n};\nscheduler.set_xy=function(node,w,h,x,y){\n\tfunction prepareValue(val){\n\t\tlet prepared = val;\n\t\tif(!isNaN(Number(prepared))){\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\n\t\t}\n\t\treturn prepared;\n\t}\n\n\tvar direction = 'left';\n\n\tif(w !== undefined) {\n\t\tnode.style.width = prepareValue(w);\n\t}\n\n\tif(h !== undefined){\n\t\tnode.style.height = prepareValue(h);\n\t}\n\n\tif (arguments.length>3){\n\n\t\tif(x !== undefined){\n\t\t\tif (this.config.rtl) direction = 'right';\n\t\t\tnode.style[direction]=x+\"px\";\n\t\t}\n\t\tif(y !== undefined){\n\t\t\tnode.style.top=y+\"px\";\n\t\t}\n\t}\n};\nscheduler.get_elements=function(){\n\t//get all child elements as named hash\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\n\tfor (let i=0; i < els.length; i++){\n\t\tlet class_name= scheduler._getClassName(els[i]);\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\n\t\tthis._els[class_name].push(els[i]);\n\n\t\t//check if name need to be changed\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\n\t\t\tlabel = attr_value.split(\"_\")[0];\n\t\tif (label) {\n\t\t\tthis._waiAria.labelAttr(els[i], label);\n\t\t\tels[i].innerHTML = label;\n\t\t}\n\t}\n};\n\n\nconst domEventsScope = scheduler._createDomEventScope();\n\nscheduler.unset_actions = function(){\n\tdomEventsScope.detachAll();\n};\n\nscheduler.set_actions=function(){\n\tfor (const a in this._els){\n\t\tif (this._click[a]){\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\n\t\t\t\tconst element = this._els[a][i];\n\t\t\t\tconst handler = this._click[a].bind(element);\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\n\t\t\t}\n\t\t}\n\t}\n\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\n\t\te.preventDefault();\n\t\treturn false;\n\t});\n\t//this._obj.onselectstart=function(e){ return false; };\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\n\t\tif (!scheduler._temp_touch_block)\n\t\t\tscheduler._on_mouse_move(e);\n\t});\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\n\t\tif (!scheduler._ignore_next_click)\n\t\t\tscheduler._on_mouse_down(e);\n\t});\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\n\t\tif (!scheduler._ignore_next_click)\n\t\t\tscheduler._on_mouse_up(e);\n\t});\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\n\t\tscheduler._on_dbl_click(e);\n\t});\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\n\t\t\t// block the default browser context menu \n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\n\t\treturn returnValue;\n\t});\n};\nscheduler.select=function(id){\n\tif (this._select_id==id) return;\n\tscheduler._close_not_saved();\n\tthis.editStop(false);\n\tif(this._select_id){\n\t\tthis.unselect();\n\t}\n\tthis._select_id = id;\n\tthis.updateEvent(id);\n\tthis.callEvent(\"onEventSelected\", [id]);\n};\nscheduler.unselect=function(id){\n\tif (id && id!=this._select_id) {\n\t\treturn;\n\t}\n\tconst previousSelection = this._select_id;\n\tthis._select_id = null;\n\tif (previousSelection && this.getEvent(previousSelection)) {\n\t\tthis.updateEvent(previousSelection);\n\t}\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\n};\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\n\treturn {\n\t\tmode: this._mode,\n\t\tdate: new Date(this._date),\n\t\tmin_date: new Date(this._min_date),\n\t\tmax_date: new Date(this._max_date),\n\t\teditor_id: this._edit_id,\n\t\tlightbox_id: this._lightbox_id,\n\t\tnew_event: this._new_event,\n\t\tselect_id: this._select_id,\n\t\texpanded: this.expanded,\n\t\tdrag_id: this._drag_id,\n\t\tdrag_mode: this._drag_mode\n\t};\n}).bind(scheduler));\n\nscheduler._click={\n\tdhx_cal_data:function(e){\n\t\t//in case of touch disable click processing\n\t\tif (scheduler._ignore_next_click){\n\t\t\tif (e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\te.cancelBubble = true;\n\t\t\tscheduler._ignore_next_click = false;\n\t\t\treturn false;\n\t\t}\n\n\n\t\tconst id = scheduler._locate_event(e.target);\n\n\t\tif (!id) {\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\n\t\t} else {\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\n\t\t}\n\n\t\tif (id && scheduler.config.select) {\n\n\t\t\tscheduler.select(id);\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\n\n\t\t\tconst mask = scheduler._getClassName(icon);\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\n\t\t} else{\n\t\t\tscheduler._close_not_saved();\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\n\t\t\t\tscheduler.unselect();\n\t\t\t}\n\t\t}\n\t},\n\tdhx_cal_prev_button:function(){\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\n\t},\n\tdhx_cal_next_button:function(dummy,step){\n\t\tlet def_step = 1;\n\t\tif (scheduler.config.rtl){\n\t\t\tstep = -step;\n\t\t\tdef_step = -def_step;\n\t\t}\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\n\t},\n\tdhx_cal_today_button:function(){\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\n\t\t}\n\t},\n\tdhx_cal_tab:function(){\n\t\tconst name = this.getAttribute(\"data-tab\");\n\t\tconst deprecated_name = this.getAttribute(\"name\");\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\n\t\tscheduler.setCurrentView(scheduler._date,mode);\n\t},\n\tbuttons:{\n\t\t\"delete\":function(id){\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\n\t\t});\n\t\t},\n\t\tedit:function(id){ scheduler.edit(id); },\n\t\tsave:function(id){ scheduler.editStop(true); },\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\n\t\tform:function(id){ scheduler.showLightbox(id); },\n\t\tcancel:function(id){ scheduler.editStop(false); }\n\t}\n};\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\n\tif (!message)\n\t\treturn callback();\n\n\tconfig = config || {};\n\tconst opts = { ...config, text: message };\n\tif (title) {\n\t\topts.title = title;\n\t}\n\tif (callback) {\n\t\topts.callback = function(result) {\n\t\t\tif (result) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t};\n\t}\n\tscheduler.confirm(opts);\n};\nscheduler.addEventNow=function(start,end,e){\n\tlet base = {};\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\n\t\tbase = start;\n\t\tstart = null;\n\t}\n\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\n\tlet start_date = new Date(start);\n\tif (!end){\n\t\tlet start_hour = this.config.first_hour;\n\t\tif (start_hour > start_date.getHours()){\n\t\t\tstart_date.setHours(start_hour);\n\t\t\tstart = start_date.valueOf();\n\t\t}\n\t\tend = start.valueOf()+duration;\n\t}\n\tlet end_date = new Date(end);\n\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\n\tif(start_date.valueOf() == end_date.valueOf())\n\t\tend_date.setTime(end_date.valueOf()+duration);\n\tbase.start_date = base.start_date||start_date;\n\tbase.end_date = base.end_date||end_date;\n\tbase.text = base.text||this.locale.labels.new_event;\n\tbase.id = this._drag_id = base.id || this.uid();\n\tthis._drag_mode=\"new-size\";\n\tthis._loading=true;\n\tconst eventId = this.addEvent(base);\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\n\tthis._loading=false;\n\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\n\tthis._on_mouse_up(e);\n\treturn eventId;\n};\nscheduler._on_dbl_click=function(e,src){\n\tsrc = src || e.target;\n\tif (this.config.readonly) return;\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\n\tswitch(name){\n\t\tcase \"dhx_scale_holder\":\n\t\tcase \"dhx_scale_holder_now\":\n\t\tcase \"dhx_month_body\":\n\t\tcase \"dhx_wa_day_data\":\n\t\t\tif (!scheduler.config.dblclick_create) break;\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\n\t\t\tbreak;\n\t\tcase \"dhx_cal_event\":\n\t\tcase \"dhx_wa_ev_body\":\n\t\tcase \"dhx_agenda_line\":\n\t\tcase \"dhx_cal_agenda_event_line\":\n\t\tcase \"dhx_grid_event\":\n\t\tcase \"dhx_cal_event_line\":\n\t\tcase \"dhx_cal_event_clear\": {\n\t\t\tconst id = this._locate_event(src);\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\n\t\t\t\tthis.showLightbox(id);\n\t\t\telse\n\t\t\t\tthis.edit(id);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"dhx_time_block\":\n\t\tcase \"dhx_cal_container\":\n\t\t\treturn;\n\t\tdefault: {\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\n\t\t\tif (viewHandler) {\n\t\t\t\tviewHandler.call(this,e);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (src.parentNode && src != this)\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n};\n//column index by mouse x-coordinate\nscheduler._get_column_index = function(x_pos){\n\tlet column = 0;\n\tif (this._cols){\n\t\tlet width = 0;\n\t\tlet i = 0;\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\n\t\t\twidth += this._cols[i];\n\t\t\ti++;\n\t\t}\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\n\n\t\tif (this._ignores){\n\t\t\tif(column >= this._cols.length){\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\n\t\t\t\t\tcolumn--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\treturn column;\n};\n\n//transform mouse coordinates to day-time indexes of week based view\nscheduler._week_indexes_from_pos = function(pos){\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\n\tif(!this._cols){\n\t\treturn pos;\n\t}else{\n\t\tconst column = this._get_column_index(pos.x);\n\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\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);\n\t\treturn pos;\n\t}\n};\n\nscheduler._mouse_coords=function(ev){\n\tlet pos;\n\tconst body = document.body;\n\tconst documentElement = document.documentElement;\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\n\t\tpos={x:ev.pageX, y:ev.pageY};\n\telse pos={\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\n\t};\n\t//apply layout\n\tif (this.config.rtl && this._colsS) {\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\n\t\tif (this._mode !== \"month\") {\n\t\t\tpos.x -= this.xy.scale_width;\n\t\t}\n\t} else {\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\n\t}\n\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\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;\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\n\tpos.ev = ev;\n\tconst handler = this[\"mouse_\"+this._mode];\n\tif (handler){\n\t\tpos = handler.call(this,pos);\n\t}else{\n\t\t//transform to date\n\t\tif (!this._table_view) {\n\t\t\tpos = this._week_indexes_from_pos(pos);\n\t\t} else {\n\t\t\tconst column = this._get_column_index(pos.x);\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\n\t\t\t\treturn pos;\n\t\t\tlet dy=0;\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\n\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\n\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\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;\n\n\t\t\t//we care about ignored days only during event moving in month view\n\t\t\tif (this._drag_mode == \"move\"){\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\n\t\t\t\t\tpos._ignores = true;\n\t\t\t\t\t//get real lengtn of event\n\t\t\t\t\tif (!this._drag_event._event_length)\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\"});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpos.x=0;\n\t\t}\n\t}\n\tpos.timestamp = +new Date();\n\treturn pos;\n};\nscheduler._close_not_saved=function(){\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\n\n\t\tscheduler._dhtmlx_confirm({\n\t\t\tmessage: confirmationText, \n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \n\t\t\tcallback: function() { \n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\n\t\t\t}\n\t\t});\n\t\tif(confirmationText){\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\n\t\t}\n\t}\n};\nscheduler._correct_shift=function(start, back){\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\n};\n\nscheduler._is_pos_changed = function(old_pos, new_pos){\n\tfunction diff(old_val, new_val, acc){\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\n\t}\n\n\tif(!(old_pos && this._drag_pos)){\n\t\treturn true;\n\t}\n\tconst delay = 100;\n\tconst d_pos = 5;\n\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\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));\n};\n\nscheduler._correct_drag_start_date = function(start){\n\tlet obj;\n\tif (scheduler.matrix)\n\t\tobj = scheduler.matrix[scheduler._mode];\n\tobj = obj || { x_step:1, x_unit:\"day\" };\n\n\tstart = new Date(start);\n\tlet len = 1;\n\tif(obj._start_correction || obj._end_correction)\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\n\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\n};\nscheduler._correct_drag_end_date = function(start, duration){\n\tlet obj;\n\tif (scheduler.matrix) {\n\t\tobj = scheduler.matrix[scheduler._mode];\n\t}\n\tobj = obj || { x_step:1, x_unit:\"day\" };\n\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\n};\n\nscheduler._on_mouse_move=function(e){\n\tif (this._drag_mode){\n\t\tvar pos=this._mouse_coords(e);\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\n\t\t\tvar start, end;\n\t\t\tif (this._edit_id!=this._drag_id)\n\t\t\t\tthis._close_not_saved();\n\n\t\t\tif(!this._drag_mode)\n\t\t\t\treturn;\n\n\t\t\tvar mousedownPos = null;\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\n\t\t\t\tmousedownPos = this._drag_pos;\n\t\t\t\tmousedownPos.has_moved = true;\n\t\t\t}\n\n\t\t\tthis._drag_pos = pos;\n\n\t\t\tthis._drag_pos.has_moved = true;\n\n\t\t\tif (this._drag_mode==\"create\"){\n\n\t\t\t\t// use mouse down position as a starting point for drag-create\n\t\t\t\tif(mousedownPos){\n\t\t\t\t\tpos = mousedownPos;\n\t\t\t\t}\n\n\t\t\t\tthis._close_not_saved();\n\t\t\t\tthis.unselect(this._select_id);\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\n\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\n\n\t\t\t\tif (!this._drag_start) {\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\n\t\t\t\t\tif (!res){\n\t\t\t\t\t\tthis._loading=false;\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loading=false;\n\t\t\t\t\tthis._drag_start=start;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tend = start;\n\t\t\t\tif (end == this._drag_start) {\n\t\t\t\t}\n\n\t\t\t\tvar start_date = new Date(this._drag_start);\n\t\t\t\tvar end_date = new Date(end);\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\n\t\t\t\t}\n\n\n\t\t\t\tthis._drag_id=this.uid();\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\n\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\n\t\t\t\tthis._loading=false;\n\t\t\t\tthis._drag_mode=\"new-size\";\n\n\t\t\t}\n\n\t\t\tvar timeStep = this.config.time_step;\n\t\t\tvar ev=this.getEvent(this._drag_id);\n\t\t\tvar obj;\n\t\t\tif (scheduler.matrix)\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\n\n\t\t\tif (this._drag_mode==\"move\"){\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\n\t\t\t\tif (!pos.custom && this._table_view) {\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\n\t\t\t\t}\n\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\n\t\t\t\t}\n\n\t\t\t\tif (this._drag_event._move_event_shift) {\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\n\t\t\t\t}\n\n\t\t\t\tstart = this._correct_shift(start);\n\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\n\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\n\n\t\t\t\t} else\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\n\t\t\t} else { // resize\n\t\t\t\tstart = ev.start_date.valueOf();\n\t\t\t\tend = ev.end_date.valueOf();\n\t\t\t\tif (this._table_view) {\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);\n\t\t\t\t\tif (this._mode == \"month\") {\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\n\t\t\t\t\t\tif( this._drag_from_start ) {\n\t\t\t\t\t\t\tvar day = 24*60*60000;\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\n\t\t\t\t\t\t\t\tstart = resize_date - day;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tend = resize_date;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(this.config.preserve_length) {\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\n\t\t\t\t\t\t\t\tstart = resize_date;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tend = resize_date;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\n\t\t\t\t\tvar firstHour = this.config.first_hour;\n\t\t\t\t\tvar lastHour = this.config.last_hour;\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\n\n\t\t\t\t\tthis.config.time_step = 1;\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\n\t\t\t\t\tthis.config.time_step = timeStep;\n\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\n\n\t\t\t\t\t// rounding end date to the closest time step\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\n\t\t\t\t\t\tend = end_day_start + maxDate;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tend = end_day_start + minDate;\n\t\t\t\t\t}\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\n\t\t\t\t\t\tend = this._correct_shift(end);\n\t\t\t\t}\n\t\t\t\tif (this._drag_mode == \"new-size\") {\n\t\t\t\t\tif (end <= this._drag_start){\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstart = this._drag_start;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (end<=start)\n\t\t\t\t\t\tend=start+timeStep*60000;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar new_end = new Date(end-1);\n\t\t\tvar new_start = new Date(start);\n\t\t\t//deny drag out of visible scheduler scale in timeline view\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\n\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\n\t\t\t\t\t// not move event if it's already outside time scale\n\t\t\t\t\tnew_start = new Date(ev.start_date);\n\t\t\t\t\tend = new Date(ev.end_date);\n\t\t\t\t}else{\n\n\t\t\t\t\tvar duration = end - new_start;\n\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\n\t\t\t\t\t\t\tif(obj._start_correction)\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\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));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\n\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\n\t\t\t\t\t\t\tif(obj._end_correction)\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\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));\n\t\t\t\t\t\t\tif(this._ignores_detected){\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tvar new_end = new Date(end-1);\n\t\t\t}\n\n\n\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\n\t\t\tif(!this._table_view && this._dragEventBody &&\n\t\t\t\t!scheduler.config.all_timed &&\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)){\n\t\t\t\tvar duration = end - new_start;\n\t\t\t\tif (this._drag_mode == \"move\") {\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\n\t\t\t\t\tnew_start = new Date(day);\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\n\t\t\t\t\tnew_end = new Date(end-1);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\n\t\t\tif(!this._table_view &&\n\t\t\t\t!scheduler.config.all_timed &&\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)){\n\t\t\t\tvar duration = end - new_start;\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\n\t\t\t\tend.setHours(this.config.last_hour);\n\t\t\t\tnew_end = new Date(end-1);\n\t\t\t\tif(this._drag_mode == \"move\"){\n\t\t\t\t\tnew_start = new Date(+end - duration);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//prevent out-of-borders situation for day|week view\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\n\t\t\t\tcls += ' dhx_after';\n\t\t\telse if (sd.valueOf()==cd.valueOf())\n\t\t\t\tcls += ' dhx_now';\n\n\t\t\tif (this._ignores_detected && this._ignores[j]){\n\t\t\t\tcls += \" dhx_scale_ignore\";\n\t\t\t}\n\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\n\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\n\t\t\tvar body_class = \"dhx_month_body\";\n\t\t\tvar head_class = \"dhx_month_head\";\n\t\t\tif (j === 0 && this.config.left_border) {\n\t\t\t\tbody_class += \" dhx_month_body_border\";\n\t\t\t\thead_class += \" dhx_month_head_border\";\n\t\t\t}\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\n\t\t\t\tcell.style.width = tdwidths[j];\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\n\n\t\t\t\tvar cellHead = document.createElement(\"div\");\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\n\t\t\t\tcellHead.className = head_class;\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\n\t\t\t\tcell.appendChild(cellHead);\n\n\t\t\t\tvar cellBody = document.createElement(\"div\");\n\t\t\t\tcellBody.className = body_class;\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\n\t\t\t\t// cellBody.style.width = tdwidths[j];\n\t\t\t\tcell.appendChild(cellBody);\n\n\t\t\t} else {\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\n\t\t\t}\n\t\t\trendered_dates.push(sd);\n\t\t\tvar bf1 = sd.getDate();\n\t\t\tsd=this.date.add(sd,1,\"day\");\n\t\t\tif (sd.getDate() - bf1 > 1)\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\n\t\t}\n\n\t\tscheduler._colsS.heights[i] = cellheight;\n\t\tcellheight += getCellHeight(i);\n\t}\n\n\tthis._min_date = view_start;\n\tthis._max_date = sd;\n\n\tdiv.innerHTML = \"\";\n\tdiv.appendChild(table);\n\n\tthis._scales = {};\n\tvar cells = div.querySelectorAll('[data-cell-date]');\n\tcells.forEach((cell) => {\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\n\t\tthis._scales[+date] = body;\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\n\t});\n\n\treturn this._max_date;\n};\n\nscheduler._reset_month_scale=function(b,dd,sd,rows){\n\t//recalculates rows height and redraws month layout\n\tvar ed=scheduler.date.add(dd,1,\"month\");\n\n\t//trim time part for comparison reasons\n\tvar cd = scheduler._currentDate();\n\tthis.date.date_part(cd);\n\tthis.date.date_part(sd);\n\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\n\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\n\n\tthis._colsS.height = height + this.xy.month_head_height;\n\tthis._colsS.heights = [];\n\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\n\n};\n\nscheduler.getView = function (viewName) {\n\tif (!viewName) {\n\t\tviewName = scheduler.getState().mode;\n\t}\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\n\t\treturn scheduler.matrix[viewName];\n\t}\n\n\tif (scheduler._props && scheduler._props[viewName]) {\n\t\treturn scheduler._props[viewName];\n\t}\n\n\treturn null;\n};\n\nscheduler.getLabel = function(property, key) {\n\tvar sections = this.config.lightbox.sections;\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\n\t\t}\n\t} else{\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\n\t}\n\n\tvar last_column = true;\n\twhile (startColumnIndex < endColumnIndex){\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\n\t\t\teventLength -= (endDate-check);\n\n\t\t}else{\n\t\t\tlet excludedDuration = 0;\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\n\t\t\tconst intervalEnd = endDate;\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\n\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\n\t\t\t}\n\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\n\t\t\t\texcludedDuration += config._start_correction;\n\t\t\t} else {\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\n\t\t\t}\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\n\t\t\tif(intervalStart.valueOf() <= leftCellCutOffEnd.valueOf()){\n\t\t\t\texcludedDuration += config._end_correction;\n\t\t\t}\n\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\n\t\t\t}\n\t\t\t\n\n\t\t\teventLength -= excludedDuration;\n\t\t\tlast_column = false;\n\t\t}\n\t\tendDate = check;\n\t\tendColumnIndex--;\n\t}\n\treturn eventLength;\n};\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\n\tvar sd = new Date(end_date);\n\tvar dir = back ? -1 : 1;\n\n\t//get difference caused by first|last hour\n\tif (obj._start_correction || obj._end_correction){\n\t\tvar today;\n\t\tif (back)\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\n\t\telse\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\n\t\tif(days < 0) days = 0;\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\n\t}\n\n\tvar fd = new Date(end_date*1+ev_length*dir);\n\tvar ignore = this[\"ignore_\"+this._mode];\n\n\tvar start_slot = 0,\n\t\tend_slot;\n\tif (obj.render){\n\t\tstart_slot = this._get_date_index(obj, sd);\n\t\tend_slot = this._get_date_index(obj, fd);\n\t} else{\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\n\t}\n\n\twhile (start_slot*dir <= end_slot*dir){\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\n\t\tif (ignore && ignore(sd)){\n\t\t\tev_length += (check-sd)*dir;\n\t\t\tend_slot += dir;\n\t\t}\n\n\t\tsd = check;\n\t\tstart_slot+=dir;\n\t}\n\n\treturn ev_length;\n};\n\nscheduler._get_section_view = function(){\n\treturn this.getView();\n};\n\nscheduler._get_section_property = function(){\n\tif(this.matrix && this.matrix[this._mode]){\n\t\treturn this.matrix[this._mode].y_property;\n\t}else if(this._props && this._props[this._mode]){\n\t\treturn this._props[this._mode].map_to;\n\t}\n\treturn null;\n};\n\nscheduler._is_initialized = function(){\n\tvar state = this.getState();\n\treturn (this._obj && state.date && state.mode);\n};\nscheduler._is_lightbox_open = function(){\n\tvar state = this.getState();\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\n};\n\n}","export default function extend(scheduler) {\n\n(function(){\n\n\t// eslint-disable-next-line no-control-regex\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\n\n\tfunction stripHTMLLite(htmlText){\n\t\treturn (htmlText + \"\")\n\t\t\t.replace(htmlTags, \" \").\n\t\t\treplace(extraSpaces, \" \");\n\t}\n\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\n\tfunction escapeQuotes(text){\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\n\t}\n\n\tscheduler._waiAria = {\n\t\tgetAttributeString: function(attr){\n\t\t\tvar attributes = [\" \"];\n\t\t\tfor(var i in attr){\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tattributes.push(\" \");\n\t\t\treturn attributes.join(\" \");\n\t\t},\n\t\tsetAttributes: function(div, values){\n\t\t\tfor(var i in values){\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\n\t\t\t}\n\t\t\treturn div;\n\t\t},\n\n\t\tlabelAttr: function(div, content){\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\n\t\t},\n\t\tlabel: function(label){\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\n\t\t},\n\n\t\t// day/week/units\n\n\t\thourScaleAttr: function(div, content){\n\t\t\tthis.labelAttr(div, content);\n\n\t\t},\n\t\tmonthCellAttr: function(div, date){\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\n\t\t},\n\n\t\tnavBarDateAttr: function(div, content){\n\t\t\tthis.labelAttr(div, content);\n\t\t},\n\t\tdayHeaderAttr: function(div, content){\n\t\t\tthis.labelAttr(div, content);\n\t\t},\n\n\t\tdayColumnAttr: function(div, date){\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\n\t\t},\n\n\t\theaderButtonsAttributes: function(div, label){\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\n\t\t},\n\n\t\theaderToggleState: function(div, isActive){\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\n\t\t},\n\n\n\t\tgetHeaderCellAttr:function(dateString){\n\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\n\t\t},\n\n\n\t\teventAttr: function(event, div){\n\t\t\tthis._eventCommonAttr(event, div);\n\t\t},\n\n\n\t\t_eventCommonAttr: function(event, div){\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\n\n\t\t\tif(scheduler.config.readonly){\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\n\n\t\t\t}\n\n\t\t\tif(event.$dataprocessor_class){\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\n\t\t\t}\n\n\n\t\t\tdiv.setAttribute(\"aria-selected\",\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\n\t\t},\n\n\t\tsetEventBarAttr: function(event, div){\n\t\t\tthis._eventCommonAttr(event, div);\n\t\t},\n\n\t\t_getAttributes: function(attributeSetter, arg){\n\t\t\tvar result = {\n\t\t\t\tsetAttribute:function(name, value){\n\t\t\t\t\tthis[name] = value;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tattributeSetter.apply(this, [arg, result]);\n\t\t\treturn result;\n\n\t\t},\n\n\t\teventBarAttrString: function(event){\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\n\t\t},\n\n\n\n\t\tagendaHeadAttrString :function(){\n\t\t\treturn this.getAttributeString({role: \"row\"});\n\t\t},\n\t\tagendaHeadDateString :function(label){\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\n\t\t},\n\t\tagendaHeadDescriptionString :function(label){\n\t\t\treturn this.agendaHeadDateString(label);\n\t\t},\n\t\tagendaDataAttrString: function(){\n\t\t\treturn this.getAttributeString({role: \"grid\"});\n\t\t},\n\t\tagendaEventAttrString: function(event){\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\n\n\t\t\tattrs[\"role\"] = \"row\";\n\n\t\t\treturn this.getAttributeString(attrs);\n\n\t\t},\n\t\tagendaDetailsBtnString: function(){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\n\t\t},\n\n\n\t\tgridAttrString: function(){\n\t\t\treturn this.getAttributeString({role: \"grid\"});\n\t\t},\n\n\t\tgridRowAttrString: function(event){\n\t\t\treturn this.agendaEventAttrString(event);\n\t\t},\n\n\t\tgridCellAttrString: function(event, column, value){\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\n\t\t\t\t(column.label === undefined ? column.id : column.label),\n\t\t\t\t\": \",\n\t\t\t\tvalue\n\t\t\t]});\n\t\t},\n\n\t\tmapAttrString: function(){\n\t\t\treturn this.gridAttrString();\n\t\t},\n\t\tmapRowAttrString: function(event){\n\t\t\treturn this.gridRowAttrString(event);\n\t\t},\n\t\tmapDetailsBtnString: function(){\n\t\t\treturn this.agendaDetailsBtnString();\n\t\t},\n\n\t\tminicalHeader: function(div, headerId){\n\t\t\tthis.setAttributes(div, {\n\t\t\t\t\"id\":headerId+\"\",\n\t\t\t\t\"aria-live\":\"assertice\",\n\t\t\t\t\"aria-atomic\":\"true\"\n\n\t\t\t});\n\t\t},\n\t\tminicalGrid: function(div, headerId){\n\t\t\tthis.setAttributes(div, {\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\n\t\t\t\t\"role\":\"grid\"\n\t\t\t});\n\t\t},\n\t\tminicalRow: function(div){\n\t\t\tthis.setAttributes(div, {\n\t\t\t\t\"role\":\"row\"\n\t\t\t});\n\t\t},\n\t\tminicalDayCell: function(div, date){\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\n\t\t\tthis.setAttributes(div, {\n\t\t\t\t\"role\":\"gridcell\",\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\n\t\t\t});\n\t\t},\n\t\tminicalHeadCell: function(div){\n\t\t\tthis.setAttributes(div, {\n\t\t\t\t\"role\":\"columnheader\"\n\t\t\t});\n\t\t},\n\n\n\t\tweekAgendaDayCell: function(div, date){\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\n\t\t\tvar headerId = scheduler.uid() + \"\";\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\n\n\t\t},\n\t\tweekAgendaEvent: function(div, event){\n\t\t\tthis.eventAttr(event, div);\n\t\t},\n\n\t\tlightboxHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t},\n\n\t\tlightboxVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\tlightboxSectionButtonAttrString: function(label){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\n\t\t},\n\n\t\tyearHeader: function(div, headerId){\n\t\t\tthis.setAttributes(div, {\n\t\t\t\t\"id\":headerId+\"\"\n\t\t\t});\n\t\t},\n\t\tyearGrid: function(div, headerId){\n\t\t\tthis.minicalGrid(div, headerId);\n\t\t},\n\t\tyearHeadCell: function(div){\n\t\t\treturn this.minicalHeadCell(div);\n\t\t},\n\t\tyearRow: function(div){\n\t\t\treturn this.minicalRow(div);\n\t\t},\n\t\tyearDayCell: function(div){\n\t\t\tthis.setAttributes(div, {\n\t\t\t\t\"role\":\"gridcell\"\n\t\t\t});\n\t\t},\n\n\t\tlightboxAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\n\t\t},\n\n\t\tlightboxButtonAttrString:function(buttonName){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\n\t\t},\n\t\teventMenuAttrString: function(iconName){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\n\t\t},\n\t\tlightboxHeader: function(div, headerText){\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\n\t\t},\n\n\t\tlightboxSelectAttrString: function(time_option){\n\t\t\tvar label = \"\";\n\n\t\t\tswitch (time_option) {\n\t\t\t\tcase \"%Y\":\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%m\":\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%d\":\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%H:%i\":\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\n\t\t},\n\n\n\t\tmessageButtonAttrString: function(buttonLabel){\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\n\t\t},\n\n\t\tmessageInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tmessageModalAttr: function(div, uid){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tif(uid){\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\n\t\t\t}\n\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tquickInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t},\n\n\t\tquickInfoHeaderAttrString: function(){\n\t\t\treturn \" role='heading' \";\n\t\t},\n\n\t\tquickInfoHeader: function(div, header){\n\t\t\tdiv.setAttribute(\"aria-label\", header);\n\t\t},\n\n\t\tquickInfoButtonAttrString: function(label){\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\n\t\t},\n\n\t\ttooltipAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\n\t\t},\n\n\t\ttooltipVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\ttooltipHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t}\n\t};\n\n\tfunction isDisabled(){\n\t\treturn !scheduler.config.wai_aria_attributes;\n\t}\n\n\tfor(var i in scheduler._waiAria){\n\t\tscheduler._waiAria[i] = (function(payload){\n\t\t\treturn function(){\n\t\t\t\tif(isDisabled()){\n\t\t\t\t\treturn \" \";\n\t\t\t\t}\n\t\t\t\treturn payload.apply(this, arguments);\n\t\t\t};\n\t\t})(scheduler._waiAria[i]);\n\t}\n\n\n})();\n\n}","export default function(scheduler){\n\treturn function assert(check, message){\n\t\tif (!check){\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\n\t\t\t\tif (scheduler.message) {\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\tconsole.log(message);\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-debugger\n\t\t\t\tdebugger;\n\t\t\t}\n\t\t}\n\t};\n}","export default function extend(scheduler) {\n\nif (window.jQuery){\n\n(function( $ ){\n\tvar counter = 0;\n\tvar methods = [];\n\t$.fn.dhx_scheduler = function(config){\n\t\tif (typeof(config) === 'string') {\n\t\t\tif (methods[config] ) {\n\t\t\t\treturn methods[config].apply(this, []);\n\t\t\t}else {\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\n\t\t\t}\n\t\t} else {\n\t\t\tvar views = [];\n\t\t\tthis.each(function() {\n\t\t\t\tif (this && this.getAttribute){\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\n\t\t\t\t\t\tvar name = \"scheduler\";\n\t\t\t\t\t\tif (counter){\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar comp = window[name];\n\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\n\t\t\t\t\t\tfor (var key in config)\n\t\t\t\t\t\t\tif (key!=\"data\")\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\n\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\n\t\t\t\t\t\t\tthis.innerHTML = '
';\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\n\t\t\t\t\t\tif (config.data)\n\t\t\t\t\t\t\tcomp.parse(config.data);\n\n\t\t\t\t\t\tviews.push(comp);\n\t\t\t\t\t\tcounter++;\n\t\t\t\t\t} else\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (views.length === 1) return views[0];\n\t\t\treturn views;\n\t\t}\n\t};\n\n\n\n\n})(window.jQuery);\n\n}\n\n}","export default function extend(scheduler) {\n\nscheduler.destructor = function(){\n\tscheduler.callEvent(\"onDestroy\", []);\n\tthis.clearAll();\n\n\tif(this.$container){\n\t\t// FIXME: clear container or remove container\n\t\tthis.$container.innerHTML = \"\";\n\t\t// scheduler.$domHelpers.remove(this.$container);\n\t}\n\n\tif(this._eventRemoveAll){\n\t\tthis._eventRemoveAll();\n\t}\n\n\tif(this.resetLightbox){\n\t\tthis.resetLightbox();\n\t}\n\n\tif(this._dp && this._dp.destructor){\n\t\tthis._dp.destructor();\n\t}\n\n\t// detachAllEvents should be called last, because in components may be attached events\n\tthis.detachAllEvents();\n\n\tfor(var i in this){\n\t\tif(i.indexOf(\"$\") === 0){\n\t\t\tdelete this[i];\n\t\t}\n\t}\n\tscheduler.$destroyed = true;\n};\n\n}","import serialize from \"../common/url_serialize.js\";\n\nexport default function extend(scheduler) {\n\nscheduler.Promise = window.Promise; \n\nfunction createConfig(method, args) {\n\tvar result = {\n\t\tmethod: method\n\t};\n\n\tif (args.length === 0) {\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\n\t}\n\tif (args.length === 1) {\n\t\tif (typeof args[0] === \"string\") {\n\t\t\tresult.url = args[0];\n\t\t\tresult.async = true;\n\t\t} else {\n\t\t\tresult.url = args[0].url;\n\t\t\tresult.async = (args[0].async || true);\n\t\t\tresult.callback = args[0].callback;\n\t\t\tresult.headers = args[0].headers;\n\t\t}\n\t\tif (method === \"POST\" || \"PUT\") {\n\t\t\tif (args[0].data) {\n\t\t\t\tif (typeof args[0].data !== \"string\") {\n\t\t\t\t\tresult.data = serialize(args[0].data);\n\t\t\t\t} else {\n\t\t\t\t\tresult.data = args[0].data;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.data = \"\";\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tresult.url = args[0];\n\tswitch(method) {\n\t\tcase \"GET\":\n\t\tcase \"DELETE\":\n\t\t\tresult.callback = args[1];\n\t\t\tresult.headers = args[2];\n\t\tbreak;\n\t\tcase \"POST\":\n\t\tcase \"PUT\":\n\t\t\tif (args[1]) {\n\t\t\t\tif (typeof args[1] !== \"string\") {\n\t\t\t\t\tresult.data = serialize(args[1]);\n\t\t\t\t} else {\n\t\t\t\t\tresult.data = args[1];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.data = \"\";\n\t\t\t}\n\t\t\tresult.callback = args[2];\n\t\t\tresult.headers = args[3];\n\t\tbreak;\n\t}\n\treturn result;\n}\nscheduler.ajax = {\n\t// if false - dhxr param will added to prevent caching on client side (default),\n\t// if true - do not add extra params\n\tcache: true,\n\n\t// default method for load/loadStruct, post/get allowed\n\tmethod: \"get\",\n\n\tserializeRequestParams: serialize,\n\tparse: function(data) {\n\t\tif (typeof data !== \"string\") return data;\n\n\t\tvar obj;\n\t\tdata = data.replace(/^[\\s]+/,\"\");\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\n\t\t\tobj.async = \"false\";\n\t\t\tobj.loadXML(data);\n\t\t}\n\t\treturn obj;\n\t},\n\txmltop: function(tagname, xhr, obj) {\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\n\t\t\t}\n\t\t}\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\n\t\treturn document.createElement(\"DIV\");\n\t},\n\txpath: function(xpathExp, docObj) {\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\n\t\tif (scheduler.$env.isIE) {\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\n\t\t} else {\n\t\t\tvar rows = [];\n\t\t\tvar first;\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\n\n\t\t\twhile (true){\n\t\t\t\tfirst = col.iterateNext();\n\t\t\t\tif(first){\n\t\t\t\t\trows.push(first);\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn rows;\n\t\t}\n\t},\n\tquery: function(config) {\n\t\treturn this._call(\n\t\t\t(config.method || \"GET\"),\n\t\t\tconfig.url,\n\t\t\tconfig.data || \"\",\n\t\t\t(config.async || true),\n\t\t\tconfig.callback,\n\t\t\tconfig.headers\n\t\t);\n\t},\n\tget: function(url, onLoad, headers) {\n\t\tvar config = createConfig(\"GET\", arguments);\n\t\treturn this.query(config);\n\t},\n\tgetSync: function(url, headers) {\n\t\tvar config = createConfig(\"GET\", arguments);\n\t\tconfig.async = false;\n\t\treturn this.query(config);\n\t},\n\tput: function(url, postData, onLoad, headers) {\n\t\tvar config = createConfig(\"PUT\", arguments);\n\t\treturn this.query(config);\n\t},\n\tdel: function(url, onLoad, headers) {\n\t\t/**\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\n\t\t * A payload within a DELETE request message has no defined semantics;\n\t\t * sending a payload body on a DELETE request might cause some existing\n\t\t * implementations to reject the request.\n\t\t */\n\t\tvar config = createConfig(\"DELETE\", arguments);\n\t\treturn this.query(config);\n\t},\n\tpost: function(url, postData, onLoad, headers) {\n\t\tif (arguments.length == 1) {\n\t\t\tpostData = \"\";\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\n\t\t\tonLoad = postData;\n\t\t\tpostData = \"\";\n\t\t}\n\t\tvar config = createConfig(\"POST\", arguments);\n\t\treturn this.query(config);\n\t},\n\tpostSync: function(url, postData, headers) {\n\t\tpostData = (postData === null ? \"\" : String(postData));\n\n\t\tvar config = createConfig(\"POST\", arguments);\n\t\tconfig.async = false;\n\t\treturn this.query(config);\n\t},\n\t_call: function(method, url, postData, async, onLoad, headers) {\n\t\treturn new scheduler.Promise((function(resolve, reject) {\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\n\n\t\t\tif (!!async) {\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\n\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve(t);\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\n\t\t\t\t\t\t\t\tonLoad = null;\n\t\t\t\t\t\t\t\tt = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 0);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (method == \"GET\" && !this.cache) {\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\n\t\t\t}\n\n\t\t\tt.open(method, url, async);\n\n\t\t\tif (headers){\n\t\t\t\tfor (var key in headers)\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\t\t} else if (method == \"GET\") {\n\t\t\t\tpostData = null;\n\t\t\t}\n\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\tt.send(postData);\n\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n\t\t}.bind(this)));\n\t},\n\turlSeparator: function(str){\n\t\tif (str.indexOf(\"?\") != -1)\n\t\t\treturn \"&\";\n\t\telse\n\t\t\treturn \"?\";\n\t}\n};\n\nscheduler.$ajax = scheduler.ajax; // for old\n\n}","export default function extend(scheduler) {\n\n/*\n%e\tDay of the month without leading zeros (01..31)\n%d\tDay of the month, 2 digits with leading zeros (01..31)\n%j\tDay of the year, 3 digits with leading zeros (001..366)\n%a\tA textual representation of a day, two letters\n%W\tA full textual representation of the day of the week\n\n%c\tNumeric representation of a month, without leading zeros (0..12)\n%m\tNumeric representation of a month, with leading zeros (00..12)\n%b\tA short textual representation of a month, three letters (Jan..Dec)\n%M\tA full textual representation of a month, such as January or March (January..December)\n\n%y\tA two digit representation of a year (93..03)\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\n*/\n\nscheduler.config={\n\tdefault_date: \"%j %M %Y\",\n\tmonth_date: \"%F %Y\",\n\tload_date: \"%Y-%m-%d\",\n\tweek_date: \"%l\",\n\tday_date: \"%D %j\",\n\thour_date: \"%H:%i\",\n\tmonth_day: \"%d\",\n\t//xml_date: \"%m/%d/%Y %H:%i\",\n\tdate_format: \"%Y-%m-%d %H:%i\",\n\tapi_date: \"%d-%m-%Y %H:%i\",\n\tparse_exact_format: false,\n\tpreserve_length:true,\n\ttime_step: 5,\n\tdisplayed_event_color: \"#ff4a4a\",\n\tdisplayed_event_text_color: \"#ffef80\",\n\twide_form: 0,\n\tday_column_padding: 8,\n\tuse_select_menu_space: true,\n\tfix_tab_position: true,\n\tstart_on_monday: true,\n\tfirst_hour: 0,\n\tlast_hour: 24,\n\treadonly: false,\n\tdrag_resize: true,\n\tdrag_move: true,\n\tdrag_create: true,\n\tdrag_event_body: true,\n\tdblclick_create: true,\n\tdetails_on_dblclick: true,\n\tedit_on_create: true,\n\tdetails_on_create: true,\n\theader: null,\n\thour_size_px: 44,\n\tresize_month_events:false,\n\tresize_month_timed:false,\n\tresponsive_lightbox: false,\n\tseparate_short_events: true,\n\trtl:false,\n\n\tcascade_event_display: false,\n\tcascade_event_count: 4,\n\tcascade_event_margin: 30,\n\n\tmulti_day:true,\n\tmulti_day_height_limit: 200,\n\n\tdrag_lightbox: true,\n\tpreserve_scroll: true,\n\tselect: true,\n\tundo_deleted: true,\n\tserver_utc: false,\n\ttouch:true,\n\ttouch_tip:true,\n\ttouch_drag:500,\n\ttouch_swipe_dates: false,\n\tquick_info_detached:true,\n\n\tpositive_closing: false,\n\t//header_datepicker: true,\n\tdrag_highlight: true,\n\tlimit_drag_out: false,\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\n\tbuttons_right: [\"dhx_delete_btn\"],\n\tlightbox: {\n\t\tsections: [\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\n\t\t]\n\t},\n\thighlight_displayed_event: true,\n\tleft_border: false,\n\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\n\tdelay_render: 0,\n\ttimeline_swap_resize: true,\n\twai_aria_attributes: true,\n\twai_aria_application_role: true,\n\n\tcsp: \"auto\",\n\tevent_attribute: \"data-event-id\",\n\tshow_errors: true\n};\n\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\n\nscheduler._helpers = {\n\tparseDate: function parseDate(date) {\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\n\t\treturn parse(date);\n\t},\n\tformatDate: function formatDate(date) {\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\n\t\treturn format(date);\n\t}\n};\n\nscheduler.templates={};\nscheduler.init_templates=function(){\n\n\n\n\tvar d=scheduler.date.date_to_str;\n\tvar c=scheduler.config;\n\tvar f = function(a,b){\n\t\tfor (var c in b)\n\t\t\tif (!a[c]) a[c]=b[c];\n\t};\n\tf(scheduler.templates,{\n\t\tday_date:d(c.default_date),\n\t\tmonth_date:d(c.month_date),\n\t\tweek_date:function(d1,d2){\n\t\t\tif(c.rtl) {\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\n\t\t\t} \n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\n\t\t},\n\t\tday_scale_date:d(c.default_date),\n\t\ttime_slot_text: function(date){\n\t\t\treturn \"\";\n\t\t},\n\t\ttime_slot_class: function(date){\n\t\t\treturn \"\";\n\t\t},\n\n\t\tmonth_scale_date:d(c.week_date),\n\t\tweek_scale_date:d(c.day_date),\n\t\thour_scale:d(c.hour_date),\n\t\ttime_picker:d(c.hour_date),\n\t\tevent_date:d(c.hour_date),\n\t\tmonth_day:d(c.month_day),\n\n\t\tload_format: d(c.load_date),\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\n\t//\txml_format:d(c.date_format,c.server_utc),\n\t\tformat_date: d(c.date_format, c.server_utc),\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\n\t\tevent_header:function(start,end,ev){\n\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\n\t\t\t\treturn scheduler.templates.event_date(start);\n\t\t\t}else{\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\n\t\t\t}\n\t\t},\n\t\tevent_text:function(start,end,ev){\n\t\t\treturn ev.text;\n\t\t},\n\t\tevent_class:function(start,end,ev){\n\t\t\treturn \"\";\n\t\t},\n\t\tmonth_date_class:function(d){\n\t\t\treturn \"\";\n\t\t},\n\t\tweek_date_class:function(d){\n\t\t\treturn \"\";\n\t\t},\n\t\tevent_bar_date:function(start,end,ev) {\n\t\t\treturn scheduler.templates.event_date(start);\n\t\t},\n\t\tevent_bar_text:function(start,end,ev){\n\t\t\treturn ev.text;\n\t\t},\n\t\tmonth_events_link : function(date, count){\n\t\t\treturn \"View more(\"+count+\" events)\";\n\t\t},\n\t\tdrag_marker_class : function(start, end, event){\n\t\t\treturn \"\";\n\t\t},\n\t\tdrag_marker_content : function(start, end, event){\n\t\t\treturn \"\";\n\t\t},\n\t\t/* Could be redifined */\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\n\t\ttooltip_text: function(start, end, event) {\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\n\t\t},\n\n\t\tcalendar_month: d(\"%F %Y\"),\n\t\tcalendar_scale_date: d(\"%D\"),\n\t\tcalendar_date: d(\"%d\"),\n\t\tcalendar_time: d(\"%d-%m-%Y\")\n\n\t});\n\tthis.callEvent(\"onTemplatesReady\",[]);\n};\n\n\n}","export default function extend(scheduler) {\n\nscheduler._events = {};\nscheduler.clearAll = function() {\n\tthis._events = {};\n\tthis._loaded = {};\n\n\tthis._edit_id = null;\n\tthis._select_id = null;\n\tthis._drag_id = null;\n\tthis._drag_mode = null;\n\tthis._drag_pos = null;\n\tthis._new_event = null;\n\n\tthis.clear_view();\n\tthis.callEvent(\"onClearAll\", []);\n};\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\n\tif (!arguments.length)\n\t\treturn this.addEventNow();\n\tvar ev = start_date;\n\tif (arguments.length != 1) {\n\t\tev = extra_data || {};\n\t\tev.start_date = start_date;\n\t\tev.end_date = end_date;\n\t\tev.text = text;\n\t\tev.id = id;\n\t}\n\tev.id = ev.id || scheduler.uid();\n\tev.text = ev.text || \"\";\n\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\n\n\tev.start_date.setMilliseconds(0);\n\tev.end_date.setMilliseconds(0);\n\n\tev._timed = this.isOneDayEvent(ev);\n\n\tvar is_new = !this._events[ev.id];\n\tthis._events[ev.id] = ev;\n\tthis.event_updated(ev);\n\tif (!this._loading)\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\n\treturn ev.id;\n};\nscheduler.deleteEvent = function(id, silent) {\n\tvar ev = this._events[id];\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\n\t\treturn;\n\tif (ev) {\n\t\tif(scheduler.getState().select_id == id){\n\t\t\tscheduler.unselect();\n\t\t}\n\t\tdelete this._events[id];\n\t\tthis.event_updated(ev);\n\n\t\tif(this._drag_id == ev.id){\n\t\t\tthis._drag_id = null;\n\t\t\tthis._drag_mode=null;\n\t\t\tthis._drag_pos=null;\n\t\t}\n\t}\n\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\n};\nscheduler.getEvent = function(id) {\n\treturn this._events[id];\n};\nscheduler.setEvent = function(id, hash) {\n\tif(!hash.id)\n\t\thash.id = id;\n\n\tthis._events[id] = hash;\n};\nscheduler.for_rendered = function(id, method) {\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\n\t\t\tmethod(this._rendered[i], i);\n};\nscheduler.changeEventId = function(id, new_id) {\n\tif (id == new_id) return;\n\tvar ev = this._events[id];\n\tif (ev) {\n\t\tev.id = new_id;\n\t\tthis._events[new_id] = ev;\n\t\tdelete this._events[id];\n\t}\n\tthis.for_rendered(id, function(r) {\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\n\t});\n\tif (this._select_id == id) this._select_id = new_id;\n\tif (this._edit_id == id) this._edit_id = new_id;\n\t//if (this._drag_id==id) this._drag_id=new_id;\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\n};\n\n(function() {\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\n\tvar create_getter = function(name) {\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\n\t};\n\tvar create_setter = function(name) {\n\t\treturn function(id, value) {\n\t\t\tvar ev = scheduler.getEvent(id);\n\t\t\tev[name] = value;\n\t\t\tev._changed = true;\n\t\t\tev._timed = this.isOneDayEvent(ev);\n\t\t\tscheduler.event_updated(ev, true);\n\t\t};\n\t};\n\tfor (var i = 0; i < attrs.length; i += 2) {\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\n\t}\n})();\n\nscheduler.event_updated = function(ev, force) {\n\tif (this.is_visible_events(ev))\n\t\tthis.render_view_data();\n\telse\n\t\tthis.clear_event(ev.id);\n};\nscheduler.is_visible_events = function(ev) {\n\tif(!this._min_date || !this._max_date){\n\t\treturn false;\n\t}\n\n\t//if in displayed dates\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\n\n\tif(in_visible_range){\n\n\t\t//end dates are not between last/first hours\n\t\tvar evFirstHour = ev.start_date.getHours(),\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\n\t\t\tlastHour = this.config.last_hour,\n\t\t\tfirstHour = this.config.first_hour;\n\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\n\n\t\tif(end_dates_visible){\n\t\t\treturn true;\n\t\t}else{\n\n\t\t\t//event is bigger than area hidden between last/first hours\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\n\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\n\n\t\t}\n\t}else{\n\t\treturn false;\n\t}\n};\nscheduler.isOneDayEvent = function(ev) {\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\n\t// events >= 24h long are considered multiday\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\n\treturn (\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\n\t\tev.start_date.getDate() === checkEndDate.getDate()\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\n};\n\nscheduler.get_visible_events = function(only_timed) {\n\t//not the best strategy for sure\n\tvar stack = [];\n\n\tfor (var id in this._events)\n\t\tif (this.is_visible_events(this._events[id]))\n\t\t\tif (!only_timed || this._events[id]._timed)\n\t\t\t\tif (this.filter_event(id, this._events[id]))\n\t\t\t\t\tstack.push(this._events[id]);\n\n\treturn stack;\n};\nscheduler.filter_event = function(id, ev) {\n\tvar filter = this[\"filter_\" + this._mode];\n\treturn (filter) ? filter(id, ev) : true;\n};\nscheduler._is_main_area_event = function(ev){\n\treturn !!ev._timed;\n};\nscheduler.render_view_data = function(evs, hold) {\n\tvar full = false;\n\tif (!evs) {\n\t\tfull = true;\n\t\tif (this._not_render) {\n\t\t\tthis._render_wait = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._render_wait = false;\n\n\t\tthis.clear_view();\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\n\t}\n\tfor(var i= 0, len = evs.length; i < len; i++){\n\t\tthis._recalculate_timed(evs[i]);\n\t}\n\n\tif (this.config.multi_day && !this._table_view) {\n\n\t\tvar tvs = [];\n\t\tvar tvd = [];\n\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\tif (this._is_main_area_event(evs[i]))\n\t\t\t\ttvs.push(evs[i]);\n\t\t\telse\n\t\t\t\ttvd.push(evs[i]);\n\t\t}\n\n\t\tif(!this._els['dhx_multi_day']){\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\n\t\t\tthrow new Error(message);\n\t\t}\n\n\t\t// multiday events\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\n\t\tthis._table_view = true;\n\t\tthis.render_data(tvd, hold);\n\t\tthis._table_view = false;\n\n\t\t// normal events\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\n\t\tthis._table_view = false;\n\t\tthis.render_data(tvs, hold);\n\n\t} else {\n\t\tvar buffer = document.createDocumentFragment();\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\n\t\tthis._rendered_location = buffer;\n\t\tthis.render_data(evs, hold);\n\t\trenderedLocation.appendChild(buffer);\n\t\tthis._rendered_location = renderedLocation;\n\n\t}\n\n\tif(full){\n\t\tthis.callEvent(\"onDataRender\", []);\n\t}\n};\n\n\nscheduler._view_month_day = function(e){\n\tvar date = scheduler.getActionData(e).date;\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\n\t\treturn;\n\tscheduler.setCurrentView(date, \"day\");\n};\n\nscheduler._render_month_link = function(ev){\n\tvar parent = this._rendered_location;\n\tvar toRender = this._lame_clone(ev);\n\n\t//render links in each cell of multiday events\n\tfor(var d = ev._sday; d < ev._eday; d++){\n\n\t\ttoRender._sday = d;\n\t\ttoRender._eday = d+1;\n\n\t\tvar date = scheduler.date;\n\t\tvar curr = scheduler._min_date;\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\n\n\t\tvar pos = this._get_event_bar_pos(toRender);\n\t\tvar widt = (pos.x2 - pos.x);\n\n\t\tvar el = document.createElement(\"div\");\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\n\t\tel.className = \"dhx_month_link\";\n\t\tel.style.top = pos.y + \"px\";\n\t\tel.style.left = pos.x + \"px\";\n\t\tel.style.width = widt + \"px\";\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\n\t\tthis._rendered.push(el);\n\n\t\tparent.appendChild(el);\n\t}\n};\n\nscheduler._recalculate_timed = function(id){\n\tif(!id) return;\n\tvar ev;\n\tif(typeof(id) != \"object\")\n\t\tev = this._events[id];\n\telse\n\t\tev = id;\n\tif(!ev) return;\n\tev._timed = scheduler.isOneDayEvent(ev);\n};\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\n\nscheduler.render_data = function(evs, hold) {\n\tevs = this._pre_render_events(evs, hold);\n\tvar containers = {};\n\tfor (var i = 0; i < evs.length; i++)\n\t\tif (this._table_view){\n\t\t\tif(scheduler._mode != 'month'){\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\n\t\t\t}else{\n\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\n\t\t\t\t\tthis.render_event_bar(evs[i]);\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\n\t\t\t\t\t//render 'view more' links\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\n\t\t\t\t}else{\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\n\t\t\t\t}\n\t\t\t}\n\n\n\n\t\t}else{\n\t\t\tvar ev = evs[i];\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\n\t\t\tif (!parent) continue; //attempt to render non-visible event\n\n\t\t\tif(!containers[ev._sday]){\n\t\t\t\tcontainers[ev._sday] = {\n\t\t\t\t\treal: parent,\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\n\t\t\t\t\twidth: parent.clientWidth\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar container = containers[ev._sday];\n\t\t\tthis.render_event(ev, container.buffer, container.width);\n\t\t}\n\n\t\tfor(var i in containers){\n\t\t\tvar container = containers[i];\n\t\t\tif(container.real && container.buffer){\n\t\t\t\tcontainer.real.appendChild(container.buffer);\n\t\t\t}\n\t\t}\n};\n\nscheduler._get_first_visible_cell = function(cells) {\n\tfor (var i = 0; i < cells.length; i++) {\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\n\t\t\treturn cells[i];\n\t\t}\n\t}\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\n\treturn cells[0];\n};\n\nscheduler._pre_render_events = function(evs, hold) {\n\tvar hb = this.xy.bar_height;\n\tvar h_old = this._colsS.heights;\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\n\tvar data = this._els[\"dhx_cal_data\"][0];\n\n\tif (!this._table_view) {\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\n\t}\n\telse {\n\t\tevs = this._pre_render_events_table(evs, hold);\n\t}\n\tif (this._table_view) {\n\t\tif (hold)\n\t\t\tthis._colsS.heights = h_old;\n\t\telse {\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\n\t\t\tif (monthRows.length) {\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\n\t\t\t\t\th[i]++;\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\n\t\t\t\t\t\t//we have overflow, update heights\n\n\t\t\t\t\t\tvar cHeight = cellHeight;\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){\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\n\t\t\t\t\t}\n\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\n\t\t\t\t}\n\t\t\t\th.unshift(0);\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\n\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\n\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\n\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\n\n\t\t\t\t\tscale_settings.scroll_fix = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\n\t\t\t\t\th[0] = -1;\n\t\t\t\tif (evs.length || h[0] == -1) {\n\t\t\t\t\t//shift days to have space for multiday events\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\n\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\n\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\n\t\t\t\t\t}\n\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\n\n\t\t\t\t\t// icon\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\n\t\t\t\t\tif(this.config.multi_day_height_limit){\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\n\t\t\t\t\t}\n\t\t\t\t\th[0] = 0;\n\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\n\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\n\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn evs;\n};\nscheduler._get_event_sday = function(ev) {\n\t// get day in current view\n\t// use rounding for 23 or 25 hour days on DST\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\n};\nscheduler._get_event_mapped_end_date = function(ev) {\n\tvar end_date = ev.end_date;\n\tif (this.config.separate_short_events) {\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\n\t\tif (ev_duration < this._min_mapped_duration) {\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\n\t\t}\n\t}\n\treturn end_date;\n};\nscheduler._pre_render_events_line = function(evs, hold){\n\tevs.sort(function(a, b) {\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\n\t\t\treturn a.id > b.id ? 1 : -1;\n\t\treturn a.start_date > b.start_date ? 1 : -1;\n\t});\n\tvar days = []; //events by weeks\n\tvar evs_originals = [];\n\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\n\n\tfor (var i = 0; i < evs.length; i++) {\n\t\tvar ev = evs[i];\n\n\t\t//check date overflow\n\t\tvar sd = ev.start_date;\n\t\tvar ed = ev.end_date;\n\t\t//check scale overflow\n\t\tvar sh = sd.getHours();\n\t\tvar eh = ed.getHours();\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\n\t\tif (this._ignores[ev._sday]){\n\t\t\t//ignore event\n\t\t\tevs.splice(i,1);\n\t\t\ti--;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\n\n\t\tif (!hold) {\n\t\t\tev._inner = false;\n\n\t\t\tvar stack = days[ev._sday];\n\n\t\t\twhile (stack.length) {\n\t\t\t\tvar t_ev = stack[stack.length - 1];\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar slot_index = stack.length;\n\t\t\tvar sorderSet = false;\n\t\t\tfor (var j = 0; j < stack.length; j++) {\n\t\t\t\tvar t_ev = stack[j];\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\n\t\t\t\t\tsorderSet = true;\n\t\t\t\t\tev._sorder = t_ev._sorder;\n\t\t\t\t\tslot_index = j;\n\t\t\t\t\tev._inner = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (stack.length)\n\t\t\t\tstack[stack.length - 1]._inner = true;\n\n\t\t\tif (!sorderSet) {\n\t\t\t\tif (stack.length) {\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\n\t\t\t\t\t\t\tev._sorder = 0;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\n\t\t\t\t\t\t\t\t\tev._sorder = j;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tev._inner = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\n\t\t\t\t\t\tev._inner = false;\n\t\t\t\t\t}\n\n\t\t\t\t} else\n\t\t\t\t\tev._sorder = 0;\n\t\t\t}\n\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\n\n\t\t\tif (stack.length > (stack.max_count || 0)) {\n\t\t\t\tstack.max_count = stack.length;\n\t\t\t\tev._count = stack.length;\n\t\t\t} else {\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\n\t\t\t}\n\t\t}\n\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\n\t\t\tevs_originals.push(ev);\n\t\t\tevs[i] = ev = this._copy_event(ev);\n\n\t\t\tif (sh < this.config.first_hour) {\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\n\t\t\t\tev.start_date.setMinutes(0);\n\t\t\t}\n\t\t\tif (eh >= this.config.last_hour) {\n\t\t\t\tev.end_date.setMinutes(0);\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\n\t\t\t}\n\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\n\t\t\t\tevs.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t}\n\tif (!hold) {\n\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\n\t\t}\n\t\tfor (var i = 0; i < evs_originals.length; i++)\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\n\t}\n\n\treturn evs;\n};\nscheduler._time_order = function(evs) {\n\tevs.sort(function(a, b) {\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\n\t\t\tif (a._timed && !b._timed) return 1;\n\t\t\tif (!a._timed && b._timed) return -1;\n\t\t\treturn a.id > b.id ? 1 : -1;\n\t\t}\n\t\treturn a.start_date > b.start_date ? 1 : -1;\n\t});\n};\n\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\n\tvar cols = this._cols.length;\n\tvar isAnyCellVisible = false;\n\tvar checkDate = from;\n\tvar noCells = true;\n\tvar lastDayEnd = new Date(to);\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\n\t}\n\twhile(checkDate < lastDayEnd){\n\t\tnoCells = false;\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\n\t\tvar weekCellIndex = cellIndex % cols;\n\t\tif(!this._ignores[weekCellIndex]){\n\t\t\tisAnyCellVisible = true;\n\t\t\tbreak;\n\t\t}\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\n\t}\n\treturn noCells || isAnyCellVisible;\n};\n\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\n\tthis._time_order(evs);\n\tvar out = [];\n\tvar weeks = [\n\t\t[],\n\t\t[],\n\t\t[],\n\t\t[],\n\t\t[],\n\t\t[],\n\t\t[]\n\t]; //events by weeks\n\tvar max = this._colsS.heights;\n\tvar start_date;\n\tvar cols = this._cols.length;\n\tvar chunks_info = {};\n\n\tfor (var i = 0; i < evs.length; i++) {\n\t\tvar ev = evs[i];\n\t\tvar id = ev.id;\n\t\tif (!chunks_info[id]) {\n\t\t\tchunks_info[id] = {\n\t\t\t\tfirst_chunk: true,\n\t\t\t\tlast_chunk: true\n\t\t\t};\n\t\t}\n\t\tvar chunk_info = chunks_info[id];\n\t\tvar sd = (start_date || ev.start_date);\n\t\tvar ed = ev.end_date;\n\t\t//trim events which are crossing through current view\n\t\tif (sd < this._min_date) {\n\t\t\tchunk_info.first_chunk = false;\n\t\t\tsd = this._min_date;\n\t\t}\n\t\tif (ed > this._max_date) {\n\t\t\tchunk_info.last_chunk = false;\n\t\t\ted = this._max_date;\n\t\t}\n\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\n\t\tev._sday = locate_s % cols;\n\t\t//skip single day events for ignored dates\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\n\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\n\t\tev._length = locate_e - locate_s;\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\n\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\n\n\t\tif(!isAnyCellVisible){\n\t\t\tstart_date = null;\n\t\t\tcontinue;\n\t\t}\n\n\t\t//current slot\n\t\tvar stack = weeks[ev._sweek];\n\t\t//check order position\n\t\tvar stack_line;\n\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\n\t\t\t\tbreak;\n\n\t\tif (!ev._sorder || !hold) {\n\t\t\tev._sorder = stack_line;\n\t\t}\n\n\t\tif (ev._sday + ev._length <= cols) {\n\t\t\tstart_date = null;\n\t\t\tout.push(ev);\n\t\t\tstack[stack_line] = ev;\n\t\t\t//get max height of slot\n\t\t\tmax[ev._sweek] = stack.length - 1;\n\t\t\tev._first_chunk = chunk_info.first_chunk;\n\t\t\tev._last_chunk = chunk_info.last_chunk;\n\t\t} else { // split long event in chunks\n\t\t\tvar copy = this._copy_event(ev);\n\t\t\tcopy.id = ev.id;\n\t\t\tcopy._length = cols - ev._sday;\n\t\t\tcopy._eday = cols;\n\t\t\tcopy._sday = ev._sday;\n\t\t\tcopy._sweek = ev._sweek;\n\t\t\tcopy._sorder = ev._sorder;\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\n\t\t\tif (chunk_info.first_chunk) {\n\t\t\t\tchunk_info.first_chunk = false;\n\t\t\t}\n\n\t\t\tout.push(copy);\n\t\t\tstack[stack_line] = copy;\n\t\t\tstart_date = copy.end_date;\n\t\t\t//get max height of slot\n\t\t\tmax[ev._sweek] = stack.length - 1;\n\t\t\ti--;\n\t\t\tcontinue; //repeat same step\n\t\t}\n\t}\n\treturn out;\n};\nscheduler._copy_dummy = function() {\n\tvar a = new Date(this.start_date);\n\tvar b = new Date(this.end_date);\n\tthis.start_date = a;\n\tthis.end_date = b;\n};\nscheduler._copy_event = function(ev) {\n\tthis._copy_dummy.prototype = ev;\n\treturn new this._copy_dummy();\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\n};\nscheduler._rendered = [];\nscheduler.clear_view = function() {\n\tfor (var i = 0; i < this._rendered.length; i++) {\n\t\tvar obj = this._rendered[i];\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\n\t}\n\tthis._rendered = [];\n};\nscheduler.updateEvent = function(id) {\n\tvar ev = this.getEvent(id);\n\tthis.clear_event(id);\n\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\n\t\tif (this.config.update_render){\n\t\t\tthis.render_view_data();\n\t\t}else{\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\n\t\t\t\tthis.render_view_data();\n\t\t\t}else{\n\t\t\t\tthis.render_view_data([ev], true);\n\t\t\t}\n\t\t}\n\t}\n};\nscheduler.clear_event = function(id) {\n\tthis.for_rendered(id, function(node, i) {\n\t\tif (node.parentNode)\n\t\t\tnode.parentNode.removeChild(node);\n\t\tscheduler._rendered.splice(i, 1);\n\t});\n};\nscheduler._y_from_date = function(date){\n\tvar sm = date.getHours() * 60 + date.getMinutes();\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\n};\nscheduler._calc_event_y = function(ev, min_height){\n\tmin_height = min_height || 0;\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\n\tvar top = this._y_from_date(ev.start_date);\n\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\n\treturn {\n\t\ttop: top,\n\t\theight: height\n\t};\n};\nscheduler.render_event = function(ev, buffer, parentWidth) {\n\tvar menu = scheduler.xy.menu_width;\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\n\n\tvar parent = scheduler.locate_holder(ev._sday);\n\tif (!parent) return; //attempt to render non-visible event\n\n\tbuffer = buffer || parent;\n\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\n\tvar top = pos_y.top,\n\t\theight = pos_y.height;\n\n\tvar ev_count = ev._count || 1;\n\tvar ev_sorder = ev._sorder || 0;\n\n\tparentWidth = parentWidth || parent.clientWidth;\n\tif(this.config.day_column_padding){\n\t\tparentWidth -= this.config.day_column_padding;\n\t}\n\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\n\tvar left = ev_sorder * width + 1;\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\n\tif (this.config.cascade_event_display) {\n\t\tvar limit = this.config.cascade_event_count;\n\t\tvar margin = this.config.cascade_event_margin;\n\t\tleft = ev_sorder % limit * margin;\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\n\t}\n\n\tif(height < 30){\n\t\tev._mode = \"smallest\";\n\t}else if(height < 42){\n\t\tev._mode = \"small\";\n\t}else{\n\t\tev._mode = null;\n\t}\n\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));\n\t\n\tif(ev._mode === \"smallest\"){\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\n\t}else if (ev._mode === \"small\"){\n\t\td.classList.add(\"dhx_cal_event--small\");\n\t}\n\n\tthis._waiAria.eventAttr(ev, d);\n\tthis._rendered.push(d);\n\tbuffer.appendChild(d);\n\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\n\n\tleft = left + parentPosition + menu_offset;\n\n\tif (this._edit_id == ev.id) {\n\n\t\td.style.zIndex = 1; //fix overlapping issue\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\n\t\td = document.createElement(\"div\");\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\n\t\td.setAttribute(this.config.event_attribute, ev.id);\n\n\t\tthis._waiAria.eventAttr(ev, d);\n\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\n\t\tif (this.config.rtl) left++;\n\t\tthis.set_xy(d, width, height, left, top);\n\n\n\t\tif(ev.color){\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\n\t\t}\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\n\n\t\tif(tplClass){\n\t\t\td.className += \" \" + tplClass;\n\t\t}\n\t\tvar d2 = document.createElement(\"div\");\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\n\n\t\td.appendChild(d2);\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\n\t\tthis._rendered.push(d);\n\n\t\td2.innerHTML = \"\";\n\t\tthis._editor = d2.querySelector(\"textarea\");\n\t\t\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\n\t\t\tif (e.shiftKey) return true;\n\t\t\tvar code = e.keyCode;\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\n\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\n\t\t\t\tif(e.preventDefault) e.preventDefault();\n\t\t\t}\n\t\t});\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\n\t\t\te.cancelBubble = true;\n\t\t\treturn true;\n\t\t});\n\t\tscheduler._focus(this._editor, true);\n\t\t//IE and opera can add x-scroll during focusing\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\n\t}\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\n\n\t\tif (this.config.cascade_event_display && this._drag_mode)\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\n\t\tvar icons_str = \"\";\n\n\t\tvar ariaAttr;\n\n\t\tfor (var i = 0; i < icons.length; i++) {\n\t\t\tconst currentIcon = icons[i];\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\n\t\t\ticons_str += `
`;\n\t\t}\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\n\n\t\tif(ev.color){\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\n\t\t}\n\t\tif(ev.textColor){\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\n\t\t}\n\n\t\t//obj.style.left = left - menu + 1;\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\n\t\tthis._rendered.push(obj);\n\t}\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\n\t\tthis.highlightEventPosition(ev);\n\t}\n};\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\n\tvar d = document.createElement(\"div\");\n\tvar id = ev.id;\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\n\n\tvar state = scheduler.getState();\n\tif(state.drag_id == ev.id){\n\t\tcs += \" dhx_cal_event_drag\";\n\t}\n\n\tif(state.select_id == ev.id){\n\t\tcs += \" dhx_cal_event_selected\";\n\t}\n\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\n\tif (cse) cs = cs + \" \" + cse;\n\n\tif(this.config.cascade_event_display) {\n\t\tcs += \" dhx_cal_event_cascade\";\n\t}\n\n\tvar boxWidth = w - 1;\n\tvar html = `
\n\t\t\t\t
`;\n\n\td.innerHTML = html;\n\n\tvar container = d.cloneNode(true).firstChild;\n\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\n\t\tif(ev.color){\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\n\t\t}\n\t\tif(ev.textColor){\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\n\t\t}\n\n\t\treturn container;\n\t} else {\n\t\tcontainer = d.firstChild;\n\t\tif(ev.color){\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\n\t\t}\n\t\tif(ev.textColor){\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\n\t\t}\n\n\t\tvar inner_html = '
 
';\n\t\tinner_html += '
' + contentA + '
';\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\n\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\n\t\tif (bottom || ev._drag_resize === false)\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\n\n\t\tinner_html += '
';\n\n\t\tcontainer.innerHTML = inner_html;\n\t}\n\n\treturn container;\n};\nscheduler.renderEvent = function(){\n\treturn false;\n};\nscheduler.locate_holder = function(day) {\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\n};\nscheduler.locate_holder_day = function(date, past) {\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\n\t//when locating end data of event , we need to use next day if time part was defined\n\tif (past && this.date.time_part(date)) day++;\n\treturn day;\n};\n\n\n\nscheduler._get_dnd_order = function(order, ev_height, max_height){\n\tif(!this._drag_event)\n\t\treturn order;\n\tif(!this._drag_event._orig_sorder)\n\t\tthis._drag_event._orig_sorder = order;\n\telse\n\t\torder = this._drag_event._orig_sorder;\n\n\tvar evTop = ev_height * order;\n\twhile((evTop + ev_height) > max_height){\n\t\torder--;\n\t\tevTop -= ev_height;\n\t}\n\torder = Math.max(order, 0);\n\treturn order;\n};\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\nscheduler._get_event_bar_pos = function(ev){\n\tvar rtl = this.config.rtl;\n\tvar columns = this._colsS;\n\tvar x = columns[ev._sday];\n\tvar x2 = columns[ev._eday];\n\tif (rtl) {\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\n\t}\n\n\tif (x2 == x) x2 = columns[ev._eday + 1];\n\tvar hb = this.xy.bar_height;\n\n\tvar order = ev._sorder;\n\tif(ev.id == this._drag_id){\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\n\t}\n\tvar y_event_offset = order * hb;\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\n\treturn {x:x, x2:x2, y:y};\n};\n\nscheduler.render_event_bar = function (ev) {\n\tvar parent = this._rendered_location;\n\tvar pos = this._get_event_bar_pos(ev);\n\tvar y = pos.y;\n\tvar x = pos.x;\n\tvar x2 = pos.x2;\n\t// resize for month mutliday events\n\tvar resize_handle = \"\";\n\n\t//events in ignored dates\n\n\tif (!x2) return;\n\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\n\n\tvar d = document.createElement(\"div\");\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\n\n\tvar resize_left = resizable && (ev._timed || left_chunk);\n\tvar resize_right = resizable && (ev._timed || right_chunk);\n\n\tvar timed = true;\n\tvar cs = \"dhx_cal_event_clear\";\n\tif (!ev._timed || resizable) {\n\t\ttimed = false;\n\t\tcs = \"dhx_cal_event_line\";\n\t}\n\tif(left_chunk){\n\t\tcs += \" dhx_cal_event_line_start\";\n\t}\n\tif(right_chunk){\n\t\tcs += \" dhx_cal_event_line_end\";\n\t}\n\tif(resize_left){\n\t\tresize_handle += \"
\";\n\t}\n\tif(resize_right){\n\t\tresize_handle += \"
\";\n\t}\n\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\n\tif (cse){\n\t\tcs += \" \" + cse;\n\t}\n\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\n\n\tvar style_text = [\n\t\t\"position:absolute\",\n\t\t\"top:\" + y + \"px\",\n\t\t\"left:\" + x + \"px\",\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\n\t\tcolor,\n\t\tbg_color,\n\t\t(ev._text_style || \"\")\n\t].join(\";\");\n\n\tvar html = \"
\";\n\tif (resizable) {\n\t\thtml += resize_handle;\n\t}\n\tif(scheduler.getState().mode == \"month\"){\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\n\t}\n\n\tif (ev._timed){\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\n\t}\n\n\thtml += \"
\";\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\n\thtml += \"
\";\n\thtml += '
';\n\n\td.innerHTML = html;\n\n\tthis._rendered.push(d.firstChild);\n\tparent.appendChild(d.firstChild);\n};\n\nscheduler._locate_event = function(node) {\n\tvar id = null;\n\twhile (node && !id && node.getAttribute) {\n\t\tid = node.getAttribute(this.config.event_attribute);\n\t\tnode = node.parentNode;\n\t}\n\treturn id;\n};\n\nscheduler.edit = function(id) {\n\tif (this._edit_id == id) return;\n\tthis.editStop(false, id);\n\tthis._edit_id = id;\n\tthis.updateEvent(id);\n};\nscheduler.editStop = function(mode, id) {\n\tif (id && this._edit_id == id) return;\n\tvar ev = this.getEvent(this._edit_id);\n\tif (ev) {\n\t\tif (mode) ev.text = this._editor.value;\n\t\tthis._edit_id = null;\n\t\tthis._editor = null;\n\t\tthis.updateEvent(ev.id);\n\t\tthis._edit_stop_event(ev, mode);\n\t}\n};\nscheduler._edit_stop_event = function(ev, mode) {\n\tif (this._new_event) {\n\t\tif (!mode) {\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\n\t\t\t\tthis.deleteEvent(ev.id, true);\n\t\t} else {\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\n\t\t}\n\t\tthis._new_event = null;\n\t} else {\n\t\tif (mode){\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\n\t\t}\n\t}\n};\n\nscheduler.getEvents = function(from, to) {\n\tvar result = [];\n\tfor (var a in this._events) {\n\t\tvar ev = this._events[a];\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\n\t\t\tresult.push(ev);\n\t}\n\treturn result;\n};\nscheduler.getRenderedEvent = function(id) {\n\tif (!id)\n\t\treturn;\n\tvar rendered_events = scheduler._rendered;\n\tfor (var i=0; i -1){\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar top = timeline.getSectionTop(section);\n\t\t\tvar left = timeline.posFromDate(event.start_date);\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\n\n\t\t\tif (timeline._smartRenderingEnabled()) {\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\n\t\t\t\t\trestoreOriginalColors();\n\t\t\t\t\ttimeline.detachEvent(handlerId);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttimeline.scrollTo({\n\t\t\t\tleft: left,\n\t\t\t\ttop: top\n\t\t\t});\n\t\t\tif (!timeline._smartRenderingEnabled()) {\n\t\t\t\trestoreOriginalColors();\n\t\t\t}\n\t\t}\n\t}else{\n\t\trestoreOriginalColors();\n\t}\n\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\n};\n\n\n}","export default function extend(scheduler) {\n\n\nscheduler._append_drag_marker = function(m){\n\tif(m.parentNode) return;\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\n\n\tvar scale = zone.lastChild;\n\tvar className = scheduler._getClassName(scale);\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\n\t\tscale = scale.previousSibling;\n\t}\n\n\tclassName = scheduler._getClassName(scale);\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\n\t\tscale.appendChild(m);\n\t}\n};\n\nscheduler._update_marker_position = function(m, event){\n\tvar size = scheduler._calc_event_y(event, 0);\n\tm.style.top = size.top + \"px\";\n\tm.style.height = size.height + \"px\";\n};\n\nscheduler.highlightEventPosition = function(event){\n\tvar m = document.createElement(\"div\");\n\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\n\tm.setAttribute(this.config.event_attribute, event.id);\n\tthis._rendered.push(m);\n\tthis._update_marker_position(m, event);\n\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\n\tm.className = \"dhx_drag_marker\";\n\tif(css)\n\t\tm.className += \" \" + css;\n\tif(html)\n\t\tm.innerHTML = html;\n\tthis._append_drag_marker(m);\n};\n\n}","export default function extend(scheduler) {\n\nscheduler._lightbox_controls = {};\nscheduler.formSection = function(name){\n\tvar config = this.config.lightbox.sections;\n\tvar i = 0;\n\tfor (i; i < config.length; i++) {\n\t\tif (config[i].name == name) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (i === config.length) {\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\n\t\treturn null;\n\t}\n\n\tvar section = config[i];\n\tif (!scheduler._lightbox) {\n\t\tscheduler.getLightbox();\n\t}\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\n\tvar node = header.nextSibling;\n\n\tvar result = {\n\t\tsection: section,\n\t\theader: header,\n\t\tnode: node,\n\t\tgetValue:function(ev){\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\n\t\t},\n\t\tsetValue:function(value, ev){\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\n\t\t}\n\t};\n\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\n\treturn handler?handler(result):result;\n};\nscheduler._lightbox_controls.get_template_control = function(result) {\n\tresult.control = result.node;\n\treturn result;\n};\nscheduler._lightbox_controls.get_select_control = function(result) {\n\tresult.control = result.node.getElementsByTagName('select')[0];\n\treturn result;\n};\nscheduler._lightbox_controls.get_textarea_control = function(result) {\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\n\treturn result;\n};\nscheduler._lightbox_controls.get_time_control = function(result) {\n\tresult.control = result.node.getElementsByTagName('select'); // array\n\treturn result;\n};\n\nscheduler._lightbox_controls.defaults = {\n\ttemplate: {\n\t\theight:30\n\t},\n\ttextarea: {\n\t\theight: 200\n\t},\n\tselect: {\n\t\theight: 23\n\t},\n\ttime: {\n\t\theight: 20\n\t}\n};\n\n\nscheduler.form_blocks={\n\ttemplate:{\n\t\trender: function(sns){\n\t\t\treturn \"
\";\n\t\t},\n\t\tset_value:function(node,value,ev,config){\n\t\t\tnode.innerHTML = value||\"\";\n\t\t},\n\t\tget_value:function(node,ev,config){\n\t\t\treturn node.innerHTML||\"\";\n\t\t},\n\t\tfocus: function(node){\n\t\t}\n\t},\n\ttextarea:{\n\t\trender:function(sns){\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\n\t\t\treturn `
`;\n\t\t},\n\t\tset_value:function(node,value,ev){\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\n\t\t},\n\t\tget_value:function(node,ev){\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\n\t\t},\n\t\tfocus:function(node){\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\n\t\t\tscheduler._focus(a, true);\n\t\t},\n\t\t_get_input: function(node){\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\n\t\t}\n\t},\n\tselect:{\n\t\trender:function(sns){\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\n\t\t\tvar html=\"
\";\n\t\t\treturn html;\n\t\t},\n\t\tset_value:function(node,value,ev,sns){\n\t\t\tvar select = node.firstChild;\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\n\t\t\t\tselect._dhx_onchange = true;\n\t\t\t}\n\t\t\tif (typeof value == \"undefined\")\n\t\t\t\tvalue = (select.options[0]||{}).value;\n\t\t\tselect.value=value||\"\";\n\t\t},\n\t\tget_value:function(node,ev){\n\t\t\treturn node.firstChild.value;\n\t\t},\n\t\tfocus:function(node){\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\n\t\t}\n\t},\n\ttime:{\n\t\trender:function(sns) {\n\t\t\tif (!sns.time_format) {\n\t\t\t\t// default order\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\n\t\t\t}\n\t\t\t// map: default order => real one\n\t\t\tsns._time_format_order = {};\n\t\t\tvar time_format = sns.time_format;\n\n\t\t\tvar cfg = scheduler.config;\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\n\t\t\tvar last = 24*60, first = 0;\n\t\t\tif(scheduler.config.limit_time_select){\n\t\t\t\tlast = 60*cfg.last_hour+1;\n\t\t\t\tfirst = 60*cfg.first_hour;\n\t\t\t\tdt.setHours(cfg.first_hour);\n\t\t\t}\n\t\t\tvar html = \"\";\n\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\n\t\t\t\tvar time_option = time_format[p];\n\n\t\t\t\t// adding spaces between selects\n\t\t\t\tif (p > 0) {\n\t\t\t\t\thtml += \" \";\n\t\t\t\t}\n\t\t\t\tvar selectBoxClass = \"\";\n\t\t\t\tvar options = \"\";\n\t\t\t\tswitch (time_option) {\n\t\t\t\t\tcase \"%Y\":\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\n\t\t\t\t\t\tsns._time_format_order[3] = p;\n\t\t\t\t\t\t//year\n\t\t\t\t\t\tvar range;\n\t\t\t\t\t\tvar start_year;\n\t\t\t\t\t\tvar end_year;\n\t\t\t\t\t\tif(sns.year_range){\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\n\t\t\t\t\t\t\t\trange = sns.year_range;\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\n\t\t\t\t\t\t\t\t// if\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trange = range || 10;\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\n\t\t\t\t\t\tend_year = end_year || start_year + range;\n\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\n\t\t\t\t\t\t\toptions += \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%m\":\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\n\t\t\t\t\t\tsns._time_format_order[2] = p;\n\t\t\t\t\t\t//month\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\n\t\t\t\t\t\t\toptions+=\"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%d\":\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\n\t\t\t\t\t\tsns._time_format_order[1] = p;\n\t\t\t\t\t\t//days\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\n\t\t\t\t\t\t\toptions+=\"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%H:%i\":\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\n\t\t\t\t\t\tsns._time_format_order[0] = p;\n\t\t\t\t\t\t//hours\n\t\t\t\t\t\tvar i = first;\n\t\t\t\t\t\tvar tdate = dt.getDate();\n\t\t\t\t\t\tsns._time_values = [];\n\n\t\t\t\t\t\twhile(i\"+time+\"\";\n\t\t\t\t\t\t\tsns._time_values.push(i);\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif(options){\n\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n\t\t\t\t\thtml += \" \";\n\t\t\t\t}\n\t\t\t}\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\n\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\n\t\t},\n\t\tset_value:function(node,value,ev,config){\n\t\t\tvar cfg = scheduler.config;\n\t\t\tvar s=node.getElementsByTagName(\"select\");\n\t\t\tvar map = config._time_format_order;\n\t\t\tvar start_date, end_date;\n\n\t\t\tif(cfg.full_day) {\n\t\t\t\tif (!node._full_day){\n\t\t\t\t\tvar html = \"\";\n\t\t\t\t\tif (!scheduler.config.wide_form)\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\n\t\t\t\t\tnode._full_day=true;\n\t\t\t\t}\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\n\n\t\t\t\ts[map[0]].disabled=input.checked;\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\n\n\t\t\t\tif(!input.$_eventAttached){\n\t\t\t\t\tinput.$_eventAttached = true;\n\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\n\t\t\t\t\t\tif(input.checked) {\n\t\t\t\t\t\t\tvar obj = {};\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\n\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\n\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)))\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tstart_date = null;\n\t\t\t\t\t\t\tend_date = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\n\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\n\t\t\t\tvar _update_lightbox_select = function () {\n\t\t\t\t\t\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\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);\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\n\t\t\t\t};\n\t\t\t\tfor(var i=0; i<4; i++) {\n\t\t\t\t\tif(!s[i].$_eventAttached) {\n\t\t\t\t\t\ts[i].$_eventAttached = true;\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\n\t\t\t\tvar time_values = config._time_values;\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\n\t\t\t\tvar fixed_value = direct_value;\n\t\t\t\tvar value_found = false;\n\t\t\t\tfor (var k=0; k\";\n\t\tvar ariaAttr = \"\";\n\t\tfor (var i = 0; i < buttons.length; i++) {\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\n\t\t}\n\n\t\tbuttons = this.config.buttons_right;\n\t\tvar rtl = scheduler.config.rtl;\n\t\tfor (var i = 0; i < buttons.length; i++) {\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\n\n\t\t\thtml += \"
\";\n\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\n\t\t}\n\t\thtml += \"
\";\n\t\thtml+=\"
\";\n\t\td.innerHTML=html;\n\t\tif (scheduler.config.drag_lightbox){\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \n\t\t\t\te.preventDefault();\n\t\t\t\treturn false; \n\t\t\t});\n\t\t\td.firstChild.style.cursor = \"move\";\n\t\t\tscheduler._init_dnd_events();\n\n\t\t}\n\n\t\tthis._waiAria.lightboxAttr(d);\n\n\t\tthis.show_cover();\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\n\t\t\n\t\tthis._lightbox=d;\n\n\t\tvar sns=this.config.lightbox.sections;\n\t\thtml=\"\";\n\t\tfor (var i=0; i < sns.length; i++) {\n\t\t\tvar block=this.form_blocks[sns[i].type];\n\t\t\tif (!block) continue; //ignore incorrect blocks\n\t\t\tsns[i].id=\"area_\"+this.uid();\n\t\t\tvar button = \"\";\n\t\t\tif (sns[i].button){\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\n\t\t\t}\n\n\t\t\tif (this.config.wide_form){\n\t\t\t\thtml+=\"
\";\n\t\t\t}\n\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\n\t\t\tif(typeof label_name !== \"string\"){\n\t\t\t\tlabel_name = sns[i].name;\n\t\t\t}\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\n\t\t\thtml+=\"
\";\n\t\t}\n\n\t\tvar ds=d.getElementsByTagName(\"div\");\n\t\tfor (var i=0; i
 \n
\n
\n\n
`;\n\n\n}","export default function extend(scheduler) {\n\nscheduler.getRootView = function() {\n\treturn {\n\t\tview: {\n\t\t\trender: function(){\n\t\t\t\treturn {\n\t\t\t\t\ttag: \"div\",\n\t\t\t\t\ttype: 1,\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\n\t\t\t\t\t},\n\t\t\t\t\thooks: {\n\t\t\t\t\t\t\"didInsert\": function(){\n\t\t\t\t\t\t\tscheduler.setCurrentView();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tbody: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tel: this.el,\n\t\t\t\t\t\t\ttype: 1\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t};\n\t\t\t},\n\t\t\tinit: function(){\n\t\t\t\tvar container = document.createElement(\"DIV\");\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\n\t\t\t\tcontainer.style.width = \"100%\";\n\t\t\t\tcontainer.style.height = \"100%\";\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\n\t\t\t\tcontainer.cmp = \"grid\";\n\t\t\t\tcontainer.innerHTML = '
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
';\n\t\t\t\tscheduler.init(container);\n\n\t\t\t\tthis.el = container;\n\t\t\t}\n\t\t},\n\t\ttype: 4\n\t};\n};\n\n}","import global from \"../global\";\n\nexport default function extend(scheduler) {\n\n(function(){\n\n\tvar setCurrentView = scheduler.setCurrentView,\n\t\tupdateView = scheduler.updateView;\n\tvar update_view_timer = null,\n\t\tcurr_view_timer = null;\n\n\tvar lazy_setCurrentView = function(date, mode){\n\t\tvar self = this;\n\t\tglobal.clearTimeout(curr_view_timer);\n\t\tglobal.clearTimeout(update_view_timer);\n\n\t\tvar oldDate = self._date,\n\t\t\toldMode = self._mode;\n\t\tupdateFlags(this, date, mode);\n\n\t\tcurr_view_timer = setTimeout(function(){\n\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdateView.call(self, date, mode);\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\n\n\t\t\tglobal.clearTimeout(update_view_timer);\n\t\t\tcurr_view_timer = 0;\n\t\t}, scheduler.config.delay_render);\n\t};\n\tvar lazy_updateView = function(date, mode){\n\t\tvar self = this,\n\t\t\tars = arguments;\n\n\t\tupdateFlags(this, date, mode);\n\n\t\tglobal.clearTimeout(update_view_timer);\n\t\tupdate_view_timer = setTimeout(function(){\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(curr_view_timer)\n\t\t\t\treturn;\n\n\t\t\tupdateView.apply(self, ars);\n\t\t}, scheduler.config.delay_render);\n\t};\n\tfunction updateFlags(scheduler, date, mode){\n\t\tif(date)\n\t\t\tscheduler._date = date;\n\t\tif(mode)\n\t\t\tscheduler._mode = mode;\n\n\t}\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\n\t\tif(scheduler.config.delay_render){\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\n\t\t\tscheduler.updateView = lazy_updateView;\n\t\t}else{\n\t\t\tscheduler.setCurrentView = setCurrentView;\n\t\t\tscheduler.updateView = updateView;\n\t\t}\n\t});\n\n})();\n\n}","import global from \"../global\";\n\nexport default function extend(scheduler) {\n/*\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\n\tdataProcessor.prototype.init=function(obj){\n\t\tthis.init_original(obj);\n\t\tobj._dataprocessor=this;\n\n\t\tthis.setTransactionMode(\"POST\",true);\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\n\t};\n}*/\n\nscheduler.attachEvent(\"onSchedulerReady\", function(){\n\tif(typeof dhtmlxError !== \"undefined\") {\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\n\t\t\tvar message = c[0].responseText;\n\n\t\t\tswitch (scheduler.config.ajax_error){\n\t\t\t\tcase \"alert\":\n\t\t\t\t\tglobal.alert(message);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"console\":\n\t\t\t\t\tglobal.console.log(message);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n});\n\n\n}","import ar from \"./locale_ar\";\nimport be from \"./locale_be\";\nimport ca from \"./locale_ca\";\nimport cn from \"./locale_cn\";\nimport cs from \"./locale_cs\";\nimport da from \"./locale_da\";\nimport de from \"./locale_de\";\nimport el from \"./locale_el\";\nimport en from \"./locale_en\";\nimport es from \"./locale_es\";\nimport fi from \"./locale_fi\";\nimport fr from \"./locale_fr\";\nimport he from \"./locale_he\";\nimport hu from \"./locale_hu\";\nimport id from \"./locale_id\";\nimport it from \"./locale_it\";\nimport jp from \"./locale_jp\";\n\nimport LocaleManager from \"./locale_manager\";\n\nimport nb from \"./locale_nb\";\nimport nl from \"./locale_nl\";\nimport no from \"./locale_no\";\nimport pl from \"./locale_pl\";\nimport pt from \"./locale_pt\";\nimport ro from \"./locale_ro\";\nimport ru from \"./locale_ru\";\nimport si from \"./locale_si\";\nimport sk from \"./locale_sk\";\nimport sv from \"./locale_sv\";\nimport tr from \"./locale_tr\";\nimport ua from \"./locale_ua\";\n\nexport default function(){\n\treturn new LocaleManager({\n\t\ten,\n\t\tar,\n\t\tbe,\n\t\tca,\n\t\tcn,\n\t\tcs,\n\t\tda,\n\t\tde,\n\t\tel,\n\t\tes,\n\t\tfi,\n\t\tfr,\n\t\the,\n\t\thu,\n\t\tid,\n\t\tit,\n\t\tjp,\n\t\tnb,\n\t\tnl,\n\t\tno,\n\t\tpl,\n\t\tpt,\n\t\tro,\n\t\tru,\n\t\tsi,\n\t\tsk,\n\t\tsv,\n\t\ttr,\n\t\tua\n\t});\n}","export default class ExtensionsManager{\n\tconstructor(config){\n\t\tthis._extensions = {};\n\t\tfor(const i in config){\n\t\t\tthis._extensions[i] = config[i];\n\t\t}\n\t}\n\n\taddExtension(name, ext) {\n\t\tthis._extensions[name] = ext;\n\t}\n\n\tgetExtension(name) {\n\t\treturn this._extensions[name];\n\t}\n}","\nexport default function(){\n/* global dhtmlx */\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\n\t\tvar tabs = tabs || '
';\n\t\tvar obj = document.createElement(\"DIV\");\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\n\t\tobj.innerHTML = '
' + tabs + '
';\n\t\tdocument.body.appendChild(obj.firstChild);\n\n\t\tthis.attachObject(obj.id, false, true);\n\n\t\tthis.vs[this.av].sched = scheduler;\n\t\tthis.vs[this.av].schedId = obj.id;\n\t\tscheduler.setSizes = scheduler.updateView;\n\t\tscheduler.destructor = function () { };\n\t\tscheduler.init(obj.id, day, mode);\n\n\t\treturn this.vs[this._viewRestore()].sched;\n\t};\n}\n\n}","export default function extend(scheduler) {\n\n\n/**\n * helpers for Multisection and Daily timeline events\n * Preserve _sorder and _count calculated for virtual events, so event position won't change when it refreshed individually\n * @private\n */\n\nif (!scheduler._inited_multisection_copies) {\n\tscheduler.attachEvent(\"onEventIdChange\", function (old_id, new_id) {\n\t\tvar copies = this._multisection_copies;\n\t\tif (!copies) return;\n\n\t\tif (copies[old_id] && !copies[new_id]) {\n\t\t\tvar eventCopies = copies[old_id];\n\t\t\tdelete copies[old_id];\n\t\t\tcopies[new_id] = eventCopies;\n\t\t}\n\t});\n\tscheduler._inited_multisection_copies = true;\n}\n\nscheduler._register_copies_array = function(evs){\n\tfor(var i=0; i < evs.length; i++)\n\t\tthis._register_copy(evs[i]);\n};\nscheduler._register_copy = function(copy){\n\tif(!this._multisection_copies){\n\t\treturn;\n\t}\n\n\tif(!this._multisection_copies[copy.id]){\n\t\tthis._multisection_copies[copy.id] = {};\n\t}\n\tvar section = copy[this._get_section_property()];\n\tvar evs = this._multisection_copies[copy.id];\n\tevs[section] = copy;\n};\nscheduler._get_copied_event = function(event_id, section){\n\tif(!this._multisection_copies[event_id])\n\t\treturn null;\n\n\tif(this._multisection_copies[event_id][section])\n\t\treturn this._multisection_copies[event_id][section];\n\n\tvar parts = this._multisection_copies[event_id];\n\t//multisection event has not been rendered in this section, need retrieve state of one of rendered events\n\tif(scheduler._drag_event && scheduler._drag_event._orig_section && parts[scheduler._drag_event._orig_section]){\n\t\treturn parts[scheduler._drag_event._orig_section];\n\t}else{\n\t\tvar min_sorder = Infinity,\n\t\t\tev = null;\n\t\tfor(var i in parts){\n\t\t\tif(parts[i]._sorder < min_sorder){\n\t\t\t\tev = parts[i];\n\t\t\t\tmin_sorder = parts[i]._sorder;\n\t\t\t}\n\t\t}\n\t\treturn ev;\n\t}\n};\nscheduler._clear_copied_events = function(){\n\tthis._multisection_copies = {};\n};\n\nscheduler._restore_render_flags = function(section_evs){\n\tvar map_to = this._get_section_property();\n\tfor(var i=0; i < section_evs.length; i++){\n\t\tvar ev = section_evs[i];\n\t\tvar prev_state = scheduler._get_copied_event(ev.id, ev[map_to]);\n\t\tif(prev_state){\n\t\t\tfor(var p in prev_state){\n\t\t\t\tif(p.indexOf(\"_\") === 0){\n\t\t\t\t\tev[p] = prev_state[p];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n}","const externalDrag = {\n\tfrom_scheduler :null,\n\tto_scheduler: null,\n\tdrag_data:null,\n\tdrag_placeholder : null,\n\tdelete_dnd_holder : function(){\n\t\tvar node = this.drag_placeholder;\n\t\tif(!node)\n\t\t\treturn;\n\t\tif(node.parentNode)\n\t\t\tnode.parentNode.removeChild(node);\n\t\tdocument.body.className = document.body.className.replace(\" dhx_no_select\", \"\");\n\t\tthis.drag_placeholder = null;\n\t},\n\tcopy_event_node : function(event, scheduler){\n\t\tvar clone = null;\n\t\tfor (var i = 0; i < scheduler._rendered.length; i++){\n\t\t\tvar node = scheduler._rendered[i];\n\t\t\tif (node.getAttribute(scheduler.config.event_attribute) == event.id || node.getAttribute(scheduler.config.event_attribute) == scheduler._drag_id) {\n\t\t\t\tclone = node.cloneNode(true);\n\t\t\t\tclone.style.position = clone.style.top = clone.style.left = \"\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn clone || document.createElement(\"div\");\n\t},\n\tcreate_dnd_holder : function(event, scheduler){\n\t\tif(this.drag_placeholder)\n\t\t\treturn this.drag_placeholder;\n\n\t\tvar holder = document.createElement(\"div\");\n\t\tvar html = scheduler.templates.event_outside(event.start_date, event.end_date, event);\n\t\tif(html){\n\t\t\tholder.innerHTML = html;\n\t\t}else{\n\t\t\tholder.appendChild(this.copy_event_node(event, scheduler));\n\t\t}\n\n\t\tholder.className = \"dhx_drag_placeholder\";\n\t\tholder.style.position = \"absolute\";\n\t\tthis.drag_placeholder = holder;\n\t\tdocument.body.appendChild(holder);\n\t\tdocument.body.className += \" dhx_no_select\";\n\t\treturn holder;\n\t},\n\tmove_dnd_holder : function(e){\n\t\tvar pos = {x: e.clientX, y: e.clientY};\n\t\tthis.create_dnd_holder(this.drag_data.ev, this.from_scheduler);\n\t\tif(!this.drag_placeholder){\n\t\t\treturn;\n\t\t}\n\t\tvar x = pos.x,\n\t\t\ty = pos.y;\n\n\t\tvar html = document.documentElement,\n\t\t\tbody = document.body,\n\t\t\tholder = this.drag_placeholder;\n\n\t\tholder.style.left = 10 + x + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0) + \"px\";\n\t\tholder.style.top = 10 + y + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0) + \"px\";\n\t},\n\tclear_scheduler_dnd : function(scheduler){\n\t\tscheduler._drag_id = scheduler._drag_pos = scheduler._drag_mode = scheduler._drag_event = scheduler._new_event = null;\n\t},\n\tstop_drag : function(scheduler){\n\t\tif(scheduler){\n\t\t\tthis.clear_scheduler_dnd(scheduler);\n\t\t}\n\t\tthis.delete_dnd_holder();\n\t\tthis.drag_data = null;\n\t},\n\tinject_into_scheduler : function(event, scheduler, dom_event){\n\t\tevent._count = 1; // reset order calculation for the new location (scheduler)\n\t\tevent._sorder = 0;\n\n\t\tif(event.event_pid && event.event_pid != \"0\") {\n\t\t\tevent.event_pid = null;\n\t\t\tevent.rec_type = event.rec_pattern = \"\";\n\t\t\tevent.event_length = 0;\n\t\t}\n\n\t\tscheduler._drag_event = event;\n\t\tscheduler._events[event.id] = event;\n\t\tscheduler._drag_id = event.id;\n\t\tscheduler._drag_mode = \"move\";\n\n\t\t//resolve event position\n\t\tif(dom_event)\n\t\t\tscheduler._on_mouse_move(dom_event);\n\t},\n\tstart_dnd : function(scheduler){\n\t\tif(!scheduler.config.drag_out)\n\t\t\treturn;\n\n\t\tthis.from_scheduler = scheduler;\n\t\tthis.to_scheduler = scheduler;\n\t\tvar drag = this.drag_data = {};\n\t\tdrag.ev = scheduler._drag_event;\n\t\tdrag.orig_id = scheduler._drag_event.id;\n\t},\n\tland_into_scheduler : function(scheduler, e){\n\t\tif(!scheduler.config.drag_in){\n\t\t\tthis.move_dnd_holder(e);\n\t\t\treturn false;\n\t\t}\n\n\t\tvar drag = this.drag_data;\n\n\t\tvar ev = scheduler._lame_clone(drag.ev); // _lame_clone - helper for deep copy\n\n\t\tif(scheduler != this.from_scheduler){\n\t\t\tev.id = scheduler.uid();\n\t\t\tvar duration = ev.end_date - ev.start_date;\n\t\t\tev.start_date = new Date(scheduler.getState().min_date);\n\t\t\tev.end_date = new Date(ev.start_date.valueOf() + duration);\n\t\t}else{\n\t\t\tev.id = this.drag_data.orig_id;\n\t\t\tev._dhx_changed = true;\n\t\t}\n\t\tthis.drag_data.target_id = ev.id;\n\t\tif(!scheduler.callEvent(\"onBeforeEventDragIn\", [ev.id, ev, e]))\n\t\t\treturn false;\n\t\tthis.to_scheduler = scheduler;\n\t\tthis.inject_into_scheduler(ev, scheduler, e);\n\t\tthis.delete_dnd_holder();\n\t\tscheduler.updateView();\n\t\tscheduler.callEvent(\"onEventDragIn\", [ev.id, ev, e]);\n\t\treturn true;\n\t},\n\n\tdrag_from_scheduler : function(scheduler, e){\n\t\tif(this.drag_data && scheduler._drag_id && scheduler.config.drag_out){\n\t\t\tif(!scheduler.callEvent(\"onBeforeEventDragOut\", [scheduler._drag_id, scheduler._drag_event, e])){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(this.to_scheduler == scheduler){\n\t\t\t\tthis.to_scheduler = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.create_dnd_holder(this.drag_data.ev, scheduler);\n\t\t\tvar id = scheduler._drag_id;\n\t\t\tthis.drag_data.target_id = null;\n\t\t\tdelete scheduler._events[id];\n\t\t\tthis.clear_scheduler_dnd(scheduler);\n\t\t\tscheduler.updateEvent(id);\n\t\t\tscheduler.callEvent(\"onEventDragOut\", [id, this.drag_data.ev, e]);\n\t\t\treturn true;\n\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t},\n\treset_event : function(event, scheduler){\n\t\tthis.inject_into_scheduler(event, scheduler);\n\t\tthis.stop_drag(scheduler);\n\t\tscheduler.updateView();\n\t},\n\tmove_permanently : function(original_event, moved_event, from, to){\n\t\tto.callEvent(\"onEventAdded\", [moved_event.id, moved_event]);\n\n\t\t// delete from original calendar\n\t\tthis.inject_into_scheduler(original_event, from);\n\t\tthis.stop_drag(from);\n\t\tif(original_event.event_pid && original_event.event_pid != \"0\") {\n\t\t\tfrom.callEvent(\"onConfirmedBeforeEventDelete\", [original_event.id]);\n\t\t\tfrom.updateEvent(moved_event.event_pid);\n\t\t} else {\n\t\t\tfrom.deleteEvent(original_event.id);\n\t\t}\n\t\tfrom.updateView();\n\t\tto.updateView();\n\t}\n};\n\nlet outerDragHandlerAttached = false;\nconst connectedSchedulers = [];\nfunction attachOuterDragHandler(scheduler) {\n\tscheduler.event(document.body, \"mousemove\", function(e) {\n\t\tvar dnd = externalDrag;\n\t\tvar target_scheduler = dnd.target_scheduler;\n\n\t\tif(target_scheduler){\n\t\t\tif(!dnd.from_scheduler){\n\t\t\t\t// start dragging event inside initial scheduler\n\t\t\t\tif(target_scheduler.getState().drag_mode == \"move\" && target_scheduler.config.drag_out){\n\t\t\t\t\tdnd.start_dnd(target_scheduler);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(target_scheduler._drag_id){\n\t\t\t\t\t// moving event inside target scheduler\n\t\t\t\t}else{\n\t\t\t\t\t// dragging event into target scheduler\n\t\t\t\t\tvar source = dnd.to_scheduler;//previos target scheduler\n\t\t\t\t\tif(!source || dnd.drag_from_scheduler(source, e)){\n\t\t\t\t\t\tdnd.land_into_scheduler(target_scheduler, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}else if(dnd.from_scheduler){\n\t\t\tif(!dnd.to_scheduler){\n\t\t\t\t//dragging outside schedulers\n\t\t\t\tdnd.move_dnd_holder(e);\n\t\t\t}else{\n\t\t\t\t// dragging out of target scheduler\n\t\t\t\tdnd.drag_from_scheduler(dnd.to_scheduler, e);\n\t\t\t}\n\t\t}\n\n\t\tdnd.target_scheduler = null;\n\t});\n\tscheduler.event(document.body, \"mouseup\", function(e) {\n\t\tvar dnd = externalDrag;\n\t\tvar from = dnd.from_scheduler,\n\t\t\tto = dnd.to_scheduler;\n\n\t\tif(from){\n\t\t\tif(to && from == to){\n\t\t\t\t// drop back to the same calendar\n\t\t\t\tfrom.updateEvent(dnd.drag_data.target_id);\n\t\t\t}else if(to && from !== to){\n\t\t\t\t// drop to another scheduler\n\t\t\t\tvar original = dnd.drag_data.ev;\n\t\t\t\tvar ev = to.getEvent(dnd.drag_data.target_id);\n\t\t\t\tif(from.callEvent(\"onEventDropOut\", [original.id, original, to, e])){\n\t\t\t\t\tdnd.move_permanently(original, ev, from, to);\n\t\t\t\t}else{\n\t\t\t\t\tdnd.reset_event(original, from);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// drop outside schedulers\n\t\t\t\tvar original = dnd.drag_data.ev;\n\t\t\t\tif(from.callEvent(\"onEventDropOut\", [original.id, original, null, e])){\n\t\t\t\t\tdnd.reset_event(original, from);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdnd.stop_drag();\n\t\tdnd.current_scheduler = dnd.from_scheduler = dnd.to_scheduler = null;\n\t});\n\n}\n\nfunction processScheduler(scheduler){\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\n\t\tattachOuterDragHandler(scheduler);\n\t\touterDragHandlerAttached = true;\n\t}, {once: true});\n\n\tscheduler.attachEvent(\"onDestroy\", function(){\n\t\touterDragHandlerAttached = false;\n\t\tconst nextScheduler = connectedSchedulers.pop();\n\t\tif(nextScheduler){\n\t\t\tprocessScheduler(nextScheduler);\n\t\t}\n\t}, {once: true});\n}\n\nexport default function(scheduler){\n\tif(window.Scheduler && window.Scheduler.plugin){// if Scheduler factory is defined, not to confuse with the browser Scheduler object\n\t\twindow.Scheduler._outer_drag = externalDrag;// old private api compatibility\n\t}\n\n\tconnectedSchedulers.push(scheduler);\n\tif(!outerDragHandlerAttached) {\n\t\tprocessScheduler(scheduler);\n\t}\n\n\tscheduler.config.drag_in = true;\n\tscheduler.config.drag_out = true;\n\tscheduler.templates.event_outside = function(start, end, event){};\n\tvar dnd = externalDrag;\n\tscheduler.attachEvent(\"onTemplatesReady\", function(){\n\t\tscheduler.event(scheduler._obj, \"mousemove\", function(e){\n\t\t\tdnd.target_scheduler = scheduler;\n\t\t});\n\t\tscheduler.event(scheduler._obj, \"mouseup\", function(e){\n\t\t\tdnd.target_scheduler = scheduler;\n\t\t});\n\t});\n}","export default function(scheduler){\n\n\n\n(function(){\n\tvar modalsStack = [];\n\n\tfunction isModal(){\n\t\treturn !!(modalsStack.length);\n\t}\n\n\tfunction isChildOf(child, parent){\n\t\twhile(child && child != parent){\n\t\t\tchild = child.parentNode;\n\t\t}\n\n\t\treturn !!(child == parent);\n\t}\n\n\tfunction afterPopup(box){\n\t\tsetTimeout(function(){\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\n\t\t\t\tscheduler.focus();\n\t\t\t}\n\t\t}, 1);\n\t}\n\tfunction startModal(box){\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\n\t\tscheduler.event(box, \"keydown\", trapFocus);\n\t\tmodalsStack.push(box);\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\n\t}\n\n\tfunction endModal(){\n\t\tvar box = modalsStack.pop();\n\t\tif(box) {\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\n\t\t}\n\t\tafterPopup(box);\n\n\t}\n\n\tfunction isTopModal(box){\n\t//\tif(dhtmlx._modalsStack.length){\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\n\t//\t}else{\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\n\t//\t}\n\n\t}\n\n\tfunction trapFocus(event){\n\t\tvar event = event || window.event;\n\t\tvar target = event.currentTarget;\n\t\tif(!isTopModal(target)) return;\n\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\n\t}\n\n\tfunction traceLightbox(){\n\t\tstartModal(scheduler.getLightbox());\n\t}\n\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\n\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\n\n\tif(!scheduler._keyNavMessagePopup) {\n\t\tscheduler._keyNavMessagePopup = true;\n\n\t\tvar focusElement = null;\n\t\tvar backupFocus = null;\n\t\tconst modalsStack = [];\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\n\t\t\tfocusElement = document.activeElement;\n\t\t\tbackupFocus = focusElement;\n\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\n\t\t\t\tbackupFocus = backupFocus.parentNode;\n\t\t\t}\n\t\t\tif(backupFocus){\n\t\t\t\tbackupFocus = backupFocus.parentNode;\n\t\t\t}\n\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\n\t\t\tmodalsStack.push(box);\n\t\t});\n\n\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\n\t\t\tvar box = modalsStack.pop();\n\t\t\tif(box) {\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\n\t\t\t}\n\t\t\tsetTimeout(function(){\n\t\t\t\tif(scheduler.$destroyed){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tvar currentTarget = document.activeElement;\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\n\t\t\t\t}\n\t\t\t\tif(currentTarget)\n\t\t\t\t\treturn;\n\n\n\t\t\t\tif(focusElement && focusElement.parentNode){\n\t\t\t\t\tfocusElement.focus();\n\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\n\t\t\t\t\tbackupFocus.focus();\n\t\t\t\t}\n\t\t\t\tfocusElement = null;\n\t\t\t\tbackupFocus = null;\n\n\t\t\t}, 1);\n\t\t});\n\t}\n\n\tscheduler.$keyboardNavigation.isModal = isModal;\n\n\n})();\n\n}","export default function(scheduler){\n\n//Initial idea and implementation by Steve MC\nscheduler._temp_key_scope = function (){\n\n\tscheduler.config.key_nav = true;\n\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\n\tvar isCopy = null;\n\n\tvar pos = {};\n\n\tif(!document.body){\n\t\tscheduler.event(window, \"load\", function(){\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\n\t\t});\n\t}else{\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\n\t}\n\n\tfunction trackMousePosition(event){\n\t\tevent = event || window.event;\n\t\tpos.x = event.clientX;\n\t\tpos.y = event.clientY;\n\t}\n\tfunction currentTarget(){\n\n\t\tvar mousePointer = false;\n\t\tvar keyNavPointer = false;\n\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\n\t\twhile(target && target != scheduler._obj){\n\t\t\ttarget = target.parentNode;\n\t\t}\n\t\tmousePointer = !!(target == scheduler._obj);\n\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\n\n\t\treturn mousePointer || keyNavPointer;\n\t}\n\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\n\t\tvar state = scheduler.getState();\n\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\n\t\tif(!(state.mode && state.min_date)){\n\t\t\treturn;\n\t\t}\n\t\tvar position = scheduler.getActionData(e);\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\n\t});\n\n\tfunction clear_event_after(ev){\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\n\t\tdelete ev.event_pid; delete ev.event_length;\n\t}\n\n\tfunction copyEvent(ev){\n\t\treturn scheduler._lame_copy({}, ev);\n\t}\n\n\tscheduler._make_pasted_event = function(ev){\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\n\n\t\tvar event_duration = ev.end_date-ev.start_date;\n\n\t\tvar copy = copyEvent(ev);\n\t\tclear_event_after(copy);\n\t\tcopy.start_date = new Date(date);\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\n\n\t\tif(section){\n\t\t\tvar property = scheduler._get_section_property();\n\t\t\t// GS-2527: if the event has multiple sections, it will be inserted into the initial sections.\n\t\t\tif(scheduler.config.multisection && ev[property] && scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(ev)) \n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\n\t\t\telse\n\t\t\t\tcopy[property] = section;\n\t\t}\n\t\treturn copy;\n\t};\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\n\t\t\treturn;\n\t\t}\n\t\tscheduler.addEvent(modified_ev);\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\n\t};\n\n\tscheduler._is_key_nav_active = function(){\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\tfunction getSelectedEvent(){\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\n\t\tif(node && node.eventId) return node.eventId;\n\t\treturn scheduler._select_id;\n\t}\n\n\tscheduler.event(document, \"keydown\", function(e){\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\n\t\t}\n\t});\n\n\tscheduler._key_nav_copy_paste = function(e){\n\t\tif(!scheduler._is_key_nav_active()) return true;\n\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\n\t\t\te.cancelBubble = true;\n\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\n\t\t\tscheduler.setCurrentView(next);\n\t\t\treturn true;\n\t\t}\n\n\t\tvar select_id = getSelectedEvent();\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\n\t\t\tif (select_id) {\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\n\t\t\t\tisCopy = true;\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\n\t\t\tif (select_id) {\n\t\t\t\tisCopy = false;\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\n\n\t\t\t\tscheduler.updateEvent(ev.id);\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\n\t\t\t}\n\t\t}\n\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\n\t\t\tev = ev || scheduler._buffer_event;\n\n\t\t\tif (ev) {\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\n\t\t\t\tif (isCopy) {\n\t\t\t\t\tnew_ev.id = scheduler.uid();\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\n\t\t\t\t}\n\t\t\t\telse { // cut operation\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t};\n};\nscheduler._temp_key_scope();\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\n\n\tvar keyDownHandler = function(e){\n\t\tif(!scheduler.config.key_nav) return;\n\n\t\treturn dispatcher.keyDownHandler(e);\n\t};\n\n\tvar focusHandler = function () {\n\t\tdispatcher.keepScrollPosition(function () {\n\t\t\tdispatcher.focusGlobalNode();\n\t\t});\n\t};\n\n\tvar waitCall;\n\tscheduler.attachEvent(\"onDataRender\", function(){\n\t\tif(!scheduler.config.key_nav) return;\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\n\n\t\tclearTimeout(waitCall);\n\t\twaitCall = setTimeout(function(){\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(!dispatcher.isEnabled())\n\t\t\t\tdispatcher.enable();\n\t\t\treFocusActiveNode();\n\t\t});\n\t});\n\n\tvar reFocusActiveNode = function(){\n\t\tif(!dispatcher.isEnabled())\n\t\t\treturn;\n\n\t\tvar activeNode = dispatcher.getActiveNode();\n\t\tif(!activeNode)\n\t\t\treturn;\n\n\t\tif(!activeNode.isValid()){\n\t\t\tactiveNode = activeNode.fallback();\n\t\t}\n\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\n\t\t\treturn;\n\n\t\tdispatcher.keepScrollPosition(function () {\n\t\t\tactiveNode.focus(true);\n\t\t});\n\t};\n\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\n\t\tvar container = scheduler.$container;\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\n\n\n\t\tif(scheduler.config.key_nav){\n\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\n\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\n\n\t\t}else{\n\t\t\tcontainer.removeAttribute(\"tabindex\");\n\t\t}\n\t});\n\n\tfunction mousedownHandler(e){\n\t\tif(!scheduler.config.key_nav) return true;\n\n\t\tconst view = scheduler.getView();\n\t\tlet dataAreaClick = false;\n\t\tif (scheduler.getState().mode === \"month\") {\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\n\t\t} else if (view && view.layout === \"timeline\") {\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\n\t\t} else {\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\n\t\t\tconst arrOfScales = Array.from(listOfScales);\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\n\t\t}\n\n\t\tvar pos = scheduler.getActionData(e);\n\n\t\tvar focusNode;\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\n\t\t}else if(dataAreaClick){\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\n\t\t\tif(pos.date && dataAreaClick){\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\n\t\t\t}\n\t\t}\n\n\t\tif(focusNode) {\n\t\t\tif (!dispatcher.isEnabled()) {\n\t\t\t\tdispatcher.activeNode = focusNode;\n\n\t\t\t} else {\n\t\t\t\tif (pos.date && dataAreaClick) {\n\t\t\t\t\tdispatcher.delay(function () {\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction focusEvent(evNode){\n\t\tif(!scheduler.config.key_nav) return;\n\t\tif(!dispatcher.isEnabled()) return;\n\n\n\t\tvar prevState = evNode;\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\n\t\tif(!focusNode.isValid()){\n\t\t\tvar lastStart = focusNode.start || prevState.start;\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\n\t\t\tvar lastSection = focusNode.section || prevState.section;\n\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\n\t\t\tif(!focusNode.isValid()){\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\n\t\t\t}\n\t\t}\n\n\t\tdispatcher.setActiveNode(focusNode);\n\t\tvar node = dispatcher.getActiveNode();\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\n\t\t}\n\t}\n\n\n\tvar updateEvent = scheduler.updateEvent;\n\tscheduler.updateEvent = function(id){\n\t\tvar res = updateEvent.apply(this, arguments);\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\n\t\t\tif(scheduler.getState().select_id == id){\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\n\n\t\t\t\tif(!scheduler.getState().lightbox_id){\n\t\t\t\t\tfocusEvent(element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\n\t\tif(!scheduler.config.key_nav) return true;\n\t\tif(dispatcher.isEnabled()){\n\t\t\tvar activeNode = dispatcher.getActiveNode();\n\t\t\tif(activeNode.eventId == id){\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onClearAll\", function(){\n\t\tif(!scheduler.config.key_nav) return true;\n\t\tif(dispatcher.isEnabled()){\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t}\n\t\t}\n\t});\n\n};\n\n}","/* eslint-disable */\n\nexport default function dhtmlxError(type, name, params) {\n\tif (!this.catches)\n\t\tthis.catches = [];\n\n\treturn this;\n}\n\ndhtmlxError.prototype.catchError = function (type, func_name) {\n\tthis.catches[type] = func_name;\n};\n\ndhtmlxError.prototype.throwError = function (type, name, params) {\n\tif (this.catches[type])\n\t\treturn this.catches[type](type, name, params);\n\n\tif (this.catches[\"ALL\"])\n\t\treturn this.catches[\"ALL\"](type, name, params);\n\n\tglobal.alert(\"Error type: \" + arguments[0] + \"\\nDescription: \" + arguments[1]);\n\treturn null;\n};\n\n","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\ndeclare let google: any;\n\nexport class GoogleMapAdapter implements IMapAdapter {\n\tprivate map: any;\n\tprivate scheduler: any;\n\tprivate settings: IMapSettings;\n\tprivate _markers: any[];\n\tprivate infoWindow: any;\n\tconstructor(scheduler: any) {\n\t\tthis.map = null;\n\t\tthis._markers = [];\n\t\tthis.scheduler = scheduler;\n\t}\n\tonEventClick(event: ICalendarEvent): void {\n\t\tif (this._markers && this._markers.length > 0) {\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\t\tif (event.id == this._markers[i].event.id) {\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\n\t\t\t\t\tif (event.lat && event.lng){\n\t\t\t\t\t\tthis.map.setCenter({\n\t\t\t\t\t\t\tlat: event.lat, \n\t\t\t\t\t\t\tlng: event.lng,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.map.setZoom(zoom);\n\t\t\t\t\t} else {\t\t\t\t\t\t\n\t\t\t\t\t\tthis.map.setCenter({\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.map.setZoom(zoom);\n\t\t\t\t\t}\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\n\t\t\t\t}\t\n\t\t\t}\n\t\t} \n\t}\n\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\n\t\tthis.settings = options;\n\t\tlet scheduler = this.scheduler;\n\t\tlet mapOptions = {\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\n\t\t\tzoom: options.initial_zoom,\n\t\t\tmapId: container.id,\n\t\t\tscrollwheel: true,\n\t\t\tmapTypeId: options.type\n\t\t}\n\t\t// we need to reuse the google map to avoid leak memory\n\t\tif (this.map === null) {\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\n\t\t}\n\t\telse {\n\t\t\tlet map = this.map;\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\n\t\t\tsetTimeout(function() {\n\t\t\t\tmap.setOptions({container: container.id});\n\t\t\t}, 500);\n\t\t}\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\n\t\t\tconst geocoder = new google.maps.Geocoder();\n\t\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\n\t\t\t\tlet point = event.latLng;\n\t\t\t\tgeocoder.geocode(\n\t\t\t\t\t{ 'latLng': point },\n\t\t\t\t\tfunction(results, status) {\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\n\t\t\t\t\t\t\tscheduler.addEventNow({\n\t\t\t\t\t\t\t\tlat: point.lat(),\n\t\t\t\t\t\t\t\tlng: point.lng(),\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tdestroy(container: HTMLElement): void {\n\t\tgoogle.maps.event.clearInstanceListeners(window);\n\t\tgoogle.maps.event.clearInstanceListeners(document);\n\t\tgoogle.maps.event.clearInstanceListeners(container);\n\t\twhile (container.firstChild) {\n\t\t\tcontainer.firstChild.remove();\n\t\t}\n\t\tcontainer.innerHTML = \"\";\n\t}\n\n\tasync addEventMarker(event: ICalendarEvent): Promise {\n\t\tlet config = {\n\t\t\ttitle: event.text,\n\t\t\tposition: {},\n\t\t\tmap: {}\n\t\t}\n\t\t\n\t\tif (event.lat && event.lng) {\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\n\t\t} else {\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\n\t\t}\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n\t\tlet marker;\n\t\tif (this.scheduler.ext.mapView.createMarker) {\n\t\t\tconfig.map = this.map;\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\n\t\t} else {\n\t\t\tmarker = new AdvancedMarkerElement(config);\n\t\t\tmarker.map = this.map;\n\t\t}\n\t\tmarker.setMap(this.map);\n\t\t//case for markeks which were deleted with DataProcessor\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\n\t\t\tmarker.setMap(null);\n\t\t}\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\n\t\t\tif (this.infoWindow) {\n\t\t\t\tthis.infoWindow.close();\n\t\t\t}\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\n\t\t\tthis.infoWindow.open({\n\t\t\t\tanchor: marker,\n\t\t\t\tmap: this.map,\n\t\t\t});\n\t\t});\n\t\tlet markerInfo = {event, ...config, marker};\n\t\tthis._markers.push(markerInfo);\n\t}\n\n\tremoveEventMarker(eventId: string): void {\n\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\tif (eventId == this._markers[i].event.id) {\n\t\t\t\tthis._markers[i].marker.setVisible(false);\n\t\t\t\tthis._markers[i].marker.setMap(null);\n\t\t\t\tthis._markers[i].marker.setPosition(null);\n\t\t\t\tthis._markers[i].marker = null;\n\t\t\t\tthis._markers.splice(i,1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateEventMarker(event: ICalendarEvent): void {\n\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\tif(this._markers[i].event.id == event.id) {\n\t\t\t\tthis._markers[i].event = event;\n\t\t\t\tthis._markers[i].position.lat = event.lat;\n\t\t\t\tthis._markers[i].position.lng = event.lng;\n\t\t\t\tthis._markers[i].text = event.text;\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\n\t\t\t}\n\t\t}\n\t}\n\n\tclearEventMarkers(): void {\n\t\tif (this._markers.length > 0) {\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\t\tthis._markers[i].marker.setMap(null);\n\t\t\t}\n\t\t\tthis._markers = [];\n\t\t}\n\t}\n\n\tsetView(latitude: number, longitude: number, zoom: number): void {\n\t\tthis.map.setCenter({\n\t\t\tlat: latitude, \n\t\t\tlng: longitude,\n\t\t});\n\t\tthis.map.setZoom(zoom);\n\t}\n\n\tasync resolveAddress(string: string): Promise {\n\t\tconst geocoder = new google.maps.Geocoder();\n\t\tlet position: any = await new Promise((resolve) => {\n\t\t\tgeocoder.geocode(\n\t\t\t\t{ 'address': string },\n\t\t\t\tfunction(results, status) {\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\n\t\t\t\t\t\tresolve({});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t\treturn position;\n\t}\n\t\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\n\ndeclare let L: any\n\nexport class OpenStreetMapAdapter implements IMapAdapter {\n\tprivate map: any;\n\tprivate scheduler: any;\n\tprivate _markers: any[];\n\tprivate settings: IMapSettings;\n\tconstructor(scheduler: any) {\n\t\tthis.map = null;\n\t\tthis._markers = [];\n\t\tthis.scheduler = scheduler;\n\t}\n\tonEventClick(event: ICalendarEvent): void {\n\t\tif (this._markers && this._markers.length > 0) {\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\t\tif (event.id == this._markers[i].event.id) {\n\t\t\t\t\tthis._markers[i].marker.openPopup();\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\n\t\t\t\t\tif (event.lat && event.lng) {\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\n\t\t\t\t\t} else {\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);\n\t\t\t\t\t}\n\t\t\t\t}\t\n\t\t\t}\n\t\t} \n\t}\n\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\n\t\tlet scheduler = this.scheduler;\n\t\tlet mapWrapper = document.createElement('div');\n\t\tmapWrapper.className = 'mapWrapper';\n\t\tmapWrapper.id = 'mapWrapper';\n\t\tmapWrapper.style.width = container.style.width;\n\t\tmapWrapper.style.height = container.style.height;\n\t\tcontainer.appendChild(mapWrapper);\n\n\t\tlet map = L.map(mapWrapper, {\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\n\t\t\tzoom: options.initial_zoom,\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\n\t\t});\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\n\t\tmap.on(\"dblclick\", async function(e){\n\t\t\tconst settings = {\n\t\t\t\t\"method\": \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Accept-Language\": \"en\",\n\t\t\t\t},\n\t\t\t};\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());\n\t\t\tif (response.address) {\n\t\t\t\tlet address = response.address.country;\n\t\t\t\tscheduler.addEventNow({\n\t\t\t\t\tlat: e.latlng.lat,\n\t\t\t\t\tlng: e.latlng.lng,\n\t\t\t\t\tevent_location: address,\n\t\t\t\t\tstart_date: scheduler.getState().date,\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\n\t\t\t}\n\t\t});\n\t\tthis.map = map;\n\t\tthis.settings = options;\n\t}\n\n\tdestroy(container: HTMLElement): void {\n\t\tthis.map.remove();\n\t\twhile (container.firstChild) {\n\t\t\tcontainer.firstChild.remove();\n\t\t}\n\t\tcontainer.innerHTML = \"\";\n\t}\n\n\taddEventMarker(event: ICalendarEvent): void {\n\t\tconst myIcon = L.icon({\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\n\t\t\ticonSize: [25, 41],\n\t\t\tshadowSize: [30, 65],\n\t\t\ticonAnchor: [12, 41],\n\t\t\tshadowAnchor: [7, 65]\n\t\t});\n\t\tlet popupConfig = {\n\t\t\tminWidth: 180,\n\t\t\tmaxWidth: this.settings.info_window_max_width,\n\t\t}\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\n\t\tconst tooltip = L.tooltip().setContent(event.text);\n\n\t\tlet markerConfig = [\n\t\t\tevent.lat,\n\t\t\tevent.lng\n\t\t]\n\t\t\n\t\tif (!event.lat || !event.lng) {\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\n\t\t}\n\t\tconst marker = L.marker(markerConfig, {\n\t\t\ticon: myIcon\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\n\t\tconst markerInfo = {event, marker};\n\t\tthis._markers.push(markerInfo);\t\t\n\t}\n\n\tremoveEventMarker(eventId: string): void {\n\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\tif (eventId == this._markers[i].event.id) {\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\n\t\t\t\tthis._markers.splice(i,1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateEventMarker(event: ICalendarEvent): void {\n\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\tif(this._markers[i].event.id == event.id) {\n\t\t\t\tthis._markers[i].event = event;\n\t\t\t\tif (!event.lat || !event.lng){\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\n\t\t\t\t} else {\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tclearEventMarkers(): void {\n\t\tif(this._markers) {\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \n\t\t\t}\n\t\t\tthis._markers = [];\n\t\t}\n\t}\n\n\tsetView(latitude: number, longitude: number, zoom: number): void {\n\t\tthis.map.setView([latitude, longitude], zoom);\n\t}\n\n\tasync resolveAddress(string: string): Promise {\n\t\tconst settings = {\n\t\t\t\"method\": \"GET\",\n\t\t\theaders: {\n\t\t\t\t\"Accept-Language\": \"en\",\n\t\t\t},\n\t\t};\n\t\tlet position:any = {};\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\n\t\tif (response && response.length) {\n\t\t\tposition.lat = +response[0].lat;\n\t\t\tposition.lng = +response[0].lon;\n\t\t} else {\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\n\t\t}\n\t\treturn position;\n\t}\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\n\ndeclare let mapboxgl: any;\ndeclare let MapboxGeocoder: any;\n\nexport class MapboxAdapter implements IMapAdapter {\n\tprivate map: any;\n\tprivate scheduler: any;\n\tprivate settings: IMapSettings;\n\tprivate _markers: any[];\n\tconstructor(scheduler: any) {\n\t\tthis.map = null;\n\t\tthis._markers = [];\n\t\tthis.scheduler = scheduler;\n\t}\n\tonEventClick(event: ICalendarEvent): void {\n\t\tif (this._markers && this._markers.length > 0) {\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\n const popup = this._markers[i].marker.getPopup();\n if (popup.isOpen()){\n popup.remove();\n }\n\t\t\t\tif (event.id == this._markers[i].event.id) {\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\n\t\t\t\t\tif (event.lat && event.lng) {\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\n\t\t\t\t\t} else {\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);\n\t\t\t\t\t}\n\t\t\t\t}\t\n\t\t\t}\n\t\t} \n\t}\n\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\n let scheduler = this.scheduler;\n\n\t\tmapboxgl.accessToken = options.accessToken;\n const map = new mapboxgl.Map({\n container: container, \n center: [options.initial_position.lng, options.initial_position.lat], \n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\n });\n map.on(\"dblclick\",async function(e){\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());\n\t\t\tif (response.features){\n\t\t\t\tlet address = response.features[0].place_name;\n\t\t\t\tscheduler.addEventNow({\n\t\t\t\t\tlat: e.lngLat.lat,\n\t\t\t\t\tlng: e.lngLat.lng,\n\t\t\t\t\tevent_location: address,\n\t\t\t\t\tstart_date: scheduler.getState().date,\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\n\t\t\t}\n\t\t});\n this.map = map;\n this.settings = options;\n\t}\n\n\tdestroy(container: HTMLElement): void {\n\t\tthis.map.remove();\n while (container.firstChild) {\n\t\t\tcontainer.firstChild.remove();\n\t\t}\n container.innerHTML = \"\";\n\t}\n\n\taddEventMarker(event: ICalendarEvent): void {\n let config = [\n\t\t\tevent.lng,\n\t\t\tevent.lat\n\t\t]\n\t\t\n\t\tif (!event.lat || !event.lng) {\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\n\t\t} \n\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \n .setHTML(this.scheduler.templates.map_info_content(event));\n const marker = new mapboxgl.Marker()\n .setLngLat(config)\n .setPopup(popup)\n .addTo(this.map);\n const markerInfo = {event, marker}; \n this._markers.push(markerInfo);\n\t}\n\n\tremoveEventMarker(eventId: string): void {\n\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\tif (eventId == this._markers[i].event.id) {\n\t\t\t\tthis._markers[i].marker.remove();\n this._markers.splice(i,1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateEventMarker(event: ICalendarEvent): void {\n\t\tfor (let i = 0; i < this._markers.length; i++) {\n\t\t\tif(this._markers[i].event.id == event.id) {\n\t\t\t\tthis._markers[i].event = event;\n\t\t\t\tif (!event.lat || !event.lng){\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\n\t\t\t\t} else {\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tclearEventMarkers(): void {\n\t\tfor (let i = 0; i {\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());\n\t\tlet position:any = {};\n\t\tif (response && response.features.length) {\n\t\t\tposition.lng = response.features[0].center[0];\n\t\t\tposition.lat = response.features[0].center[1];\n\t\t} else {\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\n\t\t}\n\t\treturn position;\n\t}\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: \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: \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: \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: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \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: \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: \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 | \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 // \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 \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 \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","/* autoscroll start */\n\nexport default function(scheduler){\n\nlet scrollInterval = 10;\n\nlet interval = null;\nlet startPos = null;\n\nfunction getRelativeCoordinates (e, parent) {\n\tconst view = scheduler.matrix[scheduler._mode];\n\tconst pos = {};\n\tconst offset = {};\n\tlet container = parent;\n\n\tpos.x = !!e.touches ? e.touches[ 0 ].pageX : e.pageX;\n\tpos.y = !! e.touches ? e.touches[ 0 ].pageY : e.pageY;\n\n\toffset.left = container.offsetLeft + view.dx;\n\toffset.top = container.offsetTop;\n\n\twhile ( container ) {\n\n\t\toffset.left += container.offsetLeft;\n\t\toffset.top += container.offsetTop;\n\n\t\tcontainer = container.offsetParent;\n\t}\n\n\treturn {\n\t\tx : pos.x - offset.left,\n\t\ty : pos.y - offset.top\n\t};\n}\n\nfunction autoscrollInterval(event){\n\tif(interval)\n\t\tclearInterval(interval);\n\n\tconst view = scheduler.matrix[scheduler._mode];\n\tif(!view)\n\t\treturn;\n\tscheduler._schedulerOuter = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\n\tif (!view.scrollable){\n\t\tscheduler._schedulerOuter = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t}\n\n\tconst eventPos = {\n\t\tpageX: !!event.touches ? event.touches[0].pageX : event.pageX,\n\t\tpageY: !!event.touches ? event.touches[0].pageY : event.pageY\n\t};\n\tinterval = setInterval(function(){tick(eventPos);}, scrollInterval);\n}\n\nscheduler.attachEvent(\"onDestroy\", function(){\n\tclearInterval(interval);\n});\n\nfunction tick(e){\n\tif(!scheduler.getState().drag_id) {\n\t\tclearInterval(interval);\n\t\tstartPos = null;\n\t\treturn;\n\t}\n\n\tconst view = scheduler.matrix[scheduler._mode];\n\tif(!view)\n\t\treturn;\n\n\n\t\n\tconst viewport = scheduler._schedulerOuter;\n\tconst box = getRelativeCoordinates(e, viewport);\n\n\tconst availWidth = viewport.offsetWidth - view.dx;\n\tconst availHeight = viewport.offsetHeight;\n\n\tconst posX = box.x;\n\tconst posY = box.y;\n\n\tlet settings = view.autoscroll || {};\n\tif(settings === true){\n\t\tsettings = {};\n\t}\n\n\tscheduler._merge(settings, {\n\t\trange_x: 200,// px to edge\n\t\trange_y: 100,\n\t\tspeed_x: 20,// speed\n\t\tspeed_y: 10\n\t});\n\n\tlet scrollLeft = need_scroll(posX, availWidth, startPos ? startPos.x : 0, settings.range_x);\n\tif(!view.scrollable){\n\t\tscrollLeft = 0;\n\t}\n\tlet scrollTop = need_scroll(posY, availHeight, startPos ? startPos.y : 0, settings.range_y);\n\n\tif((scrollTop || scrollLeft) && !startPos){\n\t\tstartPos = {\n\t\t\tx: posX,\n\t\t\ty: posY\n\t\t};\n\n\t\tscrollLeft = 0;\n\t\tscrollTop = 0;\n\t}\n\n\tscrollLeft = scrollLeft * settings.speed_x;\n\tscrollTop = scrollTop * settings.speed_y;\n\n\tif(scrollLeft && scrollTop){\n\t\tif(Math.abs(scrollLeft / 5) > Math.abs(scrollTop)){\n\t\t\tscrollTop = 0;\n\t\t}else if(Math.abs(scrollTop / 5) > Math.abs(scrollLeft)){\n\t\t\tscrollLeft = 0;\n\t\t}\n\t}\n\n\tif(scrollLeft || scrollTop){\n\t\tstartPos.started = true;\n\t\tscroll(scrollLeft, scrollTop);\n\t}else{\n\t\tclearInterval(interval);\n\t}\n}\n\nfunction need_scroll(pos, boxSize, startCoord, scrollRange){\n\tif(pos < scrollRange && (!startPos || startPos.started || pos < startCoord)){\n\t\treturn -1;\n\t}else if(boxSize - pos < scrollRange && (!startPos || startPos.started || pos > startCoord)){\n\t\treturn 1;\n\t}\n\treturn 0;\n}\n\nfunction scroll(left, top){\n\tconst viewport = scheduler._schedulerOuter;\n\tif(top){\n\t\tviewport.scrollTop += top;\n\t}\n\tif (left){ // + 40 - adjust height of that movement was correct\n\t\tviewport.scrollLeft += left;\n\t}\n}\n\n\nvar evId = scheduler.attachEvent(\"onSchedulerReady\", function(){\n\tif (scheduler.matrix) {\n\t\tscheduler.event(document.body, \"mousemove\", autoscrollInterval);\n\t\tscheduler.detachEvent(evId);\n\t}\n});\n\n/* autoscroll end */\n\n}","export default (function(){\n\treturn function create(){\n\t\tvar modes = {\n\t\t\t\"minMax\":\"[0;max]\",\n\t\t\t\"maxMin\":\"[max;0]\",\n\t\t\t\"nMaxMin\":\"[-max;0]\"\n\t\t};\n\t\t\n\t\tfunction createTestElement(){\n\t\t\tvar container = document.createElement(\"div\");\n\t\t\tcontainer.style.cssText = \t\"direction: rtl;\" + \n\t\t\t\t\t\t\t\t\t\t\"overflow: auto;\" +\n\t\t\t\t\t\t\t\t\t\t\"width:100px;\" +\n\t\t\t\t\t\t\t\t\t\t\"height: 100px;\" +\n\t\t\t\t\t\t\t\t\t\t\"position:absolute;\" +\n\t\t\t\t\t\t\t\t\t\t\"top: -100500px;\" +\n\t\t\t\t\t\t\t\t\t\t\"left: -100500px;\";\n\t\t\tvar content = document.createElement(\"div\");\n\t\t\tcontent.style.cssText = \"width: 100500px;height: 1px;\";\n\t\t\tcontainer.appendChild(content);\n\t\t\treturn container;\n\t\t}\n\n\t\tfunction detectScrollMode(){\n\t\t\tvar result = modes.minMax;\n\t\t\tvar demoElement = createTestElement();\n\t\t\tdocument.body.appendChild(demoElement);\n\n\t\t\tvar initialScroll = demoElement.scrollLeft;\n\t\t\tif(initialScroll > 0){\n\t\t\t\t// scrollLeft goes from zero (left) to maximum value (right), the same way as in ltr mode\n\t\t\t\t// probably chrome\n\t\t\t\tresult = modes.minMax;\n\t\t\t}else{\n\t\t\t\tdemoElement.scrollLeft = -50;\n\t\t\t\tif(demoElement.scrollLeft === -50){\n\t\t\t\t\t// scrollLeft goes from negative max (left) to zero (right)\n\t\t\t\t\t// probably FF\n\t\t\t\t\tresult = modes.nMaxMin; \n\t\t\t\t}else{\n\t\t\t\t\t// scrollLeft goes from max (left) to zero (right)\n\t\t\t\t\t// probably IE\n\t\t\t\t\tresult = modes.maxMin; \n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdocument.body.removeChild(demoElement);\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction normalizeValue(value, scrollWidth){\n\t\t\tvar mode = getMode();\n\t\t\tif(mode === modes.nMaxMin){\n\t\t\t\tif(value){\n\t\t\t\t\treturn -value;\n\t\t\t\t}else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}else if (mode === modes.minMax){\n\t\t\t\treturn scrollWidth - value;\n\t\t\t}else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\n\t\tfunction getScrollValue(element){\n\t\t\t//const direction = \"ltr\";\n\t\t\tvar direction = getComputedStyle(element).direction;\n\t\t\tif(!direction || direction === \"ltr\"){\n\t\t\t\treturn element.scrollLeft;\n\t\t\t}else {\n\t\t\t\tvar maxScroll = element.scrollWidth - element.offsetWidth;\n\t\t\t\treturn normalizeValue(element.scrollLeft, maxScroll);\n\t\t\t}\n\t\t}\n\n\t\tfunction setScrollValue(element, value){\n\t\t\t//const direction = \"ltr\";\n\t\t\tvar direction = getComputedStyle(element).direction;\n\t\t\tif(!direction || direction === \"ltr\"){\n\t\t\t\telement.scrollLeft = value;\n\t\t\t}else {\n\t\t\t\tvar maxScroll = element.scrollWidth - element.offsetWidth;\n\t\t\t\tvar normalized = normalizeValue(value, maxScroll);\n\t\t\t\telement.scrollLeft = normalized;\n\t\t\t}\n\t\t}\n\n\t\tvar currentMode;\n\t\tfunction getMode(){\n\t\t\tif(!currentMode){\n\t\t\t\tcurrentMode = detectScrollMode();\n\t\t\t}\n\t\t\treturn currentMode;\n\t\t}\n\t\treturn {\n\t\t\tmodes: modes,\n\t\t\tgetMode: getMode,\n\t\t\tnormalizeValue: normalizeValue,\n\t\t\tgetScrollValue: getScrollValue,\n\t\t\tsetScrollValue: setScrollValue\n\t\t};\n\t};\n})();","interface IViewPosition{\n\ttop: number;\n\tleft: number;\n}\n\ninterface IViewBox extends IViewPosition{\n\twidth: number;\n\theight: number;\n\tbottom: number;\n\tright: number;\n}\n\nexport class Tooltip {\n\tprivate _root: HTMLElement;\n\tprivate _tooltipNode: HTMLElement | null;\n\tprivate _scheduler: any;\n\n\tconstructor(scheduler: any){\n\t\tthis._scheduler = scheduler;\n\t}\n\n\tgetNode() : HTMLElement {\n\t\tconst scheduler = this._scheduler;\n\t\tif (!this._tooltipNode){\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\n\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\n\t\t}\n\t\tif(scheduler.config.rtl){\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\n\t\t} else{\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\n\t\t}\n\t\treturn this._tooltipNode;\n\t}\n\n\tsetViewport(node: HTMLElement):Tooltip{\n\t\tthis._root = node;\n\t\treturn this;\n\t}\n\n\tshow(left: number, top: number): Tooltip;\n\tshow(event: MouseEvent): Tooltip;\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\n\t\tconst scheduler = this._scheduler;\n\t\tconst domHelpers = scheduler.$domHelpers;\n\t\tconst container = document.body;\n\t\tconst node = this.getNode();\n\n\t\tif(!domHelpers.isChildOf(node, container)){\n\t\t\tthis.hide();\n\t\t\tcontainer.appendChild(node);\n\t\t}\n\n\t\tif (this._isLikeMouseEvent(left)) {\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\n\t\t\ttop = position.top;\n\t\t\tleft = position.left;\n\t\t}\n\n\t\tnode.style.top = top + \"px\";\n\t\tnode.style.left = left + \"px\";\n\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\n\t\treturn this;\n\t}\n\thide() : Tooltip{\n\t\tconst scheduler = this._scheduler;\n\t\tconst node = this.getNode();\n\t\tif(node && node.parentNode){\n\t\t\tnode.parentNode.removeChild(node);\n\t\t}\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\n\t\treturn this;\n\t}\n\n\tsetContent(html: string) : Tooltip{\n\t\tconst node = this.getNode();\n\t\tnode.innerHTML = html;\n\t\treturn this;\n\t}\n\n\t// it is for salesforce, because it proxies event to it own events\n\tprivate _isLikeMouseEvent(event: any): boolean {\n\t\tif (!event || typeof event !== \"object\") {\n\t\t\treturn false;\n\t\t}\n\t\treturn \"clientX\" in event && \"clientY\" in event;\n\t}\n\n\tprivate _getViewPort() : HTMLElement {\n\t\treturn this._root || document.body;\n\t}\n\n\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\n\t\tconst scheduler = this._scheduler;\n\t\tconst domHelpers = scheduler.$domHelpers;\n\t\t// top/left coordinates inside the viewport by mouse position\n\t\tconst viewport = this._getViewPortSize();\n\t\tconst tooltipNode = this.getNode();\n\t\tconst tooltip: IViewBox = {\n\t\t\ttop:0,\n\t\t\tleft: 0,\n\t\t\twidth: tooltipNode.offsetWidth,\n\t\t\theight: tooltipNode.offsetHeight,\n\t\t\tbottom: 0,\n\t\t\tright: 0\n\t\t};\n\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\n\n\t\tconst container = document.body;\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\n\t\tconst containerPos = domHelpers.getNodePosition(container);\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\n\n\t\ttooltip.top = mouse.y;\n\t\ttooltip.left = mouse.x;\n\t\ttooltip.top += offsetY;\n\t\ttooltip.left += offsetX;\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\ttooltip.right = tooltip.left + tooltip.width;\n\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\n\t\tif(tooltip.top < viewport.top - scrollTop){\n\t\t\ttooltip.top = viewport.top;\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\t}else if(tooltip.bottom > viewport.bottom){\n\t\t\ttooltip.bottom = viewport.bottom;\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\n\t\t}\n\n\t\tif(tooltip.left < viewport.left){\n\t\t\ttooltip.left = viewport.left;\n\t\t\ttooltip.right = viewport.left + tooltip.width;\n\t\t}else if(tooltip.right > viewport.right){\n\t\t\ttooltip.right = viewport.right;\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\n\t\t}\n\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\n\t\t}\n\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\t}\n\n\t\treturn tooltip;\n\t}\n\n\tprivate _getViewPortSize() : IViewBox {\n\t\tconst scheduler = this._scheduler;\n\t\tconst domHelpers = scheduler.$domHelpers;\n\t\tconst container = this._getViewPort();\n\t\tlet viewport = container;\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\n\t\tlet pos;\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\n\t\tif(container === scheduler.$event_data){\n\t\t\tviewport = scheduler.$event;\n\t\t\tscrollTop = 0;\n\t\t\tscrollLeft = 0;\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\n\t\t}else{\n\t\t\tpos = domHelpers.getNodePosition(viewport);\n\t\t}\n\t\treturn {\n\t\t\tleft:pos.x + scrollLeft,\n\t\t\ttop: pos.y + scrollTop,\n\t\t\twidth: pos.width,\n\t\t\theight: pos.height,\n\t\t\tbottom: pos.y + pos.height + scrollTop,\n\t\t\tright: pos.x + pos.width + scrollLeft\n\t\t};\n\t}\n}\n","import * as utils from \"../../core/utils/utils\";\nimport { Tooltip } from \"./tooltip\";\n\ninterface ITrackerTarget {\n\tselector: string;\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\n\tglobal: boolean;\n}\n\ninterface ITooltipConfig {\n\tselector: string;\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\n\tglobal: boolean;\n}\n\nexport class TooltipManager{\n\ttooltip: Tooltip;\n\tprotected _domEvents: any;\n\tprivate _listeners: object = {};\n\tprivate _scheduler: any;\n\tprivate delayShow: any;\n\tprivate delayHide: any;\n\n\tconstructor(scheduler: any) {\n\t\tthis.tooltip = new Tooltip(scheduler);\n\t\tthis._scheduler = scheduler;\n\t\tthis._domEvents = scheduler._createDomEventScope();\n\t\tthis._initDelayedFunctions();\n\t}\n\n\tdestructor(): void{\n\t\tthis.tooltip.hide();\n\t\tthis._domEvents.detachAll();\n\t}\n\thideTooltip(): void{\n\t\tthis.delayHide();\n\t}\n\tattach(config: ITrackerTarget): void {\n\t\tlet root = document.body;\n\t\tconst scheduler = this._scheduler;\n\t\tconst domHelpers = scheduler.$domHelpers;\n\t\tif(!config.global){\n\t\t\troot = scheduler.$root;\n\t\t}\n\n\t\tlet watchableTarget = null;\n\t\tconst handler = (event) => {\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst doOnMouseEnter = () => {\n\t\t\t\twatchableTarget = targetNode;\n\t\t\t\tconfig.onmouseenter(event, targetNode);\n\t\t\t};\n\t\t\t// GS-2377: to show tooltip after touch and hide it when touch is outside the events\n\t\t\tif (scheduler._mobile && scheduler.config.touch_tooltip){\n\t\t\t\tif(targetNode){\n\t\t\t\t\tdoOnMouseEnter();\n\t\t\t\t} else {\n\t\t\t\t\tconfig.onmouseleave(event, targetNode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(watchableTarget){\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\n\t\t\t\t}else{\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\n\t\t\t\t\twatchableTarget = null;\n\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\n\t\t\t\t\t\tdoOnMouseEnter();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(targetNode){\n\t\t\t\t\tdoOnMouseEnter();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.detach(config.selector);\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\n\t\tthis._listeners[config.selector] = {\n\t\t\tnode: root,\n\t\t\thandler\n\t\t};\n\t}\n\n\tdetach(selector: string): void {\n\t\tconst listener = this._listeners[selector];\n\t\tif(listener){\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\n\t\t}\n\t}\n\n\ttooltipFor(config: ITooltipConfig): void {\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\n\t\t\tlet clone = event;\n\t\t\t// making events survive timeout in ie\n\t\t\t// tslint:disable-next-line no-string-literal\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\n\t\t\t\t// tslint:disable-next-line no-string-literal\n\t\t\t\tclone = document[\"createEventObject\"](event);\n\t\t\t}\n\t\t\treturn clone;\n\t\t};\n\t\tthis._initDelayedFunctions();\n\t\tthis.attach({\n\t\t\tselector: config.selector,\n\t\t\tglobal: config.global,\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\n\t\t\t\tconst html = config.html(event, node);\n\t\t\t\tif(html){\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\n\t\t\t\tconst html = config.html(event, node);\n\t\t\t\tif(html){\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\n\t\t\t\t}else{\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\t\t\tthis.delayHide();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonmouseleave:() => {\n\t\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\t\tthis.delayHide();\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate _initDelayedFunctions(){\n\t\tconst scheduler = this._scheduler;\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\n\t\tif(this.delayShow){\n\t\t\tthis.delayShow.$cancelTimeout();\n\t\t}\n\t\tif(this.delayHide){\n\t\t\tthis.delayHide.$cancelTimeout();\n\t\t}\n\t\tthis.tooltip.hide();\n\t\t\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\n\t\t\t\tthis.tooltip.hide();\n\t\t\t} else {\n\t\t\t\tthis.tooltip.setContent(html);\n\t\t\t\tthis.tooltip.show(event);\n\t\t\t}\n\t\t}, scheduler.config.tooltip_timeout || 1);\n\n\t\tthis.delayHide = (utils as any).default.delay(() => {\n\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\tthis.tooltip.hide();\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\n\t}\n\n}","import active_links from \"./active_links\";\nimport agenda_legacy from \"./agenda_legacy_view\";\nimport agenda_view from \"./agenda\";\nimport all_timed from \"./all_timed\";\nimport collision from \"./collision\";\nimport container_autoresize from \"./container_autoresize\";\nimport cookie from \"./cookie\";\nimport daytimeline from \"./daytimeline\";\nimport drag_between from \"./drag_between\";\nimport editors from \"./editors\";\nimport expand from \"./expand\";\nimport grid_view from \"./grid_view\";\nimport html_templates from \"./html_templates\";\nimport key_nav from \"./key_nav\";\nimport layer from \"./layer\";\nimport legacy from \"./legacy\";\nimport limit from \"./limit\";\nimport map_view from \"./map_view\";\nimport minical from \"./minical\";\nimport monthheight from \"./monthheight\";\nimport multisection from \"./multisection\";\nimport multiselect from \"./multiselect\";\nimport multisource from \"./multisource\";\nimport mvc from \"./mvc\";\nimport outerdrag from \"./outerdrag\";\nimport pdf from \"./pdf\";\nimport quick_info from \"./quick_info\";\nimport readonly from \"./readonly\";\nimport recurring from \"./recurring\";\nimport recurring_legacy from \"./recurring_legacy\";\nimport serialize from \"./serialize\";\nimport timeline from \"./timeline\";\nimport tooltip from \"./tooltip\";\nimport treetimeline from \"./treetimeline\";\nimport units from \"./units\";\nimport url from \"./url\";\nimport week_agenda from \"./week_agenda\";\nimport wp from \"./wp\";\nimport year_view from \"./year_view\";\nimport export_api from \"./export_api\";\n\nexport default {\n\tactive_links,\n\tagenda_legacy,\n\tagenda_view,\n\tall_timed,\n\tcollision,\n\tcontainer_autoresize,\n\tcookie,\n\tdaytimeline,\n\tdrag_between,\n\teditors,\n\texpand,\n\texport_api,\n\tgrid_view,\n\thtml_templates,\n\tkey_nav,\n\tlayer,\n\tlegacy,\n\tlimit,\n\tmap_view,\n\tminical,\n\tmonthheight,\n\tmultisection,\n\tmultiselect,\n\tmultisource,\n\tmvc,\n\touterdrag,\n\tpdf,\n\tquick_info,\n\treadonly,\n\trecurring,\n\trecurring_legacy,\n\tserialize,\n\ttimeline,\n\ttooltip,\n\ttreetimeline,\n\tunits,\n\turl,\n\tweek_agenda,\n\twp,\n\tyear_view\n};","export default function(scheduler){\n\nscheduler.config.active_link_view = \"day\";\nscheduler._active_link_click = function(e){\n\tvar start = e.target;\n\tvar to = start.getAttribute(\"data-link-date\");\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\n\tif (to) {\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\n\t\tif (e && e.preventDefault)\n\t\t\te.preventDefault();\n\t\treturn false;\n\t}\n};\nscheduler.attachEvent(\"onTemplatesReady\", function() {\n\tvar do_wrapper = function(key, fullname){\n\t\tfullname = fullname || (key+\"_scale_date\");\n\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\n\t\t}\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\n\t\tscheduler.templates[fullname] = function(date) {\n\t\t\treturn \"\" + week_x(date) + \"\";\n\t\t};\n\t};\n\n\tdo_wrapper(\"week\");\n\tdo_wrapper(\"\", \"month_day\");\n\tif (this.matrix){\n\t\tfor (var key in this.matrix)\n\t\t\tdo_wrapper(key);\n\t}\n\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\n});\n\n}","export default function(scheduler){\n\nscheduler.date.add_agenda_legacy = function(date){\n\treturn scheduler.date.add(date, 1, \"year\");\n};\n\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\n\tif (ev._timed)\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\n\telse\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\n};\nscheduler.templates.agenda_legacy_text = function(start,end,event){\n\treturn event.text;\n};\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\n\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\n\nscheduler.attachEvent(\"onTemplatesReady\",function() {\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\n\tscheduler.dblclick_dhx_cal_data = function() {\n\t\tif (this._mode == \"agenda_legacy\") {\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\n\t\t\t\tthis.addEventNow();\n\t\t} else {\n\t\t\tif (old_dblclick_dhx_cal_data)\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\n\t\t}\n\t};\n\n\n\tvar old = scheduler.render_data;\n\tscheduler.render_data=function(evs){\n\t\tif (this._mode == \"agenda_legacy\")\n\t\t\tfill_agenda_tab();\n\t\telse\n\t\t\treturn old.apply(this,arguments);\n\t};\n\n\tvar old_render_view_data = scheduler.render_view_data;\n\tscheduler.render_view_data = function(){\n\t\tif(this._mode == \"agenda_legacy\") {\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\n\t\t}\n\t\treturn old_render_view_data.apply(this,arguments);\n\t};\n\n\n\n\tfunction set_full_view(mode){\n\t\tif (mode){\n\t\t\tvar l = scheduler.locale.labels;\n\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\n\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\n\t\t\t\t\"
\"+l.date+\"
\" +\n\t\t\t\t\"\"+l.description+\"\" +\n\t\t\t\t\"
\";\n\t\t\tscheduler._table_view=true;\n\t\t\tscheduler.set_sizes();\n\t\t}\n\t}\n\n\tfunction fill_agenda_tab(){\n\t\t//select events for which data need to be printed\n\n\t\tvar events = scheduler.get_visible_events();\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\n\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\n\t\tvar agendaEventAttrString;\n\t\t//generate html for the view\n\t\tvar html=\"
\";\n\t\tfor (var i=0; i
\"+\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))+\n\t\t\t\t\t\"
\";\n\t\t\thtml+=`
\n\t\t\t\n\t\t\t
`;\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\n\t\t}\n\t\thtml+=\"
\";\n\n\t\t//render html\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\n\n\t\t// setting up dhx_v_border size\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\n\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\n\n\t\tvar dateElement = scheduler._getNavDateElement();\n\t\tif(dateElement){\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\n\t\t}\n\n\t\tscheduler._rendered=[];\n\t\tfor (var i=0; i < t.length-1; i++)\n\t\t\tscheduler._rendered[i]=t[i];\n\n\t}\n\n\tscheduler.agenda_legacy_view=function(mode){\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\n\n\t\tset_full_view(mode);\n\t\tif (mode){\n\t\t\tscheduler._cols = null;\n\t\t\tscheduler._colsS = null;\n\t\t\tscheduler._table_view = true;\n\t\t\t//agenda tab activated\n\t\t\tfill_agenda_tab();\n\t\t} else {\n\t\t\tscheduler._table_view = false;\n\t\t\t//agenda tab de-activated\n\t\t}\n\t};\n});\n\n\n}","export default function(scheduler){\n\n\tscheduler.date.add_agenda = function(date, inc){\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\n\t};\n\t\n\tscheduler.templates.agenda_time = function(start,end,ev){\n\t\tif (ev._timed){\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\n\t\t}else{\n\t\t\treturn scheduler.locale.labels.full_day;\n\t\t}\n\t};\n\tscheduler.templates.agenda_text = function(start,end,ev){\n\t\treturn ev.text;\n\t};\n\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\n\n\tscheduler.templates.agenda_day = function(date){ \n\t\treturn `
${dayDateToStr(date)}
\n\t\t
${dayDowToStr(date)}
`;\n\t};\n\tscheduler.templates.agenda_date = function(start, end){ \n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \n\t};\n\t\n\tscheduler.date.agenda_start=function(date){\n\t\treturn scheduler.date.month_start(new Date(date));\n\t};\n\n\tlet scrollTop = 0;\n\t\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\n\t\tscheduler.dblclick_dhx_cal_data = function() {\n\t\t\tif (this._mode == \"agenda\") {\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\n\t\t\t\t\tthis.addEventNow();\n\t\t\t} else {\n\t\t\t\tif (old_dblclick_dhx_cal_data)\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\n\t\t\t}\n\t\t};\n\t\n\t\n\t\tvar old = scheduler.render_data;\n\t\tscheduler.render_data=function(evs){\n\t\t\tif (this._mode == \"agenda\")\n\t\t\t\tfill_agenda_tab();\n\t\t\telse\n\t\t\t\treturn old.apply(this,arguments);\n\t\t};\n\t\n\t\tvar old_render_view_data = scheduler.render_view_data;\n\t\tscheduler.render_view_data = function(){\n\t\t\tif(this._mode == \"agenda\") {\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\n\t\t\t}\n\t\t\treturn old_render_view_data.apply(this,arguments);\n\t\t};\n\n\t\tfunction fill_agenda_tab(){\n\t\t\tconst events = scheduler.get_visible_events();\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\n\n\t\t\tconst eventsInDays = {};\n\t\t\tlet currDate = scheduler.getState().min_date;\n\t\t\tconst maxDate = scheduler.getState().max_date;\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\n\t\t\t}\n\n\t\t\tlet anyEvents = false;\n\n\t\t\tevents.forEach((ev) => {\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\n\t\t\t\t\t\tanyEvents = true;\n\t\t\t\t\t}\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(!anyEvents){\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\n\t\t\t}else{\n\t\t\t\tlet html = \"\";\n\t\t\t\tfor(let day in eventsInDays){\n\t\t\t\t\tif(scheduler.ignore_agenda && scheduler.ignore_agenda(new Date(day*1))){\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\n\t\t\t\t}\n\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\n\t\t\t}\n\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\n\t\t\t\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\n\t\t\tscheduler._rendered = [];\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\n\t\t\t\tscheduler._rendered[i] = t[i];\n\t\t\t}\n\t\t}\n\n\t\n\n\t\tfunction renderEmptyView(){\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\n\t\t}\n\n\t\tfunction renderDay(day, events) {\n\t\t\tif(!events.length){\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tlet html = `\n
\n\t
${scheduler.templates.agenda_day(day)}
\n\t
\n`;\n\n\t\t\tevents.forEach((calendarEvent) => {\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\n\t\t\t});\n\n\t\t\thtml += `
`;\n\t\t\treturn html;\n\t\t}\n\n\t\tfunction renderOneEvent(day, calendarEvent){\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\n\t\t\tconst selectedId = scheduler.getState().select_id;\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\n\n\t\t\tlet style = \"\";\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\n\t\t\t}\n\n\t\t\treturn `
\n\t
\n\t
${dates}
\n\t
${description}
\n
`;\n\t\t}\n\t\n\t\tscheduler.agenda_view=function(mode){\n\t\t\tif (mode){\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\n\t\t\t\tscheduler._cols = null;\n\t\t\t\tscheduler._colsS = null;\n\t\t\t\tscheduler._table_view = true;\n\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\n\t\t\t\t//agenda tab activated\n\t\t\t\tfill_agenda_tab();\n\t\t\t} else {\n\t\t\t\tscheduler._table_view = false;\n\t\t\t\t//agenda tab de-activated\n\t\t\t}\n\t\t};\n\t});\n\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\n\t// \toldSelected.forEach((el) => {\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\n\t// \t});\n\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\n\t// \tif(selected){\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\n\t// \t}\n\t// });\n\t\n\t\n}","export default function(scheduler){\n\n\tscheduler.config.all_timed = \"short\";\n\tscheduler.config.all_timed_month = false;\n\n\tvar is_event_short = function (ev) {\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\n\t\t\treturn true;\n\t\t}\n\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\n\t\t\treturn true;\n\t\t}\n\t\treturn \tfalse;\n\t};\n\n\t// copy of usual events and recurring instances;\n\t// regular copy causes problems with recurrings which have series event as a prototype\n\tscheduler._safe_copy = function(event){\n\t\tvar proto = null,\n\t\t\tcopy = scheduler._copy_event(event);\n\t\tif(event.event_pid){\n\t\t\tproto = scheduler.getEvent(event.event_pid);\n\t\t}\n\n\t\tif (proto && proto.isPrototypeOf(event)) {\n\t\t\tdelete copy.event_length;\n\t\t\tdelete copy.event_pid;\n\t\t\tdelete copy.rec_pattern;\n\t\t\tdelete copy.rec_type;\n\t\t}\n\n\t\treturn copy;\n\t};\n\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\n\n\tvar prerender_events = function (evs, hold) {\n\t\tif (!this._table_view) {\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\n\t\t}\n\n\t\treturn old_prerender_events_table.call(this, evs, hold);\n\t};\n\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\n\t\tif (!this.config.all_timed ||\n\t\t\t(this._table_view && this._mode != \"month\") ||\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\n\t\t\treturn prerender_events.call(this, evs, hold);\n\n\t\tfor (var i=0; i < evs.length; i++) {\n\t\t\tvar ev=evs[i];\n\n\t\t\tif (ev._timed)\n\t\t\t\tcontinue;\n\n\t\t\tif (this.config.all_timed == \"short\") {\n\t\t\t\tif (!is_event_short(ev)) {\n\t\t\t\t\tif (this._mode != \"month\") {\n\t\t\t\t\t\tevs.splice(i--, 1);\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\n\t\t\tif(!ev._virtual){\n\t\t\t\tce._first_chunk = true;\n\t\t\t}else{\n\t\t\t\tce._first_chunk = false;\n\t\t\t}\n\t\t\tce._drag_resize = false;\n\t\t\tce._virtual = true;\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\n\n\t\t\tif (!isOvernightEvent(ev)) {\n\t\t\t\tce.end_date = new Date(ev.end_date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar event_changed = false;\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\n\t\t\t\tevs[i] = ce; // adding another event in collection\n\t\t\t\tevent_changed = true;\n\t\t\t}\n\t\t//\tif (ce.start_date > ce.end_date) {\n\t\t//\t\tevs.splice(i--,1);\n\t\t//\t}\n\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\n\t\t\tre._virtual = true;\n\t\t\tre.end_date = new Date(re.end_date);\n\t\t\tif (re.start_date < this._min_date)\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\n\t\t\telse\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\n\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\n\t\t\t\tif (event_changed){\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\n\t\t\t\t}else {\n\t\t\t\t\tevs[i--] = re;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tre._last_chunk = false;\n\t\t\t}else{\n\t\t\t\tce._last_chunk = true;\n\t\t\t\tce._drag_resize = true;\n\t\t\t}\n\n\t\t}\n\t\t// in case of all_timed pre_render is not applied to the original event\n\t\t// so we need to force redraw in case of dnd\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\n\t\treturn prerender_events.call(this, evs, redraw);\n\n\n\t\tfunction isOvernightEvent(ev){\n\t\t\tvar next_day = getNextDay(ev.start_date);\n\t\t\treturn (+ev.end_date > +next_day);\n\t\t}\n\t\tfunction getNextDay(date){\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\n\t\t\tnext_day = scheduler.date.date_part(next_day);\n\t\t\treturn next_day;\n\t\t}\n\t\tfunction setDateTime(date, hours){\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\n\t\t\tval.setHours(hours);\n\t\t\treturn val;\n\t\t}\n\t};\n\tvar old_get_visible_events = scheduler.get_visible_events;\n\tscheduler.get_visible_events = function(only_timed){\n\t\tif (!(this.config.all_timed && this.config.multi_day))\n\t\t\treturn old_get_visible_events.call(this, only_timed);\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\n\t};\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\n\t\treturn true;\n\t});\n\n\tscheduler._is_main_area_event = function(ev){\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\n\t};\n\n\tvar oldUpdate = scheduler.updateEvent;\n\tscheduler.updateEvent = function(id){\n\t\t// full redraw(update_render=true) messes events order while dnd.\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.\n\t\t// so for now full redraw is always enabled for not-dnd updates\n\t\tvar ev = scheduler.getEvent(id);\n\t\tvar fullRedrawNeeded;\n\t\tvar initial;\n\t\tif(ev) {\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\n\t\t\tif (fullRedrawNeeded) {\n\t\t\t\tinitial = scheduler.config.update_render;\n\t\t\t\tscheduler.config.update_render = true;\n\t\t\t}\n\t\t}\n\t\toldUpdate.apply(scheduler, arguments);\n\n\t\tif(ev) {\n\t\t\tif (fullRedrawNeeded) {\n\t\t\t\tscheduler.config.update_render = initial;\n\t\t\t}\n\t\t}\n\t};\n\n}","export default function(scheduler){\n\nvar temp_section;\nvar before;\n\nscheduler.config.collision_limit = 1;\n\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\n\tvar checked_mode = scheduler._get_section_view();\n\tif(checked_mode && event_id){\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\n\t}\n}\n\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\n\t_setTempSection(id);\n\treturn true;\n});\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\n\tvar ev = scheduler.getEvent(id);\n\tbefore = [ev.start_date, ev.end_date];\n\t_setTempSection(id);\n\treturn true;\n});\nscheduler.attachEvent(\"onEventChanged\",function(id){\n\tif (!id || !scheduler.getEvent(id)) return true;\n\tvar ev = scheduler.getEvent(id);\n\tif (!scheduler.checkCollision(ev)){\n\t\tif (!before) return false;\n\t\tev.start_date = before[0];\n\t\tev.end_date = before[1];\n\t\tev._timed=this.isOneDayEvent(ev);\n\t}\n\treturn true;\n});\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\n\treturn scheduler.checkCollision(ev);\n});\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\n\tvar result = scheduler.checkCollision(ev);\n\tif (!result)\n\t\tscheduler.deleteEvent(id);\n});\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\n\tedited_ev = scheduler._lame_clone(edited_ev);\n\tedited_ev.id = id;\n\n\t//lightbox may not have 'time' section\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\n\t\tvar ev = scheduler.getEvent(id);\n\t\tedited_ev.start_date = new Date(ev.start_date);\n\t\tedited_ev.end_date = new Date(ev.end_date);\n\t}\n\n\tif((edited_ev.rrule && !edited_ev.recurring_event_id) || edited_ev.rec_type){\n\t\tscheduler._roll_back_dates(edited_ev);\n\t}\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\n});\n\nscheduler._check_sections_collision = function(first, second){\n\tvar map_to = scheduler._get_section_property();\n\tif (first[map_to] == second[map_to] && first.id != second.id)\n\t\treturn true;\n\treturn false;\n};\n\nscheduler.checkCollision = function(ev) {\n\tvar evs = [];\n\tvar collision_limit = scheduler.config.collision_limit;\n\n\tif (ev.rrule || ev.rec_type) {\n\t\tvar evs_dates = scheduler.getRecDates(ev);\n\t\tfor(var k=0; k= collision_limit) {\n\n\t\t\tsingle = false;\n\t\t}\n\t}\n\telse {\n\t\tif ( evs.length >= collision_limit )\n\t\t\tsingle = false;\n\t}\n\tif (!single) {\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\n\t\tif (!res) {\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\n\t\t}\n\t\treturn res;\n\t}\n\treturn single;\n\n};\n\n}","export default function(scheduler){\n\n\tscheduler.config.container_autoresize = true;\n\tscheduler.config.month_day_min_height = 90;\n\tscheduler.config.min_grid_size = 25;\n\tscheduler.config.min_map_size = 400;\n\n\tvar old_pre_render_event = scheduler._pre_render_events;\n\n\t//need for temporary disabling without modifying public config\n\tvar active = true;\n\tvar total_height = 0;\n\tvar multiday_height = 0;\n\n\tscheduler._pre_render_events = function(evs, hold) {\n\t\tif (!(scheduler.config.container_autoresize && active)) {\n\t\t\treturn old_pre_render_event.apply(this, arguments);\n\t\t}\n\n\t\tvar hb = this.xy.bar_height;\n\t\tvar h_old = this._colsS.heights;\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\n\n\t\tif (!this._table_view)\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\n\t\telse\n\t\t\tevs = this._pre_render_events_table(evs, hold);\n\n\t\tif (this._table_view) {\n\t\t\tif (hold){\n\t\t\t\tthis._colsS.heights = h_old;\n\t\t\t} else {\n\t\t\t\tvar evl = data.firstChild;\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\n\t\t\t\tif (rows && rows.length) {\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\n\t\t\t\t\t\th[i]++;\n\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\n\t\t\t\t\t\t\t//we have overflow, update heights\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\n\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\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){\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\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){\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\n\t\t\t\t\t}\n\t\t\t\t\th.unshift(0);\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\n\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\n\t\t\t\t\t\th[0] = -1;\n\t\t\t\t\tif (evs.length || h[0] == -1) {\n\t\t\t\t\t\t//shift days to have space for multiday events\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\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\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdh += \"px\";\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\n\t\t\t\t\t\tlast.style.height = dh;\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\n\t\t\t\t\t\tlast.style.height = dh;\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\n\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\n\t\t\t\t\t\th[0] = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn evs;\n\t};\n\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\n\tvar updateContainterHeight = function(is_repaint) {\n\t\ttotal_height = 0;\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\n\n\t\t\tvar className = checked_divs[i];\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\n\t\t\tvar height = 0;\n\t\t\tswitch (className) {\n\t\t\t\tcase \"dhx_cal_navline\":\n\t\t\t\tcase \"dhx_cal_header\":\n\t\t\t\t\theight = checked_div.offsetHeight;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dhx_multi_day\":\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\n\t\t\t\t\tmultiday_height = height;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dhx_cal_data\":\n\t\t\t\t\tvar mode = scheduler.getState().mode;\n\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\n\t\t\t\t\t\tlet maxHeight = 0;\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\theight = maxHeight;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\n\t\t\t\t\t}\n\t\t\t\t\tif (mode == \"month\") {\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (is_repaint) {\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (mode == \"year\"){\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\n\t\t\t\t\t}\n\t\t\t\t\telse if(mode == \"agenda\"){\n\t\t\t\t\t\theight = 0;\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\theight += 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (mode == \"week_agenda\"){\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\n\t\t\t\t\t\t\tcur_height;\n\n\t\t\t\t\t\tvar column;\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\n\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\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;\n\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\theight = min_height * 3;\n\t\t\t\t\t}\n\t\t\t\t\telse if(mode == \"map\") {\n\t\t\t\t\t\theight = 0;\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\n\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\theight += 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if(scheduler._gridView) {\n\t\t\t\t\t\theight = 0;\n\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\n\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\theight += 2;\n\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\n\t\t\t\t\t\tif (is_repaint) {\n\t\t\t\t\t\t\theight += 0;\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\theight = 0;\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\n\t\t\t\t\t\t\t\theight += getScrollSize();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\theight -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\n\t\t\t\t\t\theight += 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\theight += 1;\n\t\t\ttotal_height += height;\n\t\t}\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\n\n\t\tif (!is_repaint)\n\t\t\tscheduler.updateView();\n\t};\n\n\tfunction callUpdate(){\n\t\tactive = false;\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\n\t\tactive = true;\n\t}\n\n\tvar conditionalUpdateContainerHeight = function() {\n\t\tif(!(scheduler.config.container_autoresize && active))\n\t\t\treturn true;\n\n\t\tvar mode = scheduler.getState().mode;\n\n\t\tif(!mode) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\n\t\tvar scrollTop = document.documentElement.scrollTop;\n\n\t\tasyncRepaint(function() {\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tupdateContainterHeight();\n\t\t});\n\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\n\t\t\tasyncRepaint(function() {\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tupdateContainterHeight(true);\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\n\t\t\t\tcallUpdate();\n\t\t\t}, 1);\n\t\t}else{\n\t\t\tcallUpdate();\n\t\t}\n\t};\n\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\n\t\tif(!scheduler.xy.$original_scroll_width){\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\n\t\t}\n\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\n\n\t\tif(scheduler.matrix){\n\t\t\tfor(var i in scheduler.matrix){\n\t\t\t\tvar timeline = scheduler.matrix[i];\n\t\t\t\tif(!timeline.$original_section_autoheight){\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\n\t\t\t\t}\n\t\t\t\tif(autosizeEnabled){\n\t\t\t\t\ttimeline.section_autoheight = false;\n\t\t\t\t}else{\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\n\n\t//disable container autoresize when expanded\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\n\t\tactive = false;\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\n\t\tactive = true;\n\t\treturn true;\n\t});\n\t// helper function\n\tfunction getScrollSize() {\n\t\tvar div = document.createElement(\"div\");\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;\";\n\n\t\tdocument.body.appendChild(div);\n\t\tvar size = div.offsetWidth - div.clientWidth;\n\t\tdocument.body.removeChild(div);\n\t\treturn size;\n\t}\n\n\n}","export default function(scheduler){\n\tfunction setCookie(name,cookie_param,value) {\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\n\t\tdocument.cookie = str;\n\t}\n\tfunction getCookie(name) {\n\t\tvar search = name + \"=\";\n\t\tif (document.cookie.length > 0) {\n\t\t\tvar offset = document.cookie.indexOf(search);\n\t\t\tif (offset != -1) {\n\t\t\t\toffset += search.length;\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\n\t\t\t\tif (end == -1)\n\t\t\t\t\tend = document.cookie.length;\n\t\t\t\treturn document.cookie.substring(offset, end);\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tfunction getCookieName(scheduler) {\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\n\t}\n\n\tvar first = true;\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\n\t\tif (first && scheduler._get_url_nav){\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\n\t\t\t\tfirst = false;\n\t\t\t}\n\t\t}\n\n\t\tvar cookie = getCookieName(scheduler);\n\n\t\tif (first){\n\t\t\tfirst = false;\n\t\t\tvar schedulerCookie = getCookie(cookie);\n\t\t\tif (schedulerCookie){\n\n\t\t\t\tif(!scheduler._min_date){\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\n\t\t\t\t\tscheduler._min_date = date;\n\t\t\t\t}\n\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\n\n\t\t\t\twindow.setTimeout(function(){\n\t\t\t\t\tif(scheduler.$destroyed){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscheduler.setCurrentView(date,view);\n\t\t\t\t},1);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\n\t\tvar cookie = getCookieName(scheduler);\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\n\t});\n\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)\n\tvar old_load = scheduler._load;\n\tscheduler._load = function() {\n\t\tvar args = arguments;\n\n\t\tif (!scheduler._date) {\n\t\t\tvar that = this;\n\t\t\twindow.setTimeout(function() {\n\t\t\t\told_load.apply(that, args);\n\t\t\t},1);\n\t\t} else {\n\t\t\told_load.apply(this, args);\n\t\t}\n\t};\n}","\nimport virtual_events_helpers from \"../core/virtual_events_helpers\";\n\nexport default function(scheduler){\n\tvirtual_events_helpers(scheduler);\n\tvar old_timeline = scheduler.createTimelineView;\n\n\tscheduler.createTimelineView = function (config) {\n\t\tif(config.render != 'days'){\n\t\t\told_timeline.apply(this, arguments);\n\t\t\treturn;\n\t\t}\n\n\t\tvar name = config.name;\n\n\t\tvar property = config.y_property = \"timeline-week\" + name;\n\t\tconfig.y_unit = [];\n\t\tconfig.render = \"bar\";\n\t\tconfig.days = config.days || 7;\n\n\t\told_timeline.call(this, config);\n\n\t\tscheduler.templates[name + \"_scalex_class\"] = function(){};\n\t\tscheduler.templates[name + \"_scaley_class\"] = function(){};\n\t\tscheduler.templates[name+\"_scale_label\"] = function(section_id, section_label, section_options){\n\t\t\treturn scheduler.templates.day_date(section_label);\n\t\t};\n\n\t\tscheduler.date[name + \"_start\"] = function (date) {\n\t\t\tdate = scheduler.date.week_start(date);\n\t\t\tdate = scheduler.date.add(date, config.x_step*config.x_start, config.x_unit);\n\t\t\treturn date;\n\t\t};\n\t\tscheduler.date[\"add_\" + name] = function (date, inc) {\n\t\t\treturn scheduler.date.add(date, inc*config.days, \"day\");\n\t\t};\n\n\t\tfunction initSections(){\n\t\t\tvar date = new Date(scheduler.getState().date);\n\t\t\tvar ds = scheduler.date[name + \"_start\"](date);\n\n\t\t\tds = scheduler.date.date_part(ds);\n\n\t\t\tvar list = [];\n\t\t\tvar obj = scheduler.matrix[name];\n\t\t\tobj.y_unit = list;\n\t\t\tobj.order = {};\n\n\t\t\tfor (var i = 0; i < config.days; i++) {\n\t\t\t\tlist.push({ key: +ds, label: ds });\n\n\t\t\t\tobj.order[obj.y_unit[i].key] = i;\n\t\t\t\tds = scheduler.date.add(ds, 1, \"day\");\n\t\t\t}\n\t\t}\n\t\tvar renderMatrix = scheduler._renderMatrix;\n\t\tscheduler._renderMatrix = function(mode, refresh){\n\t\t\tif(mode){\n\t\t\t\tinitSections();\n\t\t\t}\n\t\t\trenderMatrix.apply(this, arguments);\n\t\t};\n\n\t\t//copy all properties(not only hasOwnProperty)\n\t\tfunction copy_values(ev) {\n\t\t\tvar res = {};\n\t\t\tfor (var i in ev)\n\t\t\t\tres[i] = ev[i];\n\t\t\treturn res;\n\t\t}\n\t\t//ignore fake section id in week view\n\t\tvar oldCollision = scheduler.checkCollision;\n\t\tscheduler.checkCollision = function (ev) {\n\t\t\tif (ev[property]) {\n\t\t\t\tvar ev = copy_values(ev);\n\t\t\t\tdelete ev[property];\n\t\t\t}\n\t\t\treturn oldCollision.apply(scheduler, [ev]);\n\t\t};\n\n\n\t\tscheduler.attachEvent(\"onBeforeDrag\", function (id, drag_mode, e) {\n\t\t\tvar trg = e.target || e.srcElement;\n\t\t\tvar className = scheduler._getClassName(trg);\n\t\t\tif (drag_mode == 'resize') {\n\t\t\t\tif (className.indexOf(\"dhx_event_resize_end\") < 0) {\n\t\t\t\t\tscheduler._w_line_drag_from_start = true;\n\t\t\t\t} else {\n\t\t\t\t\tscheduler._w_line_drag_from_start = false;\n\t\t\t\t}\n\t\t\t}else if(drag_mode == 'move'){\n\t\t\t\tif (className.indexOf(\"no_drag_move\") >= 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t\tvar old_mouse = scheduler[\"mouse_\" + name];\n\t\tscheduler[\"mouse_\" + name] = function (pos) {\n\t\t\tvar move_delta;\n\t\t\t\tif(this._drag_event)\n\t\t\t\tmove_delta = this._drag_event._move_delta;\n\t\t\t\t\n\t\t\tvar obj = scheduler.matrix[this._mode];\n\n\t\t\tif (obj.scrollable && !pos.converted) {\n\t\t\t\tpos.converted =1;\n\t\t\t\tpos.x -= - obj._x_scroll;\n\t\t\t\tpos.y += obj._y_scroll;\n\t\t\t} \n\n\t\t\tif(move_delta === undefined && scheduler._drag_mode == \"move\"){\n\t\t\t\t\n\t\t\t\tvar pos_copy = {y : pos.y};\n\t\t\t\tscheduler._resolve_timeline_section(obj, pos_copy);\n\t\t\t\tvar x = pos.x - obj.dx;\n\n\t\t\t\tvar end_date = new Date(pos_copy.section);\n\t\t\t\tset_time_part(scheduler._timeline_drag_date(obj, x), end_date);\n\t\t\t\tvar drag_event = scheduler._drag_event;\n\n\t\t\t\tvar ev = this.getEvent(this._drag_id);\n\t\t\t\tif(ev){\n\t\t\t\t\tdrag_event._move_delta = (ev.start_date-end_date)/60000;\n\t\t\t\t\tif (this.config.preserve_length && pos._ignores){\n\t\t\t\t\t\tdrag_event._move_delta = this._get_real_event_length(ev.start_date,end_date, obj);\n\t\t\t\t\t\tdrag_event._event_length = this._get_real_event_length(ev.start_date,ev.end_date, obj);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar pos = old_mouse.apply(scheduler, arguments);\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"move\") {\n\n\t\t\t\tvar dat = null;\n\t\t\t\tif (scheduler._drag_event && scheduler._drag_event['timeline-week' + name]) {\n\t\t\t\t\tdat = new Date(scheduler._drag_event['timeline-week' + name]);\n\t\t\t\t} else {\n\t\t\t\t\tdat = new Date(pos.section);\n\t\t\t\t}\n\n\t\t\t\tpos.y += Math.round((dat - scheduler.date.date_part(new Date(scheduler._min_date))) / (1000 * 60 * this.config.time_step));\n\n\t\t\t\tif (scheduler._drag_mode == \"resize\") {\n\n\t\t\t\t\tpos.resize_from_start = scheduler._w_line_drag_from_start;\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (scheduler._drag_event) {\n\t\t\t\t\tvar days_y = Math.floor(Math.abs(pos.y / (24 * 60 / scheduler.config.time_step)));\n\t\t\t\t\tdays_y *= pos.y > 0 ? 1 : -1;\n\t\t\t\t\tpos.y = pos.y % (24 * 60 / scheduler.config.time_step);\n\t\t\t\t\tvar st_date = scheduler.date.date_part(new Date(scheduler._min_date));\n\t\t\t\t\tif (st_date.valueOf() != new Date(pos.section).valueOf()) {\n\t\t\t\t\t\tpos.x = Math.floor((pos.section - st_date) / (24 * 60 * 60000));\n\t\t\t\t\t\tpos.x += days_y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pos;\n\t\t};\n\n\t\tscheduler.attachEvent(\"onEventCreated\", function (id, e) {\n\t\t\tif (scheduler._events[id]) {\n\t\t\t\tdelete scheduler._events[id][property];//section of week-timeline is generated during rendering. storing it with data-items causes side-effects in collision ext\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\tscheduler.attachEvent(\"onBeforeEventChanged\", function (ev, e, flag, ev_old) {\n\t\t\tif (scheduler._events[ev.id]) {\n\t\t\t\tdelete scheduler._events[ev.id][property];//section of week-timeline is generated during rendering. storing it with data-items causes side-effects in collision ext\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tvar oldUpdateTimelineSection = scheduler._update_timeline_section;\n\t\tscheduler._update_timeline_section = function(action){\n\t\t\tvar event, storedEv;\n\t\t\tif (this._mode == name) {\n\t\t\t\tevent = action.event;\n\t\t\t\tif(event){\n\t\t\t\t\tstoredEv = scheduler._get_copied_event(event.id, scheduler.date.day_start(new Date(event.start_date.valueOf())));\n\t\t\t\t\tif(storedEv){\n\t\t\t\t\t\taction.event._sorder = storedEv._sorder;\n\t\t\t\t\t\taction.event._count = storedEv._count;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\toldUpdateTimelineSection.apply(this, arguments);\n\t\t\tif(event && storedEv){\n\t\t\t\tstoredEv._count = event._count;\n\t\t\t\tstoredEv._sorder = event._sorder;\n\t\t\t}\n\t\t};\n\n\t\tvar oldRender = scheduler.render_view_data;\n\t\tscheduler.render_view_data = function (evs, hold) {\n\t\t\tif (this._mode == name) {\n\t\t\t\tif (evs) {\n\t\t\t\t\tevs = week_line_dates(evs);\n\t\t\t\t\tscheduler._restore_render_flags(evs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn oldRender.apply(scheduler, [evs, hold]);\n\t\t};\n\t\tvar old_get_evs = scheduler.get_visible_events;\n\t\tscheduler.get_visible_events = function () {\n\t\t\tif (this._mode == name) {\n\t\t\t\tthis._clear_copied_events();\n\t\t\t\tscheduler._max_date = scheduler.date.date_part(scheduler.date.add(scheduler._min_date, config.days, \"day\"));\n\t\t\t\tvar evs = old_get_evs.apply(scheduler, arguments);\n\n\t\t\t\tevs = week_line_dates(evs);\n\t\t\t\tscheduler._register_copies_array(evs);\n\t\t\t\treturn evs;\n\t\t\t}\n\t\t\treturn old_get_evs.apply(scheduler, arguments);\n\t\t};\n\n\t\tvar old_add_event_now = scheduler.addEventNow;\n\t\tscheduler.addEventNow = function (event) {\n\t\t\tif (scheduler.getState().mode == name) {\n\t\t\t\tif (event[property]) {\n\t\t\t\t\tvar dat = new Date(event[property]);\n\t\t\t\t\tset_date_part(dat, event.start_date);\n\t\t\t\t\tset_date_part(dat, event.end_date);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar date = new Date(event.start_date);\n\t\t\t\t\tevent[property] = +scheduler.date.date_part(date);\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\treturn old_add_event_now.apply(scheduler, arguments);\n\t\t};\n\n\t\tfunction set_date_part(source, target) {\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\n\t\t\ttarget.setDate(1);\n\n\t\t\ttarget.setFullYear(source.getFullYear());\n\t\t\ttarget.setMonth(source.getMonth());\n\t\t\ttarget.setDate(source.getDate());\n\t\t}\n\n\t\tfunction week_line_dates(evs) {\n\t\t\tvar res = [];\n\t\t\tfor (var i =0; i < evs.length; i++) {\n\t\t\t\tvar ev = copy_timeline_event(evs[i]);\n\t\t\t\tif(!scheduler.isOneDayEvent(ev)){\n\n\t\t\t\t\tvar to = new Date(Math.min(+ev.end_date, +scheduler._max_date)),\n\t\t\t\t\t\tfrom = new Date(Math.max(+ev.start_date, +scheduler._min_date));\n\n\t\t\t\t\tvar multiday_chunks = [];\n\t\t\t\t\twhile(+from < +to){\n\t\t\t\t\t\tvar chunk = copy_timeline_event(ev);\n\t\t\t\t\t\tchunk.start_date = from;\n\t\t\t\t\t\tchunk.end_date = new Date(Math.min(+get_next_day(chunk.start_date), +to));\n\t\t\t\t\t\tfrom = get_next_day(from);\n\t\t\t\t\t\tweek_line_ev_date(chunk);\n\t\t\t\t\t\tres.push(chunk);\n\t\t\t\t\t\tmultiday_chunks.push(chunk);\n\t\t\t\t\t}\n\n\t\t\t\t\tset_resize_options(multiday_chunks, ev);\n\t\t\t\t}else{\n\t\t\t\t\tweek_line_ev_date(ev);\n\t\t\t\t\tres.push(ev);\n\t\t\t\t}\n\n\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tfunction set_resize_options(chunks, original){\n\t\t\tvar first = false;\n\t\t\tvar last = false;\n\t\t\tfor(var i = 0, len = chunks.length; i < len; i++){\n\t\t\t\tvar chunk = chunks[i];\n\t\t\t\tfirst = +chunk._w_start_date == +original.start_date;\n\t\t\t\tlast = +chunk._w_end_date == +original.end_date;\n\n\t\t\t\tchunk._no_resize_start = chunk._no_resize_end = true;\n\n\t\t\t\tif(first){\n\t\t\t\t\tchunk._no_resize_start = false;\n\t\t\t\t}\n\t\t\t\tif(last)\n\t\t\t\t\tchunk._no_resize_end = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction copy_timeline_event(ev){\n\t\t\tvar par = scheduler.getEvent(ev.event_pid);\n\t\t\tif (par && par.isPrototypeOf(ev)) {\n\t\t\t\tev = scheduler._copy_event(ev);\n\t\t\t\tdelete ev.event_length;\n\t\t\t\tdelete ev.event_pid;\n\t\t\t\tdelete ev.rec_pattern;\n\t\t\t\tdelete ev.rec_type;\n\t\t\t} else {\n\t\t\t\tev = scheduler._lame_clone(ev);\n\t\t\t}\n\t\t\treturn ev;\n\t\t}\n\t\tfunction week_line_ev_date(ev) {\n\t\t\tif (ev._w_start_date && ev._w_end_date) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar date = scheduler.date,\n\t\t\t\tstart = ev._w_start_date = new Date(ev.start_date),\n\t\t\t\tend = ev._w_end_date = new Date(ev.end_date);\n\t\t\tev[property] = +date.date_part(ev.start_date);\n\n\t\t\tif (!ev._count)\n\t\t\t\tev._count = 1;\n\t\t\tif (!ev._sorder)\n\t\t\t\tev._sorder = 0;\n\n\t\t\tvar duration = end - start;\n\t\t\tev.start_date = new Date(scheduler._min_date);\n\t\t\tset_time_part(start, ev.start_date);\n\t\t\tev.end_date = new Date(+ev.start_date + duration);\n\t\t\t//set_time_part(end, ev.end_date);\n\n\t\t\tif(start.getTimezoneOffset() != end.getTimezoneOffset()){\n\t\t\t\tev.end_date = new Date(ev.end_date.valueOf() + (start.getTimezoneOffset() - end.getTimezoneOffset())*(1000*60));\n\t\t\t}\n\t\t}\n\n\t\tfunction set_time_part(source, target) {\n\t\t\ttarget.setMinutes(source.getMinutes());\n\t\t\ttarget.setHours(source.getHours());\n\t\t}\n\t\tfunction get_next_day(date){\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\n\t\t\tnext_day = scheduler.date.date_part(next_day);\n\t\t\treturn next_day;\n\t\t}\n\n\t\tvar old_render_marked_timespan = scheduler._render_marked_timespan;\n\t\tscheduler._render_marked_timespan = function() {\n\t\t\tif (scheduler._mode == name) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn old_render_marked_timespan.apply(this, arguments);\n\t\t};\n\t};\n\n}","export default function(scheduler){\n/* global dhtmlXCombo */\nscheduler.form_blocks['combo']={\n\trender:function(sns) {\n\t\tif (!sns.cached_options)\n\t\t\tsns.cached_options = {};\n\t\tvar res = '';\n\t\tres += \"
\";\n\t\treturn res;\n\t},\n\tset_value:function(node,value,ev,config){\n\t\t(function(){\n\t\t\tresetCombo();\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\n\t\t\t\tresetCombo();\n\t\t\t\tscheduler.detachEvent(id);\n\t\t\t});\n\t\t\tfunction resetCombo(){\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\n\t\t\t\t\tvar combo = node._combo;\n\t\t\t\t\tif(combo.unload){\n\t\t\t\t\t\tcombo.unload();\n\t\t\t\t\t}else if(combo.destructor){\n\t\t\t\t\t\tcombo.destructor();\n\t\t\t\t\t}\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\n\t\tif (config.onchange)\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\n\n\t\tif (config.options_height)\n\t\t\tnode._combo.setOptionHeight(config.options_height);\n\t\tvar combo = node._combo;\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\n\n\t\tif (!config.script_path) { // script-side filtration is used\n\t\t\tvar all_options = [];\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\n\t\t\t\tvar option = config.options[i];\n\t\t\t\tvar single_option = [\n\t\t\t\t\toption.key,\n\t\t\t\t\toption.label,\n\t\t\t\t\toption.css\n\t\t\t\t];\n\t\t\t\tall_options.push(single_option);\n\t\t\t}\n\t\t\tcombo.addOption(all_options);\n\t\t\tif (ev[config.map_to]) {\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\n\t\t\t\tcombo.selectOption(index);\n\t\t\t}\n\t\t} else { // server-side filtration is used\n\t\t\tvar selected_id = ev[config.map_to];\n\t\t\tif (selected_id) {\n\t\t\t\tif (config.cached_options[selected_id]) {\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\n\t\t\t\t\tcombo.disable(1);\n\t\t\t\t\tcombo.selectOption(0);\n\t\t\t\t\tcombo.disable(0);\n\t\t\t\t} else {\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\n\t\t\t\t\t\tvar label;\n\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\n\t\t\t\t\t\t\tlabel = res.options[0].text;\n\t\t\t\t\t\t}catch(e){\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\n\t\t\t\t\t\tcombo.disable(1);\n\t\t\t\t\t\tcombo.selectOption(0);\n\t\t\t\t\t\tcombo.disable(0);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcombo.setComboValue(\"\");\n\t\t\t}\n\t\t}\n\t},\n\tget_value:function(node,ev,config) {\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\n\t\tif (config.script_path) {\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\n\t\t}\n\t\treturn selected_id;\n\t},\n\tfocus:function(node){\n\t}\n};\n\nscheduler.form_blocks['radio']={\n\trender:function(sns) {\n\t\tvar res = '';\n\t\tres += `
`;\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\n\t\t}\n\t\tres += \"
\";\n\n\t\treturn res;\n\t},\n\tset_value:function(node,value,ev,config){\n\t\tvar radiobuttons = node.getElementsByTagName('input');\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\n\t\t\tradiobuttons[i].checked = false;\n\t\t\tvar checked_value = ev[config.map_to]||value;\n\t\t\tif (radiobuttons[i].value == checked_value) {\n\t\t\t\tradiobuttons[i].checked = true;\n\t\t\t}\n\t\t}\n\t},\n\tget_value:function(node,ev,config){\n\t\tvar radiobuttons = node.getElementsByTagName('input');\n\t\tfor(var i=0; i
';\n\t\telse\n\t\t\treturn '';\n\t},\n\tset_value:function(node,value,ev,config){\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\n\t\tvar id = scheduler.uid();\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\n\t\tnode.className += \" dhx_cal_checkbox\";\n\t\tvar check_html = \"\";\n\t\tvar label_html = \"\";\n\t\tif (scheduler.config.wide_form){\n\t\t\tnode.innerHTML = label_html;\n\t\t\tnode.nextSibling.innerHTML=check_html;\n\t\t} else\n\t\t\tnode.innerHTML=check_html+label_html;\n\n\t\tif (config.handler) {\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\n\t\t\tif(checkbox.$_eventAttached){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcheckbox.$_eventAttached = true;\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\n\t\t\t//checkbox.onclick = config.handler;\n\t\t}\n\t},\n\tget_value:function(node,ev,config){\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\n\t\tif (!checkbox)\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\n\t},\n\tfocus:function(node){\n\t}\n};\n\n\n}","export default function(scheduler){\n\nscheduler.ext.fullscreen = {\n\ttoggleIcon: null\n};\n\nscheduler.expand = function() {\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\n\t\treturn;\n\tvar t = scheduler._obj;\n\tdo {\n\t\tt._position = t.style.position || \"\";\n\t\tt.style.position = \"static\";\n\t} while ((t = t.parentNode) && t.style);\n\tt = scheduler._obj;\n\tt.style.position = \"absolute\";\n\tt._width = t.style.width;\n\tt._height = t.style.height;\n\tt.style.width = t.style.height = \"100%\";\n\tt.style.top = t.style.left = \"0px\";\n\n\tvar top = document.body;\n\ttop.scrollTop = 0;\n\n\ttop = top.parentNode;\n\tif (top)\n\t\ttop.scrollTop = 0;\n\tdocument.body._overflow = document.body.style.overflow || \"\";\n\tdocument.body.style.overflow = \"hidden\";\n\tscheduler._maximize();\n\tscheduler.callEvent(\"onExpand\", []);\n};\nscheduler.collapse = function() {\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\n\t\treturn;\n\tvar t = scheduler._obj;\n\tdo {\n\t\tt.style.position = t._position;\n\t} while ((t = t.parentNode) && t.style);\n\tt = scheduler._obj;\n\tt.style.width = t._width;\n\tt.style.height = t._height;\n\tdocument.body.style.overflow = document.body._overflow;\n\tscheduler._maximize();\n\tscheduler.callEvent(\"onCollapse\", []);\n};\nscheduler.attachEvent(\"onTemplatesReady\", function() {\n\tvar t = document.createElement(\"div\");\n\tt.className = \"dhx_expand_icon\";\n\tscheduler.ext.fullscreen.toggleIcon = t;\n\tt.innerHTML = `\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t`;\n\tscheduler._obj.appendChild(t);\n\tscheduler.event(t, \"click\", function() {\n\t\tif (!scheduler.expanded)\n\t\t\tscheduler.expand(); else\n\t\t\tscheduler.collapse();\n\t});\n});\nscheduler._maximize = function() {\n\tthis.expanded = !this.expanded;\n\tif(this.expanded){\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\n\t\t\n\t}else{\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\n\t}\n\t\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\n\n\tvar directions = ['left', 'top'];\n\tfor (var i = 0; i < directions.length; i++) {\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\n\t\t} else {\n\t\t\tif (prev_margin) {\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\tscheduler.setCurrentView();\n};\n\n\n}\n","export default function(scheduler){\n\n\n(function(){\n\nfunction defaults(obj, std){\n\tfor (var key in std)\n\t\tif (!obj[key])\n\t\t\tobj[key] = std[key];\n\treturn obj;\n}\n\nfunction getElementSizes(element, scheduler) {\n\tvar sizes = {};\n\telement = scheduler._els[element];\n\tif (element && element[0]) {\n\t\tsizes.x = element[0].scrollWidth;\n\t\tsizes.y = element[0].scrollHeight;\n\t} else {\n\t\tsizes.x = 0;\n\t\tsizes.y = 0;\n\t}\n\treturn sizes;\n}\n\n//compatibility for new versions of scheduler\nif(!window.dhtmlxAjax){\n\twindow.dhtmlxAjax = {\n\t\tpost: function(url, data, callback){\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\n\t\t},\n\t\tget: function(url, callback){\n\t\t\treturn window.ajax.get(url, callback);\n\t\t}\n\t};\n}\n\nfunction add_export_methods(scheduler){\n\n\tscheduler.exportToPDF = function(config){\n\t\tconfig = defaults((config || {}), {\n\t\t\tname:\"calendar.pdf\",\n\t\t\tformat:\"A4\",\n\t\t\torientation:\"landscape\",\n\t\t\tdpi:96,\n\t\t\tzoom:1,\n\t\t\trtl: scheduler.config.rtl\n\t\t});\n\t\tconfig.html = this._export_html(config);\n\t\tconfig.mode = this.getState().mode;\n\t\tthis._send_to_export(config, \"pdf\");\n\t};\n\n\tscheduler.exportToPNG = function(config){\n\t\tconfig = defaults((config || {}), {\n\t\t\tname:\"calendar.png\",\n\t\t\tformat:\"A4\",\n\t\t\torientation:\"landscape\",\n\t\t\tdpi:96,\n\t\t\tzoom:1,\n\t\t\trtl: scheduler.config.rtl\n\t\t});\n\t\tconfig.html = this._export_html(config);\n\t\tconfig.mode = this.getState().mode;\n\t\tthis._send_to_export(config, \"png\");\n\t};\n\n\tscheduler.exportToICal = function(config){\n\t\tconfig = defaults((config || {}), {\n\t\t\tname:\"calendar.ical\",\n\t\t\tdata:this._serialize_plain(null, config)\n\t\t});\n\t\tthis._send_to_export(config, \"ical\");\n\t};\n\n\tscheduler.exportToExcel = function(config){\n\t\tconfig = defaults((config || {}), {\n\t\t\tname:\"calendar.xlsx\",\n\t\t\ttitle:\"Events\",\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\n\t\t\tcolumns:this._serialize_columns()\n\t\t});\n\t\tthis._send_to_export(config, \"excel\");\n\t};\n\n\tscheduler._ajax_to_export = function(data, type, callback){\n\t\tdelete data.callback;\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\n\n\t\twindow.dhtmlxAjax.post(url,\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\n\t\t\tfunction(loader){\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\n\t\t\t\tvar info = null;\n\n\t\t\t\tif (!fail){\n\t\t\t\t\ttry{\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\n\t\t\t\t\t}catch(e){}\n\t\t\t\t}\n\t\t\t\tcallback(info);\n\t\t\t}\n\t\t);\n\t};\n\n\tscheduler._plain_export_copy = function(source, format){\n\t\tvar target = {};\n\t\tfor (var key in source)\n\t\t\ttarget[key] = source[key];\n\n\t\ttarget.start_date = format(target.start_date);\n\t\ttarget.end_date = format(target.end_date);\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\n\n\t\treturn target;\n\t};\n\n\tscheduler._serialize_plain = function(format, config){\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\n\n\t\tvar events;\n\t\tif (config && config.start && config.end)\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\n\t\telse\n\t\t\tevents = scheduler.getEvents();\n\n\t\tvar data = [];\n\t\tfor (var i = 0; i< events.length; i++)\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\n\n\t\treturn data;\n\t};\n\n\tscheduler._serialize_columns = function(){\n\t\treturn [\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\n\t\t];\n\t};\n\n\tscheduler._send_to_export = function(data, type){\n\t\tif(!data.version){\n\t\t\tdata.version = scheduler.version;\n\t\t}\n\n\t\tif(!data.skin){\n\t\t\tdata.skin = scheduler.skin;\n\t\t}\n\n\t\tif (data.callback)\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\n\n\t\tvar form = this._create_hidden_form();\n\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\n\t\tform.firstChild.childNodes[1].value = type;\n\t\tform.firstChild.submit();\n\t};\n\n\tscheduler._create_hidden_form = function(){\n\t\tif (!this._hidden_export_form){\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\n\t\t\tt.style.display = \"none\";\n\t\t\tt.innerHTML = \"
\";\n\t\t\tdocument.body.appendChild(t);\n\t\t}\n\t\treturn this._hidden_export_form;\n\t};\n\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\n\n\t\tdpi = parseInt(dpi)/25.4 || 4;\n\n\t\tvar sizes = {\n\t\t\t\"A5\":{ x:148, y:210 },\n\t\t\t\"A4\":{ x:210, y:297 },\n\t\t\t\"A3\":{ x:297, y:420 },\n\t\t\t\"A2\":{ x:420, y:594 },\n\t\t\t\"A1\":{ x:594, y:841 },\n\t\t\t\"A0\":{ x:841, y:1189 }\n\t\t};\n\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\n\n\t\tvar cSize = {\n\t\t\ty: dataY + headY + multY\n\t\t};\n\n\t\tif (format === \"full\") {\n\t\t\tcSize.x = dataX;\n\t\t} else {\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\n\t\t}\n\n\t\tif (scales) {\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\n\t\t}\n\n\t\treturn cSize;\n\t};\n\n\tfunction getTimeline() {\n\t\tvar mode = scheduler.getState().mode;\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\n\t\t\treturn scheduler.matrix[mode];\n\t\t}\n\t\treturn null;\n\t}\n\n\tfunction getInitialSizes() {\n\t\tvar smartRendering = undefined,\n\t\t\tscrollable = undefined;\n\n\t\tvar timeline = getTimeline();\n\t\tif (timeline) {\n\t\t\tscrollable = timeline.scrollable;\n\t\t\tsmartRendering = timeline.smart_rendering;\n\t\t}\n\n\t\treturn {\n\t\t\tnav_height: scheduler.xy.nav_height,\n\t\t\tscroll_width: scheduler.xy.scroll_width,\n\t\t\tstyle_width: scheduler._obj.style.width,\n\t\t\tstyle_height: scheduler._obj.style.height,\n\t\t\ttimeline_scrollable: scrollable,\n\t\t\ttimeline_smart_rendering: smartRendering\n\t\t};\n\t}\n\n\tfunction setExportSizes(size, initialSizes) {\n\t\tscheduler._obj.style.width = size.x + \"px\";\n\t\tscheduler._obj.style.height = size.y + \"px\";\n\n\t\tscheduler.xy.nav_height = 0;\n\t\tscheduler.xy.scroll_width = 0;\n\n\t\tvar timeline = getTimeline();\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\n\n\t\t\ttimeline.scrollable = false;\n\t\t\ttimeline.smart_rendering = false;\n\t\t}\n\t}\n\n\tfunction setInitialSizes(initialSizes) {\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\n\t\tscheduler._obj.style.width = initialSizes.style_width;\n\t\tscheduler._obj.style.height = initialSizes.style_height;\n\n\t\tvar timeline = getTimeline();\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\n\t\t}\n\t}\n\n\tscheduler._export_html = function (obj) {\n\t\tvar initialSizes = getInitialSizes();\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\n\n\t\tvar html = \"\";\n\t\ttry {\n\t\t\tsetExportSizes(size, initialSizes);\n\t\t\tscheduler.setCurrentView();\n\t\t\thtml = scheduler._obj.innerHTML;\n\t\t} catch (e) {\n\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(e);\n\t\t} finally {\n\t\t\tsetInitialSizes(initialSizes);\n\t\t\tscheduler.setCurrentView();\n\t\t}\n\n\t\treturn html;\n\t};\n\n}\n\nadd_export_methods(scheduler);\n\n\n})();\n\n}","export default function(scheduler){\n\n(function(){\n\tscheduler._grid = {\n\t\tnames: {},\n\t\tsort_rules:{\n\t\t\t\"int\":function(a,b, getVal){ return getVal(a)*1 < getVal(b)*1?1:-1; },\n\t\t\t\"str\":function(a,b, getVal){ return getVal(a) < getVal(b)?1:-1; },\n\t\t\t\"date\":function(a,b, getVal){ return new Date(getVal(a))< new Date(getVal(b))?1:-1; }\n\t\t},\n\t\t_getObjName:function(name){\n\t\t\treturn \"grid_\"+name;\n\t\t},\n\t\t_getViewName:function(objName){\n\t\t\treturn objName.replace(/^grid_/,'');\n\t\t}\n\t};\n}\n)();\n/*\nobj={\n name:'grid_name'\n\tfields:[\n { id:\"id\", label:\"Id\", width:80, sort:\"int/date/str\", template:function(start_date, end_date, ev){ return \"\"}, align:\"right/left/center\" },\n { id:\"text\", label:\"Text\", width:'*', css:\"class_name\", sort:function(a,b){ return 1 or -1}, valign:'top/bottom/middle' }\n ...\n ],\n\tfrom:new Date(0),\n\tto:Date:new Date(9999,1,1),\n\trowHeight:int,\n\tpaging:true/false,\n\tselect:true/false\n}\n*/\n\n\nscheduler.createGridView=function(obj){\n\tvar name = obj.name || 'grid';\n\tvar objName = scheduler._grid._getObjName(name);\n\n\tscheduler._grid.names[name] = name;\n\tscheduler.config[name + '_start'] = obj.from || (new Date(0));\n\tscheduler.config[name + '_end'] = obj.to || (new Date(9999,1,1));\n\n\tscheduler[objName] = obj;\n\tscheduler[objName].defPadding = 8;\n\tscheduler[objName].columns = scheduler[objName].fields;\n\tscheduler[objName].unit = obj.unit || \"month\";\n\tscheduler[objName].step = obj.step || 1;\n\tdelete scheduler[objName].fields;\n\tfunction isValidSize(size){\n\t\treturn !(size !== undefined && (size*1 != size || size < 0));\n\t}\n\n\tvar cols = scheduler[objName].columns;\n\tfor(var i=0; i < cols.length; i++){\n\t\tif(isValidSize(cols[i].width))\n\t\t\tcols[i].initialWidth = cols[i].width;\n\t\tif(!isValidSize(cols[i].paddingLeft))\n\t\t\tdelete cols[i].paddingLeft;\n\t\tif(!isValidSize(cols[i].paddingRight))\n\t\t\tdelete cols[i].paddingRight;\n\t}\n\n\tscheduler[objName].select = obj.select === undefined ? true : obj.select;\n\tif(scheduler.locale.labels[name +'_tab'] === undefined)\n\t\tscheduler.locale.labels[name +'_tab'] = scheduler[objName].label || scheduler.locale.labels.grid_tab;\n\n\tscheduler[objName]._selected_divs = [];\n\n\tscheduler.date[name+'_start']=function(d){\n\t\tif(scheduler.date[obj.unit+'_start'])\n\t\t\treturn scheduler.date[obj.unit+'_start'](d);\n\t\telse\n\t\t\treturn (d);\n\t};\n\tscheduler.date['add_' + name] = function(date, inc){\n\t\treturn scheduler.date.add(date, inc*scheduler[objName].step, scheduler[objName].unit);\n\t};\n\n\tscheduler.templates[name+\"_date\"] = function(start, end){\n\t\tif (scheduler.config.rtl) {\n\t\t\treturn scheduler.templates.day_date(end)+\" - \"+scheduler.templates.day_date(start);\n\t\t} else {\n\t\t\treturn scheduler.templates.day_date(start)+\" - \"+scheduler.templates.day_date(end);\n\t\t}\n\t};\n\tscheduler.templates[name + '_full_date'] = function(start,end,ev){\n\t\tif (scheduler.isOneDayEvent(ev)) {\n\t\t\treturn this[name + '_single_date'](start);\n\t\t} else if (scheduler.config.rtl) {\n\t\t\treturn scheduler.templates.day_date(end)+\" – \"+scheduler.templates.day_date(start);\n\t\t} else {\n\t\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\n\t\t}\n\t};\n\tscheduler.templates[name + '_single_date'] = function(date){\n\t\treturn scheduler.templates.day_date(date)+\" \"+this.event_date(date);\n\t};\n\tscheduler.templates[name + '_field'] = function(field_name, event){\n\t\treturn event[field_name];\n\t};\n\n\tscheduler.attachEvent(\"onTemplatesReady\",function(){\n\t\tscheduler.attachEvent(\"onEventSelected\", function(id){\n\t\t\tif(this._mode == name && scheduler[objName].select ){\n\t\t\t\tscheduler._grid.selectEvent(id, name);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tscheduler.attachEvent(\"onEventUnselected\", function(id){\n\t\t\tif(this._mode == name && scheduler[objName].select ){\n\t\t\t\tscheduler._grid.unselectEvent('', name);\n\t\t\t}\n\t\t});\n\n\t\tvar old = scheduler.render_data;\n\t\tscheduler.render_data=function(evs){\n\t\t\tif (this._mode == name)\n\t\t\t\tscheduler._grid._fill_grid_tab(objName);\n\t\t\telse\n\t\t\t\treturn old.apply(this,arguments);\n\t\t};\n\n\t\tvar old_render_view_data = scheduler.render_view_data;\n\t\tscheduler.render_view_data=function(){\n\t\t\tvar data_container = scheduler._els[\"dhx_cal_data\"][0].lastChild;\n\t\t\tif(this._mode == name && data_container) {\n\t\t\t\tscheduler._grid._gridScrollTop = data_container.scrollTop;\n\t\t\t}\n\n\t\t\treturn old_render_view_data.apply(this,arguments);\n\t\t};\n});\n\n\n\tscheduler[name+'_view']=function(mode){\n\t\tscheduler._grid._sort_marker = null;\n\t\tdelete scheduler._gridView;\n\t\tscheduler._grid._gridScrollTop = 0;\n\t\tscheduler._rendered=[];\n\t\tscheduler[objName]._selected_divs = [];\n\n\t\tif (mode){\n\t\t\tvar min = null,\n\t\t\t\tmax = null;\n\t\t\tvar view = scheduler[objName];\n\t\t\tif(view.paging){\n\t\t\t\tmin = scheduler.date[name+'_start'](new Date(scheduler._date));\n\t\t\t\tmax = scheduler.date['add_'+name](min, 1);\n\t\t\t}else{\n\t\t\t\tmin = scheduler.config[name + '_start'];\n\t\t\t\tmax = scheduler.config[name + '_end'];\n\t\t\t}\n\n\t\t\tscheduler._min_date = min;\n\t\t\tscheduler._max_date = max;\n\n\t\t\tscheduler._grid.set_full_view(objName);\n\n\t\t\tvar header = \"\";\n\t\t\tif(+min > +new Date(0) && +max < +(new Date(9999,1,1))){\n\t\t\t\theader = scheduler.templates[name+\"_date\"](min, max);\n\t\t\t}\n\n\t\t\tvar dateElement = scheduler._getNavDateElement();\n\t\t\tif(dateElement){\n\t\t\t\tdateElement.innerHTML=header;\n\t\t\t}\n\n\t\t\t//grid tab activated\n\t\t\tscheduler._gridView = objName;\n\t\t} else {\n\t\t\t//grid tab de-activated\n\t\t}\n\t};\n\n\n};\n\n\nscheduler.dblclick_dhx_grid_area=function(){\n\tif (!this.config.readonly && this.config.dblclick_create)\n\t\tthis.addEventNow();\n};\n\nif(scheduler._click.dhx_cal_header){\n\tscheduler._old_header_click = scheduler._click.dhx_cal_header;\n}\nscheduler._click.dhx_cal_header=function(e){\n\tif(scheduler._gridView){\n\t\tvar event = e||window.event;\n\n\t\tvar column = scheduler._grid._get_target_column(event, scheduler._gridView);\n\t\tscheduler._grid._toggle_sort_state(scheduler._gridView, column.id);\n\t\tscheduler.clear_view();\n\t\tscheduler._grid._fill_grid_tab(scheduler._gridView);\n\t}\n\telse if(scheduler._old_header_click)\n\t\treturn scheduler._old_header_click.apply(this,arguments);\n};\n\nscheduler._grid.selectEvent = function(id, view_name){\n\tif(scheduler.callEvent(\"onBeforeRowSelect\",[id])){\n\t\tvar objName = scheduler._grid._getObjName(view_name);\n\n\t\tscheduler.for_rendered(id, function(event_div){\n\t\t\tevent_div.classList.add(\"dhx_grid_event_selected\");\n\t\t\tscheduler[objName]._selected_divs.push(event_div);\n\t\t});\n\t//\tscheduler._select_id = id;\n\t}\n};\n\nscheduler._grid._unselectDiv= function(div){\n\tdiv.className = div.classList.remove(\"dhx_grid_event_selected\");\n};\nscheduler._grid.unselectEvent = function(id, view_name){\n\tvar objName = scheduler._grid._getObjName(view_name);\n\tif(!objName || !scheduler[objName]._selected_divs)\n\t\treturn;\n\n\tif(!id){\n\t\tfor(var i=0; i \";\n\t\tnode.innerHTML += html;\n\t}\n};\n\nscheduler._grid.sort_grid=function(sort){\n\n\tsort = sort || {direction:'desc', value:function(ev){return ev.start_date;}, rule:scheduler._grid.sort_rules['date']};\n\n\tvar events = scheduler.get_visible_events();\n\n\tevents.sort(function(a,b){return sort.rule(a,b,sort.value);});\n\tif(sort.direction == 'asc'){\n\t\tevents = events.reverse();\n\t}\n\treturn events;\n};\n\n\n\nscheduler._grid.set_full_view = function(mode){\n\tif (mode){\n\t\t//var l = scheduler.locale.labels;\n\t\tvar html =scheduler._grid._print_grid_header(mode);\n\n\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML= html;\n\t\tscheduler._table_view=true;\n\t\tscheduler.set_sizes();\n\t}\n};\nscheduler._grid._calcPadding = function(column, parent){\n\treturn (column.paddingLeft !== undefined ? 1*column.paddingLeft : scheduler[parent].defPadding) +\n\t\t(column.paddingRight !== undefined ? 1*column.paddingRight : scheduler[parent].defPadding);\n};\n\nscheduler._grid._getStyles = function(column, items){\n\tvar cell_style = [], style = \"\";\n\tfor(var i=0; items[i]; i++ ){\n\t\tstyle = items[i] + \":\";\n\t\tswitch (items[i]){\n\t\t\tcase \"text-align\":\n\t\t\t\tif(column.align)\n\t\t\t\t\tcell_style.push(style+column.align);\n\t\t\t\tbreak;\n\t\t\tcase \"vertical-align\":\n\t\t\t\tif(column.valign)\n\t\t\t\t\tcell_style.push(style+column.valign);\n\t\t\t\tbreak;\n\t\t\tcase \"padding-left\":\n\t\t\t\tif(column.paddingLeft !== undefined)\n\t\t\t\t\tcell_style.push(style+(column.paddingLeft||'0') + \"px\");\n\t\t\t\tbreak;\n\t\t\tcase \"padding-right\":\n\t\t\t\tif(column.paddingRight !== undefined)\n\t\t\t\t\tcell_style.push(style+(column.paddingRight||'0') + \"px\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn cell_style;\n};\n\nscheduler._grid._get_column_node = function(columns, id){\n\tvar index = -1;\n\tfor(var i = 0; i < columns.length; i++){\n\t\tif(columns[i].id == id){\n\t\t\tindex = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(index < 0) return null;\n\n\treturn scheduler._obj.querySelectorAll(\".dhx_grid_line > div\")[index];\n};\n\nscheduler._grid._get_sort_rule = function(objName){\n\tvar grid = scheduler[objName];\n\tvar sort = this._get_sort_state(objName);\n\tvar sortRule;\n\tif(sort){\n\t\tvar column;\n\n\t\tfor(var i = 0; i < grid.columns.length; i++){\n\t\t\tif(grid.columns[i].id == sort.column){\n\t\t\t\tcolumn = grid.columns[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(column){\n\t\t\tvar value = scheduler._grid._get_sort_value_for_column(column);\n\n\t\t\tvar rule = column.sort;\n\t\t\tif(typeof rule != 'function'){\n\t\t\t\trule = scheduler._grid.sort_rules[rule] || scheduler._grid.sort_rules['str'];\n\t\t\t}\n\n\t\t\tsortRule = {direction: sort.direction, rule: rule, value: value};\n\t\t}\n\t}\n\treturn sortRule;\n};\n\nscheduler._grid._fill_grid_tab = function(objName){\n\tvar grid = scheduler[objName];\n\tvar sort = this._get_sort_state(objName);\n\n\tvar sortRule = this._get_sort_rule(objName);\n\n\tif(sortRule) {\n\t\tscheduler._grid.draw_sort_marker(grid.columns, sort);\n\t}\n\n\t//get current date\n\t//var date = scheduler._date;\n\t//select events for which data need to be printed\n\tvar events = scheduler._grid.sort_grid(sortRule);\n\n\t//generate html for the view\n\tvar columns = scheduler[objName].columns;\n\n\tvar html = \"
\";\n\tvar left = -1;//column borders at the same pos as header borders...\n\tfor(var i=0; i < columns.length; i++){\n\t//\tvar padding = scheduler._grid._calcPadding(columns[i], objName);\n\t\tleft +=columns[i].width;// + padding;\n\t\tif(i < columns.length - 1){\n\t\t\tvar pos = scheduler.config.rtl ? \"right\" : \"left\";\n\t\t\thtml += \"
\";\n\t\t}\n\t}\n\thtml += \"
\";\n\n\tvar ariaAttr = scheduler._waiAria.gridAttrString();\n\thtml +=\"
\";\n\n\tfor (var i=0; i\";\n\t//render html\n\n\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\n\tscheduler._els[\"dhx_cal_data\"][0].lastChild.scrollTop = scheduler._grid._gridScrollTop||0;\n\n\tvar t=scheduler._els[\"dhx_cal_data\"][0].getElementsByTagName(\"tr\");\n\n\tscheduler._rendered=[];\n\tfor (var i=0; i < t.length; i++){\n\t\tscheduler._rendered[i]=t[i];\n\t}\n\n};\n\nscheduler._grid._getCellContent = function(event, column){\n\tvar value;\n\tvar viewName = scheduler.getState().mode;\n\n\tif(column.template){\n\t\tvalue = column.template(event.start_date, event.end_date, event);\n\t}else if(column.id == 'date'){\n\t\tvalue = scheduler.templates[viewName + '_full_date'](event.start_date, event.end_date, event);\n\t}else if(column.id == 'start_date' || column.id == 'end_date' ){\n\t\tvalue = scheduler.templates[viewName + '_single_date'](event[column.id]);\n\t}else{\n\t\tvalue = scheduler.templates[viewName + '_field'](column.id, event);\n\t}\n\treturn value;\n};\n\nscheduler._grid._print_event_row = function(ev, objName){\n\n\tvar styles = [];\n\tif(ev.color)\n\t\tstyles.push(\"--dhx-scheduler-event-background:\"+ev.color);\n\tif(ev.textColor)\n\t\tstyles.push(\"--dhx-scheduler-event-color:\"+ev.textColor);\n\tif(ev._text_style)\n\t\tstyles.push(ev._text_style);\n\tif(scheduler[objName]['rowHeight'])\n\t\t\tstyles.push('height:'+scheduler[objName]['rowHeight'] + 'px');\n\n\tvar style = \"\";\n\tif(styles.length){\n\t\tstyle = \"style='\"+styles.join(\";\")+\"'\";\n\t}\n\n\tvar columns = scheduler[objName].columns;\n\tvar ev_class = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\n\tif(scheduler.getState().select_id == ev.id){\n\t\tev_class += \" dhx_grid_event_selected\";\n\t}\n\n\tvar ariaRowAttr = scheduler._waiAria.gridRowAttrString(ev);\n\n\tvar html =\"\";\n\n\t//var name = scheduler._grid._getViewName(objName);\n\tvar availStyles = [\"text-align\", \"vertical-align\", \"padding-left\",\"padding-right\"];\n\tfor(var i =0; i < columns.length; i++){\n\t\tvar value = scheduler._grid._getCellContent(ev, columns[i]);\n\t\tvar ariaCellAttribute = scheduler._waiAria.gridCellAttrString(ev, columns[i], value);\n\n\t\tvar cell_style = scheduler._grid._getStyles(columns[i], availStyles);\n\n\t\tvar className = columns[i].css ? (\" class=\\\"\"+columns[i].css+\"\\\"\") : \"\";\n\n\t\thtml+= \"\";\n\n\t}\n\thtml+=\"\";\n\n\treturn html;\n};\n\nscheduler._grid._print_grid_header = function(objName){\n\tvar head = \"
\";\n\n\tvar columns = scheduler[objName].columns;\n\tvar widths = [];\n\n\tvar unsized_columns = columns.length;\n\tvar avail_width = scheduler._obj.clientWidth - 2*columns.length -20;//-20 for possible scrollbar, -length for borders\n\tfor(var ind=0; ind < columns.length; ind++){\n\n\t\tvar val = columns[ind].initialWidth*1;\n\t\tif(!isNaN(val) && columns[ind].initialWidth !== '' && columns[ind].initialWidth !== null && typeof columns[ind].initialWidth != 'boolean'){\n\n\t\t\tunsized_columns--;\n\t\t\tavail_width -= val;\n\t\t\twidths[ind] = val;\n\t\t}else {\n\t\t\twidths[ind] = null;\n\t\t}\n\t}\n\n\tvar unsized_width = Math.floor(avail_width / unsized_columns);\n\tvar availStyles = [\"text-align\", \"padding-left\",\"padding-right\"];\n\tfor(var i=0; i < columns.length; i++){\n\t\tvar column_width = !widths[i] ? unsized_width : widths[i];\n\t\tcolumns[i].width = column_width /*- scheduler._grid._calcPadding(columns[i], objName)*/;\n\t\tvar cell_style = scheduler._grid._getStyles(columns[i], availStyles);\n\t\thead += \"
\" + (columns[i].label === undefined ? columns[i].id : columns[i].label) + \"
\";\n\t}\n\thead +=\"
\";\n\n\treturn head;\n};\n\n\n}","export default function(scheduler){\n\nscheduler.attachEvent(\"onTemplatesReady\",function(){\n\tvar els = document.body.getElementsByTagName(\"DIV\");\n\tfor (var i=0; i < els.length; i++) {\n\t\tvar cs = els[i].className||\"\";\n\t\tcs = cs.split(\":\");\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\n\t\t\t});\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\n\t\t\tels[i].style.display='none';\n\t\t}\n\t}\n});\n\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\nimport marker from \"./keyboard_navigation/marker\";\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\nimport event from \"./keyboard_navigation/elements/event\";\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\nimport data_area from \"./keyboard_navigation/elements/data_area\";\nimport modals from \"./keyboard_navigation/modals\";\nimport core from \"./keyboard_navigation/core\";\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\n\n\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\n\nexport default function(scheduler){\n\t\tscheduler.config.key_nav = true;\n\t\tscheduler.config.key_nav_step = 30;\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\n\t\t\tvar scopeObject = getScope(scope);\n\t\t\tif(scopeObject){\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\n\t\t\t}\n\t\t};\n\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\n\t\t\tvar scopeObject = getScope(scope);\n\t\t\tif(scopeObject){\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\n\t\t\t\tif(commands.length){\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tscheduler.removeShortcut = function(shortcut, scope){\n\t\t\tvar scopeObject = getScope(scope);\n\t\t\tif(scopeObject){\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\n\t\t\t}\n\t\t};\n\n\t\tscheduler.focus = function(){\n\t\t\tif(!scheduler.config.key_nav){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\n\t\t\tdisp.enable();\n\t\t\tvar activeNode = disp.getActiveNode();\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\n\t\t\t\tdisp.setDefaultNode();\n\t\t\t}else{\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\n\t\t\t}\n\t\t};\n\n\t\tfunction getScope(mode){\n\t\t\tvar scopes = {\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\n\t\t\t};\n\n\t\t\tvar searchMap = {};\n\t\t\tfor(var i in scopes)\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\n\n\t\t\tmode = (mode + \"\").toLowerCase();\n\n\t\t\treturn searchMap[mode] || scopes.scheduler;\n\t\t}\n\n\t\tscheduler.$keyboardNavigation = {};\n\n\t\tscheduler._compose = function(){\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\n\t\t\tvar res = {};\n\t\t\tfor(var i = 0; i < parts.length; i++){\n\t\t\t\tvar obj = parts[i];\n\t\t\t\tif(typeof obj == \"function\"){\n\t\t\t\t\tobj = new obj();\n\t\t\t\t}\n\n\t\t\t\tfor(var p in obj){\n\t\t\t\t\tres[p] = obj[p];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn res;\n\t\t};\n\n\t\tkeyboard_shortcuts(scheduler);\n\t\teventhandler(scheduler);\n\t\ttrap_modal_focus(scheduler);\n\t\tmarker(scheduler);\n\t\tscheduler_node(scheduler);\n\t\tnav_node(scheduler);\n\t\theader_cell(scheduler);\n\t\tevent(scheduler);\n\t\ttime_slot(scheduler);\n\t\tminical_button(scheduler);\n\t\tminical_cell(scheduler);\n\t\tdata_area(scheduler);\n\t\tmodals(scheduler);\n\t\tcore(scheduler);\n\t\tkey_nav_legacy(scheduler);\n\n\t\t(function(){\n\t\t\tscheduler_handlers(scheduler);\n\t\t\tminical_handlers(scheduler);\n\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\n\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\n\n\t\t\tif(scheduler.renderCalendar){\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\n\t\t\t}else{\n\t\t\t\t// otherwise - wait until everything is loaded and try again\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\n\t\t\t\t});\n\t\t\t}\n\n\n\n\t\t\tfunction isSchedulerSelected(){\n\t\t\t\tif(!scheduler.config.key_nav) return;\n\n\t\t\t\tvar enable;\n\t\t\t\tvar focusElement = document.activeElement;\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\n\t\t\t\t\tenable = false;\n\t\t\t\t}else{\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\n\t\t\t\t}\n\n\t\t\t\treturn enable;\n\t\t\t}\n\n\n\n\t\t\tfunction changeState(enable){\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\n\t\t\t\t\tdispatcher.enable();\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\n\t\t\t\t\tdispatcher.disable();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst intervalId = setInterval(function(){\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar enable = isSchedulerSelected();\n\n\t\t\t\tif(enable){\n\t\t\t\t\tchangeState(enable);\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif(scheduler.$destroyed){\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\n\t\t\t\t\t\tif(scheduler.config.key_nav){\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}, 100);\n\t\t\t\t}\n\t\t\t}, 500);\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\n\t\t\t\tclearInterval(intervalId);\n\t\t\t});\n\t\t})();\n\t}\n\n\n","export default function(scheduler){\n\nscheduler.$keyboardNavigation.shortcuts = {\n\tcreateCommand: function(){\n\t\treturn {\n\t\t\tmodifiers:{\n\t\t\t\t\"shift\": false,\n\t\t\t\t\"alt\": false,\n\t\t\t\t\"ctrl\": false,\n\t\t\t\t\"meta\": false\n\t\t\t},\n\t\t\tkeyCode: null\n\t\t};\n\t},\n\tparse: function(shortcut){\n\t\tvar commands = [];\n\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\n\t\tfor(var i = 0; i < expr.length; i++){\n\t\t\tvar words = this.getWords(expr[i]);\n\n\t\t\tvar command = this.createCommand();\n\n\t\t\tfor(var j = 0; j < words.length; j++){\n\t\t\t\tif(this.commandKeys[words[j]]){\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\n\t\t\t\t}else if(this.specialKeys[words[j]]){\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\n\t\t\t\t}else{\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcommands.push(command);\n\t\t}\n\t\treturn commands;\n\t},\n\n\tgetCommandFromEvent: function(domEvent){\n\t\tvar command = this.createCommand();\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\n\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\n\t\t\t// numpad keys 96-105 -> 48-57\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\n\t\t}\n\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\n\t\tif(printableKey){\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\n\t\t}\n\t\treturn command;\n\t},\n\n\tgetHashFromEvent: function(domEvent){\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\n\t},\n\n\tgetHash: function(command){\n\t\tvar parts = [];\n\t\tfor(var i in command.modifiers){\n\t\t\tif(command.modifiers[i]){\n\t\t\t\tparts.push(i);\n\t\t\t}\n\t\t}\n\t\tparts.push(command.keyCode);\n\n\t\treturn parts.join(this.junctionChar);\n\t},\n\n\tgetExpressions: function(shortcut){\n\t\treturn shortcut.split(this.junctionChar);\n\t},\n\tgetWords: function(term){\n\t\treturn term.split(this.combinationChar);\n\t},\n\ttrim: function(shortcut){\n\t\treturn shortcut.replace(/\\s/g, \"\");\n\t},\n\tjunctionChar:\",\",\n\tcombinationChar:\"+\",\n\tcommandKeys:{\n\t\t\"shift\": 16,\n\t\t\"alt\": 18,\n\t\t\"ctrl\": 17,\n\t\t\"meta\": true\n\t},\n\tspecialKeys:{\n\t\t\"backspace\": 8,\n\t\t\"tab\": 9,\n\t\t\"enter\": 13,\n\t\t\"esc\": 27,\n\t\t\"space\": 32,\n\t\t\"up\": 38,\n\t\t\"down\": 40,\n\t\t\"left\": 37,\n\t\t\"right\": 39,\n\t\t\"home\": 36,\n\t\t\"end\": 35,\n\t\t\"pageup\": 33,\n\t\t\"pagedown\": 34,\n\t\t\"delete\": 46,\n\t\t\"insert\": 45,\n\t\t\"plus\":107,\n\t\t\"f1\": 112,\n\t\t\"f2\": 113,\n\t\t\"f3\": 114,\n\t\t\"f4\": 115,\n\t\t\"f5\": 116,\n\t\t\"f6\": 117,\n\t\t\"f7\": 118,\n\t\t\"f8\": 119,\n\t\t\"f9\": 120,\n\t\t\"f10\": 121,\n\t\t\"f11\": 122,\n\t\t\"f12\": 123\n\t}\n};\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.EventHandler = {\n\t_handlers: null,\n\tfindHandler: function(command){\n\t\tif(!this._handlers) this._handlers = {};\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\n\t\tvar hash = shortcuts.getHash(command);\n\n\t\treturn this._handlers[hash];\n\t},\n\n\tdoAction: function(command, e){\n\t\tvar handler = this.findHandler(command);\n\t\tif(handler){\n\t\t\thandler.call(this, e);\n\n\t\t\tif (e.preventDefault) e.preventDefault();\n\t\t\telse e.returnValue = false;\n\n\t\t}\n\t},\n\tbind: function(shortcut, handler){\n\t\tif(!this._handlers) this._handlers = {};\n\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\n\n\t\tvar commands = shortcuts.parse(shortcut);\n\t\tfor(var i = 0; i < commands.length; i++){\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\n\t\t}\n\t},\n\tunbind: function(shortcut){\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\n\n\t\tvar commands = shortcuts.parse(shortcut);\n\t\tfor(var i = 0; i < commands.length; i++){\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\n\t\t\t}\n\t\t}\n\t},\n\n\tbindAll: function(map){\n\t\tfor(var i in map){\n\t\t\tthis.bind(i, map[i]);\n\t\t}\n\t},\n\tinitKeys: function(){\n\t\tif(!this._handlers)\n\t\t\tthis._handlers = {};\n\t\tif(this.keys){\n\t\t\tthis.bindAll(this.keys);\n\t\t}\n\t}\n};\n\n}","export default function(scheduler){\n\n(function(){\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\n\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\n\t\tif(e.keyCode != 9) return false;\n\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\n\t\tvar currentFocus = document.activeElement;\n\t\tvar currentIndex = -1;\n\t\tfor(var i = 0; i < focusable.length; i++){\n\t\t\tif(focusable[i] == currentFocus){\n\t\t\t\tcurrentIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tvar nextIndex, nextItem;\n\t\tif(e.shiftKey){\n\n\t\t\t// back tab\n\t\t\t// go to the last element if we focused on the first\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\n\n\t\t\tnextItem = focusable[nextIndex];\n\t\t\tif(nextItem){\n\t\t\t\tnextItem.focus();\n\t\t\t\te.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}else{\n\t\t\t// forward tab\n\t\t\t// forward tab from last element should go back to the first element\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\n\t\t\tnextItem = focusable[nextIndex];\n\t\t\tif(nextItem){\n\t\t\t\tnextItem.focus();\n\t\t\t\te.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\t};\n})();\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.marker = {\n\tclear: function(){\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\n\t\tfor(var i = 0; i < divs.length; i++){\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\n\t\t}\n\t},\n\tcreateElement: function(){\n\t\tvar element = document.createElement(\"div\");\n\t\telement.setAttribute(\"tabindex\", -1);\n\t\telement.className = \"dhx_focus_slot\";\n\t\treturn element;\n\t},\n\n\trenderMultiple: function(start, end, method){\n\t\tvar divs = [];\n\t\tvar currentStart = new Date(start);\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\n\t\twhile(currentStart.valueOf() < end.valueOf()){\n\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\n\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\n\t\t}\n\n\t\treturn divs;\n\t},\n\n\n\trender: function(start, end, section){\n\t\tthis.clear();\n\t\tvar divs = [];\n\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\n\t\tswitch (view){\n\t\t\tcase modes.units:\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\n\t\t\t\tbreak;\n\t\t\tcase modes.timeline:\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\n\t\t\t\tbreak;\n\t\t\tcase modes.year:\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\n\t\t\t\tbreak;\n\t\t\tcase modes.month:\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\n\t\t\t\tbreak;\n\t\t\tcase modes.weekAgenda:\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\n\t\t\t\tbreak;\n\t\t\tcase modes.list:\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\n\t\t\t\tbreak;\n\t\t\tcase modes.dayColumns:\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\n\t\tthis.addDataAttributes(divs, start, end, section);\n\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\n\t\t\tif(divs[i].offsetWidth){\n\t\t\t\treturn divs[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\taddDataAttributes: function(divs, start, end, section){\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\n\n\t\tvar from = dateToStr(start),\n\t\t\tto = dateToStr(end);\n\n\t\tfor(var i = 0; i < divs.length; i++){\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\n\t\t\tif(section){\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\n\t\t\t}\n\t\t}\n\t},\n\n\taddWaiAriaLabel: function(divs, start, end, section){\n\t\tvar label = \"\";\n\t\tvar state = scheduler.getState();\n\t\tvar mode = state.mode;\n\n\t\tvar dateTimeLabel = false;\n\n\t\tlabel += scheduler.templates.day_date(start);\n\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\n\t\t\tdateTimeLabel = true;\n\t\t}\n\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\n\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\n\t\t\t}\n\t\t}\n\n\t\tif(section){\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\n\t\t\t\tconst timeline = scheduler.matrix[mode];\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\n\t\t\t\tconst units = scheduler._props[mode];\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\n\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\n\t\t\t}\n\t\t}\n\n\n\t\tfor(var i = 0; i < divs.length; i++){\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\n\t\t\t\t\"aria-label\": label,\n\t\t\t\t\"aria-live\": \"polite\"\n\t\t\t});\n\t\t}\n\t},\n\n\trenderWeekAgendaMarker: function(start_date, end_date){\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\n\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\n\n\t\tvar index = -1;\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\n\t\tfor(var i = 0; i < divs.length; i++){\n\t\t\tindex++;\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\n\t\t\t\tbreak;\n\t\t\t}else{\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\n\t\t\t}\n\t\t}\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\n\t\treturn [];\n\t},\n\n\t_wrapDiv: function(cell){\n\t\tvar marker = this.createElement();\n\t\tmarker.style.top = cell.offsetTop + \"px\";\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\n\t\tcell.appendChild(marker);\n\t\treturn [marker];\n\t},\n\trenderYearMarker: function(start_date, end_date){\n\t\tvar cell = scheduler._get_year_cell(start_date);\n\t\tcell.style.position = \"relative\";\n\t\tvar marker = this.createElement();\n\t\tmarker.style.top = \"0px\";\n\t\tmarker.style.left = \"0px\";\n\t\tmarker.style.width = \"100%\";\n\t\tmarker.style.height = \"100%\";\n\t\tcell.appendChild(marker);\n\t\treturn [marker];\n\t},\n\n\trenderAgendaMarker: function(start_date, end_date){\n\t\tvar block = this.createElement();\n\t\tblock.style.height = \"1px\";\n\t\tblock.style.width = \"100%\";\n\t\tblock.style.opacity = 1;\n\t\tblock.style.top = \"0px\";\n\t\tblock.style.left = \"0px\";\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\n\t\treturn [block];\n\t},\n\n\trenderTimelineMarker: function(start_date, end_date, section){\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\n\t\tvar areas = view_opts._scales;\n\t\t//timespans must always use actual position, not rounded\n\t\tview_opts.round_position = false;\n\t\tvar blocks = [];\n\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\n\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\n\t\t\tmin_date = new Date(scheduler._min_date);\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\n\t\t\tmax_date = new Date(scheduler._max_date);\n\n\t\tif(!view_opts._trace_x) return blocks;\n\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\n\t\t\t\tbreak;\n\t\t}\n\t\tif(i == view_opts._trace_x.length)\n\t\t\treturn blocks;\n\n\t\tvar area = areas[section];\n\n\t\tif (!(min_date < end_date && max_date > start_date))\n\t\t\treturn blocks;\n\n\t\tvar block = this.createElement();\n\n\t\tlet start_pos;\n\t\tlet end_pos;\n\n\t\tfunction set_date_part(source, target) {\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\n\t\t\ttarget.setDate(1);\n\n\t\t\ttarget.setFullYear(source.getFullYear());\n\t\t\ttarget.setMonth(source.getMonth());\n\t\t\ttarget.setDate(source.getDate());\n\t\t}\n\n\t\tif(!scheduler.getView().days){\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\n\t\t}else{\n\t\t\t// daytimeline\n\t\t\tconst tempStart = new Date(start_date);\n\t\t\tset_date_part(scheduler._min_date, tempStart);\n\t\t\tconst tempEnd = new Date(end_date);\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\n\t\t}\n\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\n\n\t\tvar top = 0;\n\t\tif (scheduler._isRender('cell')){\n\t\t\ttop = area.offsetTop;\n\t\t\tstart_pos += view_opts.dx;\n\t\t\tend_pos += view_opts.dx;\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\t}else{\n\n\t\t}\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\n\t\tlet direction = \"left\";\n\t\tif(scheduler.config.rtl){\n\t\t\tdirection = \"right\";\n\t\t}\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\n\n\t\tif(area){\n\t\t\tarea.appendChild(block);\n\t\t\tblocks.push(block);\n\t\t}\n\n\t\treturn blocks;\n\t},\n\n\trenderMonthCell: function(date){\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\n\n\t\tvar divs = [];\n\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\tdivs.push(cells[i].parentNode);\n\t\t}\n\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\n\n\t\tvar index = -1;\n\t\tvar weekNumber = 0;\n\t\tvar dayIndex = -1;\n\t\tvar currDate = firstDate;\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\n\t\tfor(var i = 0; i < divs.length; i++){\n\t\t\tindex++;\n\n\t\t\tif(dayIndex == 6){\n\t\t\t\tweekNumber++;\n\t\t\t\tdayIndex = 0;\n\t\t\t}else{\n\t\t\t\tdayIndex++;\n\t\t\t}\n\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\n\t\t\t\tbreak;\n\t\t\t}else{\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\n\t\t\t}\n\t\t}\n\n\t\tif(index == -1){\n\t\t\treturn [];\n\t\t}\n\n\t\tvar left = scheduler._colsS[dayIndex];\n\t\tvar top = scheduler._colsS.heights[weekNumber];\n\n\t\tvar div = this.createElement();\n\t\tdiv.style.top = top + \"px\";\n\t\tdiv.style.left = left + \"px\";\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\n\n\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\n\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\n\t\tif(datatable.nextSibling){\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\n\t\t}else{\n\t\t\tcontainer.appendChild(div);\n\t\t}\n\t\treturn div;\n\t},\n\trenderMonthMarker: function(start_date, end_date){\n\t\tvar res = [];\n\t\tvar currentDate = start_date;\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\n\t\t\tres.push(this.renderMonthCell(currentDate));\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\n\t\t}\n\t\treturn res;\n\t},\n\n\trenderVerticalMarker: function(start_date, end_date, section){\n\t\tvar index = scheduler.locate_holder_day(start_date);\n\n\t\tvar divs = [];\n\t\tvar area = null;\n\n\t\tvar c = scheduler.config;\n\t\tif(scheduler._ignores[index]) return divs;\n\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\n\t\t\tvar view = scheduler._props[scheduler._mode];\n\t\t\tindex = view.order[section];\n\n\t\t\tvar inner_index = view.order[section];\n\t\t\tif(!(view.days > 1)){\n\t\t\t\tindex = inner_index;\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\n\t\t\t\t\tindex = 0;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t//var units_l = view.size || view.options.length;\n\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\n\t\t\t\t//index = index*units_l + inner_index;\n\t\t\t}\n\t\t}\n\t\tarea = scheduler.locate_holder(index);\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\n\t\t\t// hour scale instead of date column\n\t\t\treturn document.createElement(\"div\");\n\t\t}\n\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\n\n\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\n\t\t\tend = c.last_hour*60;\n\t\t}\n\n\t\tif (end <= start) {\n\t\t\treturn [];\n\t\t}\n\n\t\tvar block = this.createElement();\n\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\n\t\tvar hour_ms = 60*60*1000;\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\";\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\";\n\t\tblock.style.width = \"100%\";\n\t\tarea.appendChild(block);\n\t\tdivs.push(block);\n\t\treturn divs[0];\n\n\t}\n};\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\n\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.EventHandler,\n\t{\n\t\tgetDefaultNode: function(){\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\n\n\t\t\tif(!node.isValid()){\n\t\t\t\tnode = node.fallback();\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\n\t\t_modes:{\n\t\t\tmonth: \"month\",\n\t\t\tyear: \"year\",\n\t\t\tdayColumns: \"dayColumns\",\n\t\t\ttimeline:\"timeline\",\n\t\t\tunits:\"units\",\n\t\t\tweekAgenda: \"weekAgenda\",\n\t\t\tlist: \"list\"\n\t\t},\n\t\tgetMode: function(){\n\t\t\tvar state = scheduler.getState();\n\n\t\t\tvar mode = state.mode;\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\n\t\t\t\treturn this._modes.timeline;\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\n\t\t\t\treturn this._modes.units;\n\t\t\t}else if(mode == \"month\"){\n\t\t\t\treturn this._modes.month;\n\t\t\t}else if(mode == \"year\"){\n\t\t\t\treturn this._modes.year;\n\t\t\t}else if(mode == \"week_agenda\"){\n\t\t\t\treturn this._modes.weekAgenda;\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\n\t\t\t\treturn this._modes.list;\n\t\t\t}else{\n\t\t\t\treturn this._modes.dayColumns;\n\t\t\t}\n\t\t},\n\n\t\tfocus: function(){\n\t\t\tscheduler.focus();\n\t\t},\n\n\t\tblur: function(){\n\n\t\t},\n\n\t\tdisable: function(){\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\n\t\t},\n\t\tenable: function(){\n\t\t\tif(scheduler.$container)\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\n\t\t},\n\t\tisEnabled: function(){\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\n\t\t},\n\n\n\t\t_compareEvents: function(a, b){\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\n\t\t\t\treturn a.id > b.id ? 1 : -1;\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\n\t\t},\n\n\t\t_pickEvent: function(from, to, startId, reverse){\n\t\t\tvar range = scheduler.getState();\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\n\n\t\t\tvar evs = scheduler.getEvents(from, to);\n\t\t\tevs.sort(this._compareEvents);\n\t\t\tif(reverse){\n\t\t\t\tevs = evs.reverse();\n\t\t\t}\n\n\t\t\tvar trim = !!startId;\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\n\t\t\t\tif(evs[i].id == startId){\n\t\t\t\t\ttrim = false;\n\t\t\t\t}\n\t\t\t\tevs.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < evs.length; i++){\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\n\t\t\t\tif(eventElement.getNode())\n\t\t\t\t\treturn evs[i];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\tnextEventHandler: function(id){\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\n\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\n\n\t\t\tvar nextEvent = null;\n\t\t\tif(startId && scheduler.getEvent(startId)){\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\n\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\n\t\t\t\t\tcurrEvent.start_date,\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\n\t\t\t\t\tcurrEvent.id,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t}\n\t\t\tif(!nextEvent && !id){\n\t\t\t\tvar visibleDates = scheduler.getState();\n\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\n\t\t\t\t\tvisibleDates.min_date,\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\n\t\t\t\t\tnull,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif(nextEvent){\n\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\n\t\t\t\tif(!nextEv.isValid()){// not visible event\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\n\t\t\t\t}else{\n\t\t\t\t\tif(activeNode){activeNode.blur();}\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tprevEventHandler: function(id){\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\n\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\n\n\t\t\tvar nextEvent = null;\n\t\t\tif(startId && scheduler.getEvent(startId)){\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\n\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\n\t\t\t\t\tcurrEvent.end_date,\n\t\t\t\t\tcurrEvent.id,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t}\n\t\t\tif(!nextEvent && !id){\n\t\t\t\tvar visibleDates = scheduler.getState();\n\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\n\t\t\t\t\tvisibleDates.max_date,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif(nextEvent){\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\n\t\t\t\tif(!nextEv.isValid()){// not visible event\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\n\t\t\t\t}else{\n\t\t\t\t\tif(activeNode){activeNode.blur();}\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tkeys: {\n\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\n\t\t\t\tvar key = e.key;\n\t\t\t\tif(key === undefined){\n\t\t\t\t\tkey = e.keyCode - 48;\n\t\t\t\t}\n\t\t\t\tif(tabs[key*1 - 1]){\n\t\t\t\t\ttabs[key*1 - 1].click();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"ctrl+left,meta+left\": function(e){\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\n\t\t\t},\n\t\t\t\"ctrl+right,meta+right\": function(e){\n\t\t\t\tscheduler._click.dhx_cal_next_button();\n\t\t\t},\n\t\t\t\"ctrl+up,meta+up\":function(e){\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\t\t\tdataArea.scrollTop -= 20;\n\t\t\t},\n\t\t\t\"ctrl+down,meta+down\": function(e){\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\t\t\tdataArea.scrollTop += 20;\n\t\t\t},\n\n\n\t\t\t\"e\": function(){\n\t\t\t\tthis.nextEventHandler();\n\t\t\t},\n\n\t\t\t\"home\": function(){\n\t\t\t\tscheduler.setCurrentView(new Date());\n\t\t\t},\n\n\t\t\t\"shift+e\": function(){\n\t\t\t\tthis.prevEventHandler();\n\t\t\t},\n\n\t\t\t\"ctrl+enter,meta+enter\": function(){\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\n\t\t\t},\n\n\t\t\t\"ctrl+c,meta+c\": function(e){\n\t\t\t\tscheduler._key_nav_copy_paste(e);\n\t\t\t},\n\t\t\t\"ctrl+v,meta+v\": function(e){\n\t\t\t\tscheduler._key_nav_copy_paste(e);\n\t\t\t},\n\t\t\t\"ctrl+x,meta+x\": function(e){\n\t\t\t\tscheduler._key_nav_copy_paste(e);\n\t\t\t}\n\n\t\t}\n\t}\n);\n\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\n\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.EventHandler,\n\t{\n\t\tisValid: function(){\n\t\t\treturn true;\n\t\t},\n\t\tfallback: function(){\n\t\t\treturn null;\n\t\t},\n\n\t\tmoveTo: function (element) {\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\n\t\t},\n\n\t\tcompareTo: function(b){\n\t\t\t// good enough comparison of two random objects\n\t\t\tif(!b) return false;\n\t\t\tfor(var i in this){\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\n\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\n\t\t\t\t\tif(b[i] != this[i]) return false;\n\t\t\t\t}else{\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tgetNode: function(){},\n\t\tfocus: function(){\n\t\t\tvar node = this.getNode();\n\t\t\tif(node){\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\n\t\t\t\t//node.className += \" scheduler_focused\";\n\t\t\t\tif(node.focus) node.focus();\n\t\t\t}\n\n\t\t},\n\t\tblur: function(){\n\t\t\tvar node = this.getNode();\n\t\t\tif(node){\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\n\t\t\t}\n\t\t}\n\t}\n\n);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.HeaderCell = function(index){\n\tthis.index = index || 0;\n};\n\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.KeyNavNode,\n\t{\n\t\tgetNode: function(index){\n\t\t\tindex = index || this.index || 0;\n\t\t\tvar nodes = this.getNodes();\n\t\t\tif(nodes[index]) return nodes[index];\n\t\t},\n\n\t\tgetNodes: function(selector){\n\t\t\tselector = selector || [\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\n\t\t\t\t].join(\", \");\n\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\n\t\t\tnodes.sort(function(a, b){\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\n\t\t\t});\n\t\t\treturn nodes;\n\t\t},\n\n\t\t_handlers:null,\n\n\t\tisValid: function(){\n\t\t\treturn !!this.getNode(this.index);\n\t\t},\n\t\tfallback:function(){\n\t\t\tvar defaultCell = this.getNode(0);\n\t\t\tif(!defaultCell){\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\n\t\t\t}\n\t\t\treturn defaultCell;\n\t\t},\n\n\t\tkeys: {\n\t\t\t\"left\": function(){\n\t\t\t\tvar newIndex = this.index - 1;\n\t\t\t\tif(newIndex < 0){\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\n\t\t\t\t}\n\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\n\n\t\t\t},\n\t\t\t\"right\": function () {\n\t\t\t\tvar newIndex = this.index + 1;\n\t\t\t\tif(newIndex >= this.getNodes().length){\n\t\t\t\t\tnewIndex = 0;\n\t\t\t\t}\n\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\n\t\t\t},\n\t\t\t\"down\": function () {\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t},\n\n\t\t\t\"enter\": function(){\n\t\t\t\tvar node = this.getNode();\n\t\t\t\tif(node){\n\t\t\t\t\tnode.click();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n);\n\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.Event = function(id){\n\tthis.eventId = null;\n\tif(scheduler.getEvent(id)){\n\t\tvar ev = scheduler.getEvent(id);\n\t\tthis.start = new Date(ev.start_date);\n\t\tthis.end = new Date(ev.end_date);\n\n\t\tthis.section = this._getSection(ev);\n\t\tthis.eventId = id;\n\t}\n};\n\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.KeyNavNode,\n\t{\n\t\t_getNodes: function(){\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\n\t\t},\n\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\n\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\n\n\t\t_handlers: null,\n\t\tisValid: function(){\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\n\t\t},\n\t\tfallback: function(){\n\t\t\tvar eventNode = this._getNodes()[0];\n\t\t\tvar defaultElement = null;\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\n\t\t\t}else{\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\n\t\t\t}\n\n\t\t\treturn defaultElement;\n\t\t},\n\n\t\tisScrolledIntoView: function (el) {\n\t\t\tvar eventBox = el.getBoundingClientRect();\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\n\t\t\t\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tgetNode: function(){\n\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\n\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\n\t\t\tif(inlineEditor){// is inline editor visible\n\t\t\t\treturn inlineEditor;\n\t\t\t}else{\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\n\t\t\t\t\t\t\treturn nodes[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn nodes[0];\n\t\t\t\t}else{\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\n\t\t\t\t}\n\n\t\t\t\t\n\t\t\t}\n\n\t\t},\n\n\t\tfocus: function(){\n\t\t\tvar event = scheduler.getEvent(this.eventId);\n\n\t\t\tvar calendar = scheduler.getState();\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\n\t\t\t\tscheduler.setCurrentView(event.start_date);\n\t\t\t}\n\n\t\t\tvar node = this.getNode();\n\t\t\tif (this.isScrolledIntoView(node)) {\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\n\t\t\t\t}).bind(this));\n\t\t\t} else {\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\n\t\t\t}\n\n\t\t},\n\t\tblur: function(){\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\n\t\t},\n\n\n\t\t_getSection: function(ev){\n\t\t\tvar section = null;\n\t\t\tvar mode = scheduler.getState().mode;\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\n\t\t\t\tsection = ev[timeline.y_property];\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\n\t\t\t\tvar unit = scheduler._props[mode];\n\t\t\t\tsection = ev[unit.map_to];\n\t\t\t}\n\t\t\treturn section;\n\t\t},\n\t\t_moveToSlot: function(dir){\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\n\t\t\tif(ev){\n\t\t\t\tvar section =this._getSection(ev);\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\n\t\t\t}else{\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t}\n\t\t},\n\n\t\tkeys: {\n\t\t\t\"left\": function(){\n\t\t\t\tthis._moveToSlot(\"left\");\n\t\t\t},\n\n\t\t\t\"right\": function () {\n\t\t\t\tthis._moveToSlot(\"right\");\n\t\t\t},\n\t\t\t\"down\": function () {\n\t\t\t\tif(this.getMode() == this._modes.list){\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\n\t\t\t\t}else {\n\t\t\t\t\tthis._moveToSlot(\"down\");\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"space\": function(){\n\t\t\t\tvar node = this.getNode();\n\t\t\t\tif(node && node.click){\n\t\t\t\t\tnode.click();\n\t\t\t\t}else{\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\t\"up\": function () {\n\t\t\t\tif(this.getMode() == this._modes.list){\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\n\t\t\t\t}else {\n\t\t\t\t\tthis._moveToSlot(\"up\");\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\"delete\": function(){\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\n\t\t\t\t}else{\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// open lightbox\n\t\t\t\"enter\": function () {\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\n\t\t\t\t}else{\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n);\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\n\tvar state = scheduler.getState();\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\n\n\tif(!from){\n\t\tfrom = this.getDefaultDate();\n\t}\n\n\tif(!to){\n\n\t\tif(timeline){\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\n\t\t}else{\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\n\t\t}\n\n\t}\n\n\tthis.section = section || this._getDefaultSection();\n\tthis.start_date = new Date(from);\n\tthis.end_date = new Date(to);\n\tthis.movingDate = movingDate || null;\n};\n\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.KeyNavNode,\n\t{\n\t\t_handlers:null,\n\n\t\tgetDefaultDate: function(){\n\t\t\tvar from;\n\t\t\tvar state = scheduler.getState();\n\t\t\tvar visibleTime = new Date(state.date);\n\t\t\tvisibleTime.setSeconds(0);\n\t\t\tvisibleTime.setMilliseconds(0);\n\n\t\t\tvar nowTime = new Date();\n\t\t\tnowTime.setSeconds(0);\n\t\t\tnowTime.setMilliseconds(0);\n\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\n\t\t\tvar showNowTime = false;\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\n\t\t\t\tshowNowTime = true;\n\t\t\t}\n\n\t\t\tif(timeline){\n\t\t\t\tif(showNowTime){\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\n\t\t\t\t\t\tnowTime.setHours(0);\n\t\t\t\t\t\tnowTime.setMinutes(0);\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\n\t\t\t\t\t\tnowTime.setMinutes(0);\n\t\t\t\t\t}\n\t\t\t\t\tfrom = nowTime;\n\t\t\t\t}else{\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\n\t\t\t\t}\n\n\t\t\t\tfrom = this.findVisibleColumn(from);\n\t\t\t}else{\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\n\t\t\t\tif(showNowTime){\n\t\t\t\t\tfrom = nowTime;\n\t\t\t\t}\n\t\t\t\tfrom = this.findVisibleColumn(from);\n\t\t\t\tif(!showNowTime){\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\n\t\t\t\t}\n\n\t\t\t\tif(!scheduler._table_view){\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\t\t\t\tif(dataContainer.scrollTop){\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn from;\n\t\t},\n\n\t\tclone: function(timeslot){\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\n\t\t},\n\t\t_getMultisectionView: function(){\n\t\t\tvar state = scheduler.getState();\n\t\t\tvar view;\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\n\t\t\t\tview = scheduler._props[state.mode];\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\n\t\t\t\tview = scheduler.matrix[state.mode];\n\t\t\t}\n\t\t\treturn view;\n\t\t},\n\n\t\t_getDefaultSection: function(){\n\t\t\tvar section = null;\n\t\t\tvar view = this._getMultisectionView();\n\t\t\tif(view && !section){\n\t\t\t\tsection = this._getNextSection();\n\t\t\t}\n\t\t\treturn section;\n\t\t},\n\n\t\t_getNextSection: function(sectionId, dir){\n\t\t\tvar view = this._getMultisectionView();\n\t\t\tvar currentIndex = view.order[sectionId];\n\t\t\tvar nextIndex = currentIndex;\n\t\t\tif(currentIndex !== undefined){\n\t\t\t\tnextIndex = currentIndex + dir;\n\t\t\t}else{\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\n\t\t\t}\n\n\t\t\tif(nextIndex < 0){\n\t\t\t\tnextIndex = 0;\n\t\t\t}\n\t\t\tvar options = view.options || view.y_unit;\n\n\t\t\tif(nextIndex >= options.length){\n\t\t\t\tnextIndex = options.length - 1;\n\t\t\t}\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\n\n\t\t\tif(options[nextIndex]){\n\t\t\t\treturn options[nextIndex].key;\n\t\t\t}else{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\n\t\tisValid: function(){\n\t\t\tvar state = scheduler.getState();\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\n\n\t\t\tif(!isInRange) return false;\n\n\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\n\n\t\t\tvar view = this._getMultisectionView();\n\n\t\t\tif(view){\n\t\t\t\treturn (view.order[this.section] !== undefined);\n\t\t\t}else{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t},\n\n\t\tfallback:function(){\n\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\n\t\t\tif(!defaultSlot.isValid()){\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\n\t\t\t}else{\n\t\t\t\treturn defaultSlot;\n\t\t\t}\n\t\t},\n\n\t\tgetNodes: function(){\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\n\t\t},\n\t\tgetNode: function(){\n\t\t\treturn this.getNodes()[0];\n\t\t},\n\n\t\tfocus: function(){\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\n\t\t\t}\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\n\n\t\t},\n\t\tblur: function(){\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\n\t\t},\n\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\n\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\n\n\t\taddMonthDate: function(date, dir, extend){\n\t\t\tvar res;\n\t\t\tswitch (dir){\n\t\t\t\tcase \"up\":\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar state = scheduler.getState();\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\n\t\t\t\tres = new Date(state.min_date);\n\t\t\t}\n\n\t\t\treturn res;\n\t\t},\n\n\t\tnextMonthSlot: function(slot, dir, extend){\n\n\t\t\tvar start, end;\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\n\n\t\t\tstart.setHours(scheduler.config.first_hour);\n\t\t\tend = new Date(start);\n\t\t\tend.setHours(scheduler.config.last_hour);\n\t\t\treturn {start_date: start, end_date: end};\n\t\t},\n\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\n\t\t\tvar currentDate = new Date(minDate);\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\n\t\t\t}\n\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\n\t\t\t}\n\n\t\t\treturn currentDate;\n\t\t},\n\n\t\tnextTimelineSlot: function(slot, dir, extend){\n\t\t\tvar state = scheduler.getState();\n\t\t\tvar view = scheduler.matrix[state.mode];\n\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);\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);\n\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\n\t\t\t}\n\t\t\tvar newPos = this.clone(slot);\n\t\t\tnewPos.start_date = startDate;\n\t\t\tnewPos.end_date = endDate;\n\t\t\tnewPos.section = slot.section || this._getNextSection();\n\n\n\t\t\tswitch (dir){\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\n\t\t\t\t}else{\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn newPos;\n\t\t},\n\n\t\tnextUnitsSlot: function(slot, dir, extend){\n\t\t\tvar newPos = this.clone(slot);\n\t\t\tnewPos.section = slot.section || this._getNextSection();\n\n\t\t\tvar section = slot.section || this._getNextSection();\n\t\t\tvar state = scheduler.getState();\n\t\t\tvar view = scheduler._props[state.mode];\n\t\t\tswitch (dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\n\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\n\t\t\t\t\tsection = slot.section;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tnewPos.section = section;\n\t\t\treturn newPos;\n\t\t},\n\n\t\t_moveDate: function(oldDate, dir){\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\n\t\t\tnewDate.setHours(oldDate.getHours());\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\n\t\t\treturn newDate;\n\t\t},\n\n\t\tisBeforeLastHour: function(date, isStartDate){\n\t\t\tvar minutes = date.getMinutes(),\n\t\t\t\thours = date.getHours(),\n\t\t\t\tlast_hour = scheduler.config.last_hour;\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\n\t\t},\n\t\tisAfterFirstHour: function(date, isStartDate){\n\t\t\tvar minutes = date.getMinutes(),\n\t\t\t\thours = date.getHours(),\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\n\t\t\t\tlast_hour = scheduler.config.last_hour;\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\n\t\t},\n\t\tisInVisibleDayTime: function(date, isStartDate){\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\n\t\t},\n\n\t\tnextDaySlot: function(slot, dir, extend){\n\t\t\tvar start, end;\n\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\n\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\n\n\n\t\t\tvar oldStart = slot.start_date;\n\n\t\t\tswitch (dir){\n\t\t\t\tcase \"up\":\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\n\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\n\n\t\t\t\t\t\t\tvar toNextDay = true;\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())\n\t\t\t\t\t\t\t\ttoNextDay = false;\n\t\t\t\t\t\t\tif(toNextDay)\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\n\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\n\t\t\t\t\t\t\tstart.setMinutes(0);\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\n\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\n\t\t\t\t\t\t\tif (!extend) {\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar toNextDay = true;\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (toNextDay) {\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tstart = date;\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn {start_date: start, end_date: end};\n\t\t},\n\t\tnextWeekAgendaSlot: function(slot, dir){\n\t\t\tvar start, end;\n\t\t\tvar state = scheduler.getState();\n\n\t\t\tswitch (dir){\n\t\t\t\tcase \"down\":\n\t\t\t\tcase \"left\":\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\tcase \"right\":\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\n\t\t\t\tstart = new Date(state.min_date);\n\n\t\t\t}\n\t\t\tend = new Date(start);\n\t\t\tend.setHours(scheduler.config.last_hour);\n\t\t\treturn {start_date: start, end_date: end};\n\t\t},\n\t\tnextAgendaSlot: function(slot, dir){\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\n\t\t},\n\n\n\t\tisDateVisible: function(date){\n\t\t\tif(!scheduler._ignores_detected)\n\t\t\t\treturn true;\n\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\n\n\t\t\tvar index;\n\t\t\tif(timeline){\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\n\t\t\t}else{\n\t\t\t\tindex = scheduler.locate_holder_day(date);\n\t\t\t}\n\n\t\t\treturn !scheduler._ignores[index];\n\t\t},\n\n\t\tfindVisibleColumn: function(start, dir){\n\t\t\tvar date = start;\n\t\t\tdir = dir || 1;\n\t\t\tvar range = scheduler.getState();\n\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\n\t\t\t\tdate = this.nextDateColumn(date, dir);\n\t\t\t}\n\n\t\t\treturn date;\n\t\t},\n\n\t\tnextDateColumn: function(start, dir){\n\t\t\tdir = dir || 1;\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\n\n\t\t\tvar date;\n\t\t\tif(timeline){\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\n\t\t\t}else{\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\n\t\t\t}\n\n\t\t\treturn date;\n\t\t},\n\n\t\tisVisible:function(from, to){\n\t\t\tif(!scheduler._ignores_detected)\n\t\t\t\treturn true;\n\n\t\t\tvar current = new Date(from);\n\n\t\t\twhile(current.valueOf() < to.valueOf()){\n\t\t\t\tif(this.isDateVisible(current)) return true;\n\t\t\t\tcurrent = this.nextDateColumn(current);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tnextSlot: function(slot, dir, view, extend){\n\t\t\tvar next;\n\t\t\tview = view || this._getMode();\n\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\n\n\t\t\tswitch (view){\n\t\t\t\tcase this._modes.units:\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.timeline:\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.year:\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.month:\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.weekAgenda:\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.list:\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.dayColumns:\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\n\t\t\t\tnext = this.nextSlot(next, dir, view);\n\t\t\t}\n\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\n\n\t\t},\n\n\t\textendSlot: function(slot, dir){\n\t\t\tvar view = this._getMode();\n\t\t\tvar next;\n\t\t\tswitch (view){\n\t\t\t\tcase this._modes.units:\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.timeline:\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.year:\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.month:\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.dayColumns:\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\n\t\t\t\t\tbreak;\n\t\t\t\tcase this._modes.weekAgenda:\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnext = slot;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar range = scheduler.getState();\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\n\t\t\t}\n\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\n\t\t\t}\n\n\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\n\t\t},\n\n\t\textendTimelineSlot: function(slot, direction){\n\t\t\treturn this.extendGenericSlot({\n\t\t\t\t\"left\":\"start_date\",\n\t\t\t\t\"right\":\"end_date\"\n\t\t\t\t},\n\t\t\t\tslot,\n\t\t\t\tdirection,\n\t\t\t\t\"timeline\"\n\t\t\t);\n\t\t},\n\n\t\textendWeekAgendaSlot: function(slot, direction){\n\t\t\treturn this.extendGenericSlot({\n\t\t\t\t\t\"left\":\"start_date\",\n\t\t\t\t\t\"right\":\"end_date\"\n\t\t\t\t},\n\t\t\t\tslot,\n\t\t\t\tdirection,\n\t\t\t\t\"weekAgenda\"\n\t\t\t);\n\t\t},\n\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\n\t\t\tvar next;\n\t\t\tvar moveDate = slot.movingDate;\n\n\t\t\tif(!moveDate){\n\t\t\t\tmoveDate = allowedDirections[direction];\n\t\t\t}\n\n\t\t\tif(!moveDate || !allowedDirections[direction]){\n\t\t\t\treturn slot;\n\t\t\t}\n\n\t\t\tif(direction){\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\n\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\n\t\t\t\t}\n\n\t\t\t\tnext.movingDate = moveDate;\n\t\t\t}else{\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\n\t\t\t}\n\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\n\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\n\t\t\t}\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\n\n\t\t\tnext.start_date = newDates.start_date;\n\t\t\tnext.end_date = newDates.end_date;\n\t\t\treturn next;\n\t\t},\n\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\n\t\t\tvar res = {start_date:null, end_date:null};\n\n\t\t\tif(dateDirection == \"start_date\"){\n\t\t\t\tres.start_date = newSlot.start_date;\n\t\t\t\tres.end_date = oldSlot.end_date;\n\t\t\t}else{\n\t\t\t\tres.start_date = oldSlot.start_date;\n\t\t\t\tres.end_date = newSlot.start_date;\n\t\t\t}\n\t\t\treturn res;\n\n\t\t},\n\n\t\textendMonthSlot: function(slot, direction){\n\t\t\tvar slot = this.extendGenericSlot({\n\t\t\t\t\t\"up\":\"start_date\",\n\t\t\t\t\t\"down\":\"end_date\",\n\t\t\t\t\t\"left\":\"start_date\",\n\t\t\t\t\t\"right\":\"end_date\"\n\t\t\t\t},\n\t\t\t\tslot,\n\t\t\t\tdirection,\n\t\t\t\t\"month\"\n\t\t\t);\n\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\n\t\t\treturn slot;\n\t\t},\n\n\t\textendUnitsSlot: function(slot, direction){\n\t\t\tvar next;\n\n\t\t\tswitch (direction){\n\t\t\t\tcase \"down\":\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnext = slot;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tnext.section = slot.section;\n\t\t\treturn next;\n\t\t},\n\t\textendDaySlot: function(slot, direction){\n\t\t\treturn this.extendGenericSlot({\n\t\t\t\t\t\"up\":\"start_date\",\n\t\t\t\t\t\"down\":\"end_date\",\n\t\t\t\t\t\"left\":\"start_date\",\n\t\t\t\t\t\"right\":\"end_date\"\n\t\t\t\t},\n\t\t\t\tslot,\n\t\t\t\tdirection,\n\t\t\t\t\"dayColumns\"\n\t\t\t);\n\t\t},\n\n\t\tscrollSlot: function(dir){\n\t\t\tvar state = scheduler.getState();\n\n\t\t\tvar slot = this.nextSlot(this, dir);\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\n\t\t\t}\n\n\t\t\tthis.moveTo(slot);\n\t\t},\n\n\t\tkeys: {\n\t\t\t\"left\": function(){\n\t\t\t\tthis.scrollSlot(\"left\");\n\t\t\t},\n\t\t\t\"right\": function () {\n\t\t\t\tthis.scrollSlot(\"right\");\n\t\t\t},\n\t\t\t\"down\": function () {\n\n\t\t\t\tvar mode = this._getMode();\n\t\t\t\tif(mode == this._modes.list){\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\n\t\t\t\t}else{\n\t\t\t\t\tthis.scrollSlot(\"down\");\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\t\"up\": function () {\n\t\t\t\tvar mode = this._getMode();\n\t\t\t\tif(mode == this._modes.list){\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\n\t\t\t\t}else{\n\t\t\t\t\tthis.scrollSlot(\"up\");\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\t\"shift+down\":function(){\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\n\t\t\t},\n\t\t\t\"shift+up\":function(){\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\n\t\t\t},\n\t\t\t\"shift+right\":function(){\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\n\t\t\t},\n\t\t\t\"shift+left\":function(){\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\n\t\t\t},\n\n\n\t\t\t\"enter\": function(){\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\n\n\t\t\t\tvar mode = scheduler.getState().mode;\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\n\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\n\t\t\t\t\tobj[timeline.y_property] = this.section;\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\n\t\t\t\t\tvar unit = scheduler._props[mode];\n\t\t\t\t\tobj[unit.map_to] = this.section;\n\t\t\t\t}\n\n\t\t\t\tscheduler.addEventNow(obj);\n\t\t\t}\n\t\t}\n\t}\n);\n\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\n\tthis.container = div;\n\tthis.index = index || 0;\n};\n\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.KeyNavNode,\n\t{\n\n\t\tisValid: function(){\n\t\t\tvar container = this.container;\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\n\t\t},\n\n\t\tfallback: function(){\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\n\t\t\tif(defaultSlot.isValid()){\n\t\t\t\treturn defaultSlot;\n\t\t\t}else{\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\n\t\t\t}\n\t\t},\n\t\tfocus: function(){\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\n\t\t\tthis.container.removeAttribute(\"tabindex\");\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\n\n\t\t},\n\t\tblur: function(){\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\n\t\t},\n\t\tgetNode: function(){\n\t\t\tif(!this.index){\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\n\t\t\t}else{\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\n\t\t\t}\n\t\t},\n\n\t\tkeys: {\n\t\t\t\"right\": function(e){\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\n\t\t\t},\n\t\t\t\"left\": function(e){\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\n\t\t\t},\n\t\t\t\"down\": function(){\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\n\t\t\t\tif(next && !next.isValid()){\n\t\t\t\t\tnext = next.fallback();\n\t\t\t\t}\n\n\t\t\t\tthis.moveTo(next);\n\t\t\t},\n\t\t\t\"enter\": function(e){\n\t\t\t\tthis.getNode().click();\n\t\t\t}\n\t\t}\n\t}\n);\n\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\n\tthis.container = div;\n\tthis.row = row || 0;\n\tthis.col = col || 0;\n};\n\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.KeyNavNode,\n\t{\n\n\t\tisValid: function(){\n\t\t\tvar grid = this._getGrid();\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\n\t\t},\n\t\tfallback: function(){\n\t\t\tvar row = this.row;\n\t\t\tvar col = this.col;\n\t\t\tvar grid = this._getGrid();\n\t\t\tif(!grid[row]){\n\t\t\t\trow = 0;\n\t\t\t}\n\t\t\tvar dir = true;\n\t\t\tif(row > grid.length / 2){\n\t\t\t\tdir = false;\n\t\t\t}\n\n\t\t\tif(!grid[row]){\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\n\t\t\t\tif(defaultSlot.isValid()){\n\t\t\t\t\treturn defaultSlot;\n\t\t\t\t}else{\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(dir){\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\n\t\t\t\t\t\trow++;\n\t\t\t\t\t\tcol = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(grid[row][c]){\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\n\t\t\t\t\tif(!grid[row][c] && !c){\n\t\t\t\t\t\trow--;\n\t\t\t\t\t\tcol = grid[row].length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tif(grid[row][c]){\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\n\t\t},\n\t\tfocus: function(){\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\n\n\t\t\tthis.container.removeAttribute(\"tabindex\");\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\n\t\t},\n\t\tblur: function(){\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\n\t\t},\n\t\t_getNode: function(row, col){\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\n\t\t},\n\t\tgetNode: function(){\n\t\t\treturn this._getNode(this.row, this.col);\n\t\t},\n\n\t\t_getGrid: function(){\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\n\t\t\tvar grid = [];\n\t\t\tfor(var i = 0; i < rows.length; i++){\n\t\t\t\tgrid[i] = [];\n\t\t\t\tvar row = rows[i];\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\n\t\t\t\t\tvar cell = cells[c];\n\t\t\t\t\tvar enabled = true;\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\n\t\t\t\t\t\tenabled = false;\n\t\t\t\t\t}\n\t\t\t\t\tgrid[i][c] = enabled;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn grid;\n\t\t},\n\n\n\t\tkeys: {\n\t\t\t\"right\": function(e){\n\t\t\t\tvar grid = this._getGrid();\n\t\t\t\tvar newRow = this.row;\n\t\t\t\tvar newCol = this.col + 1;\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\n\t\t\t\t\tif(grid[newRow + 1]){\n\t\t\t\t\t\tnewRow = newRow + 1;\n\t\t\t\t\t\tnewCol = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tnewCol = this.col;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\n\t\t\t\tif(!next.isValid()){\n\t\t\t\t\tnext = next.fallback();\n\t\t\t\t}\n\n\t\t\t\tthis.moveTo(next);\n\t\t\t},\n\t\t\t\"left\": function(e){\n\t\t\t\tvar grid = this._getGrid();\n\t\t\t\tvar newRow = this.row;\n\t\t\t\tvar newCol = this.col - 1;\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\n\t\t\t\t\tif(grid[newRow - 1]){\n\t\t\t\t\t\tnewRow = newRow - 1;\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tnewCol = this.col;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\n\t\t\t\tif(!next.isValid()){\n\t\t\t\t\tnext = next.fallback();\n\t\t\t\t}\n\n\t\t\t\tthis.moveTo(next);\n\t\t\t},\n\t\t\t\"down\": function(){\n\t\t\t\tvar grid = this._getGrid();\n\t\t\t\tvar newRow = this.row + 1;\n\t\t\t\tvar newCol = this.col;\n\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\n\t\t\t\t\tnewRow = this.row;\n\t\t\t\t}\n\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\n\t\t\t\tif(!next.isValid()){\n\t\t\t\t\tnext = next.fallback();\n\t\t\t\t}\n\n\t\t\t\tthis.moveTo(next);\n\t\t\t},\n\t\t\t\"up\": function(){\n\t\t\t\tvar grid = this._getGrid();\n\t\t\t\tvar newRow = this.row - 1;\n\t\t\t\tvar newCol = this.col;\n\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\n\t\t\t\t\tvar index = 0;\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\n\t\t\t\t\t\tindex = 1;\n\t\t\t\t\t}\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\n\t\t\t\t}else{\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\n\t\t\t\t\tif(!next.isValid()){\n\t\t\t\t\t\tnext = next.fallback();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.moveTo(next);\n\t\t\t\t}\n\n\t\t\t},\n\t\t\t\"enter\": function(e){\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\n\t\t\t}\n\t\t}\n\t}\n);\n\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.DataArea = function(index){\n\tthis.index = index || 0;\n};\n\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\n\tscheduler.$keyboardNavigation.KeyNavNode,\n\t{\n\t\tgetNode: function(index){\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\t},\n\n\t\t_handlers:null,\n\n\t\tisValid: function(){\n\t\t\treturn true;\n\t\t},\n\t\tfallback:function(){\n\t\t\treturn this;\n\t\t},\n\n\t\tkeys: {\n\t\t\t\"up,down,right,left\":function(){\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\n\t\t\t}\n\t\t}\n\t}\n);\n\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation.dispatcher = {\n\tisActive: false,\n\tactiveNode: null,\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\n\n\tkeepScrollPosition: function (callback) {\n\t\tvar top, left;\n\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\n\t\tif(!scrollable){\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\t}\n\n\t\tif(scrollable){\n\t\t\ttop = scrollable.scrollTop;\n\t\t\tleft = scrollable.scrollLeft;\n\t\t}\n\n\t\tcallback();\n\n\t\tif(scrollable){\n\t\t\tscrollable.scrollTop = top;\n\t\t\tscrollable.scrollLeft = left;\n\t\t}\n\t},\n\tenable: function(){\n\t\tif(!scheduler.$container){\n\t\t\t// do nothing if not initialized\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isActive = true;\n\t\tvar self = this;\n\t\tthis.keepScrollPosition(function () {\n\t\t\tself.globalNode.enable();\n\t\t\tself.setActiveNode(self.getActiveNode());\n\t\t});\n\t},\n\n\tdisable: function(){\n\t\tthis.isActive = false;\n\t\tthis.globalNode.disable();\n\t},\n\n\tisEnabled: function(){\n\t\treturn !!this.isActive;\n\t},\n\n\tgetDefaultNode: function(){\n\t\treturn this.globalNode.getDefaultNode();\n\t},\n\n\tsetDefaultNode: function() {\n\t\tthis.setActiveNode(this.getDefaultNode());\n\t},\n\n\tgetActiveNode: function(){\n\t\tvar node = this.activeNode;\n\t\tif(node && !node.isValid()){\n\t\t\tnode = node.fallback();\n\t\t}\n\t\treturn node;\n\t},\n\n\tfocusGlobalNode: function(){\n\t\tthis.blurNode(this.globalNode);\n\t\tthis.focusNode(this.globalNode);\n\t},\n\n\tsetActiveNode: function(el){\n\t\tif(!el || !el.isValid())\n\t\t\treturn;\n\n\t\tif(this.activeNode){\n\t\t\tif(this.activeNode.compareTo(el)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif(this.isEnabled()){\n\t\t\tthis.blurNode(this.activeNode);\n\t\t\tthis.activeNode = el;\n\t\t\tthis.focusNode(this.activeNode);\n\t\t}\n\t},\n\n\tfocusNode: function(el){\n\t\tif(el && el.focus){\n\t\t\tel.focus();\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\n\t\t\t}\n\t\t}\n\t},\n\tblurNode: function(el){\n\t\tif(el && el.blur){\n\t\t\tel.blur();\n\t\t}\n\t},\n\n\tgetInlineEditor: function(id){\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\n\t\tif(editor && editor.offsetWidth){\n\t\t\t// if exists and visible\n\t\t\treturn editor;\n\t\t}\n\t\treturn null;\n\t},\n\n\tkeyDownHandler: function (e) {\n\n\t\tif(e.defaultPrevented){\n\t\t\treturn;\n\t\t}\n\n\t\tvar activeElement = this.getActiveNode();\n\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\n\t\t\treturn;\n\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\n\t\t\treturn;\n\n\t\tif (!this.isEnabled())\n\t\t\treturn;\n\n\t\te = e || window.event;\n\n\t\tvar schedulerNode = this.globalNode;\n\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\n\n\t\tif(!activeElement){\n\t\t\tthis.setDefaultNode();\n\t\t}else if(activeElement.findHandler(command)){\n\t\t\tactiveElement.doAction(command, e);\n\t\t}else if(schedulerNode.findHandler(command)){\n\t\t\tschedulerNode.doAction(command, e);\n\t\t}\n\n\t},\n\n\t_timeout: null,\n\tdelay: function(callback, delay){\n\n\t\tclearTimeout(this._timeout);\n\t\tthis._timeout = setTimeout(callback, delay || 1);\n\n\t}\n};\n\n}","export default function(scheduler){\n\nscheduler.$keyboardNavigation._minicalendars = [];\n\nscheduler.$keyboardNavigation.isMinical = function(node){\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\n\tfor(var i = 0; i < minicalendars.length; i++){\n\t\tif(this.isChildOf(node, minicalendars[i]))\n\t\t\treturn true;\n\t}\n\treturn false;\n};\n\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\n\twhile(child && child !== parent){\n\t\tchild = child.parentNode;\n\t}\n\n\treturn !!(child === parent);\n};\n\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\n\n\tfunction focusMinical(e){\n\t\tvar target = e.target;\n\n\t\tdispatcher.enable();\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\n\t}\n\n\tfunction minicalClick(e){\n\t\tvar target = e.target || e.srcElement;\n\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\n\n\t\tvar rowIndex = 0;\n\t\tvar cellIndex = 0;\n\t\tif(cell){\n\t\t\tvar tr;\n\t\t\tvar td;\n\t\t\tvar current = target;\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\n\t\t\t\tcurrent = current.parentNode;\n\t\t\t}\n\t\t\tif(current){\n\t\t\t\ttd = current;\n\t\t\t\ttr = td.parentNode;\n\t\t\t}\n\n\t\t\tif(tr && td){\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\n\t\t\t\t\tif(rows[i] == tr){\n\t\t\t\t\t\trowIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\t\tif(cells[i] == td){\n\t\t\t\t\t\tcellIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar root = e.currentTarget;\n\t\tdispatcher.delay(function(){\n\t\t\tif(prev || next || cell){\n\n\t\t\t\tvar element;\n\t\t\t\tif(prev){\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\n\t\t\t\t}else if(next){\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\n\t\t\t\t}else if(cell){\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\n\n\t\t\t\t}\n\n\t\t\t\tif(element){\n\n\t\t\t\t\tdispatcher.enable();\n\t\t\t\t\tif(element.isValid()){\n\t\t\t\t\t\tdispatcher.activeNode = null;\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\t}\n\n\tif(scheduler.renderCalendar){\n\t\tvar renderMinical = scheduler.renderCalendar;\n\t\tscheduler.renderCalendar = function(){\n\t\t\tvar cal = renderMinical.apply(this, arguments);\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\n\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\n\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\n\n\t\t\tvar added = false;\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\n\t\t\t\tif(minicalendars[i] == cal){\n\t\t\t\t\tadded = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!added)\n\t\t\t\tminicalendars.push(cal);\n\n\t\t\tif(dispatcher.isEnabled()){\n\t\t\t\tvar node = dispatcher.getActiveNode();\n\t\t\t\tif(node && node.container == cal){\n\t\t\t\t\tdispatcher.focusNode(node);\n\t\t\t\t}else{\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\n\t\t\t}\n\t\t\treturn cal;\n\t\t};\n\t}\n\n\tif(scheduler.destroyCalendar){\n\t\tvar destroyMinical = scheduler.destroyCalendar;\n\t\tscheduler.destroyCalendar = function(cal, force){\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\n\t\t\tvar res = destroyMinical.apply(this, arguments);\n\n\t\t\tif(!cal || !cal.parentNode){\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\n\t\t\t\t\tif(minicalendars[i] == cal){\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\n\t\t\t\t\t\tminicalendars.splice(i, 1);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn res;\n\t\t};\n\t}\n};\n\n}","export default function(scheduler){\n\nscheduler.attachEvent(\"onTemplatesReady\",function(){\n\n\tthis.layers.sort(function(a, b){\n\t\treturn a.zIndex - b.zIndex;\n\t});\n\n\tscheduler._dp_init=function(dp){\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\n\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\n\t\t});\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\n\t\t\t\tif (!this.validId(id)) return;\n\t\t\t\tvar z=dp.getState(id);\n\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\n\t\t\t\tif (z==\"deleted\") return false;\n\t\t\t\tif (z==\"true_deleted\") return true;\n\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse return true;\n\t\t});\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\n\t\t});\n\n\t\tdp._getRowData=function(id,pref){\n\t\t\tvar ev=this.obj.getEvent(id);\n\t\t\tvar data = {};\n\n\t\t\tfor (var a in ev){\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\n\t\t\t\telse\n\t\t\t\t\tdata[a] = ev[a];\n\t\t\t}\n\t\t\treturn data;\n\t\t};\n\t\tdp._clearUpdateFlag=function(){};\n\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\n\t\t\tthis.obj.deleteEvent(id);\n\t\t});\n\t};\n\n\t(function() {\n var _cloneObj = function(obj){\n if(obj === null || typeof(obj) != 'object')\n return obj;\n var temp = new obj.constructor();\n for(var key in obj)\n temp[key] = _cloneObj(obj[key]);\n return temp;\n };\n\n\t\tscheduler._dataprocessors = [];\n\t\tscheduler._layers_zindex = {};\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\n\t});\n\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\n\t\tvar ev=start_date;\n\t\tif (arguments.length!=1){\n\t\t\tev=extra_data||{};\n\t\t\tev.start_date=start_date;\n\t\t\tev.end_date=end_date;\n\t\t\tev.text=text;\n\t\t\tev.id=id;\n\t\t\tev.layer = this.defaultLayer;\n\t\t}\n\t\tev.id = ev.id||scheduler.uid();\n\t\tev.text = ev.text||\"\";\n\n\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\n\t\tev._timed=this.isOneDayEvent(ev);\n\n\t\tvar is_new=!this._events[ev.id];\n\t\tthis._events[ev.id]=ev;\n\t\tthis.event_updated(ev);\n\t\tif (!this._loading)\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\n\t};\n\n\tthis._evs_layer = {};\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\n\t\tthis._evs_layer[this.layers[i].name] = [];\n\t}\n\n\tscheduler.addEventNow=function(start,end,e){\n\t\tvar base = {};\n\t\tif (typeof start == \"object\"){\n\t\t\tbase = start;\n\t\t\tstart = null;\n\t\t}\n\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\n\t\tvar start_date = new Date(start);\n\t\tif (!end){\n\t\t\tvar start_hour = this.config.first_hour;\n\t\t\tif (start_hour > start_date.getHours()){\n\t\t\t\tstart_date.setHours(start_hour);\n\t\t\t\tstart = start_date.valueOf();\n\t\t\t}\n\t\t\tend = start+d;\n\t\t}\n\n\n\t\tbase.start_date = base.start_date||start_date;\n\t\tbase.end_date = base.end_date||new Date(end);\n\t\tbase.text = base.text||this.locale.labels.new_event;\n\t\tbase.id = this._drag_id = this.uid();\n\t\tbase.layer = this.defaultLayer;\n\t\tthis._drag_mode=\"new-size\";\n\n\t\tthis._loading=true;\n\t\tthis.addEvent(base);\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\n\t\tthis._loading=false;\n\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\n\t\tthis._on_mouse_up(e);\n\t};\n\n\tscheduler._t_render_view_data = function(events) { // helper\n\t\tif (this.config.multi_day && !this._table_view) {\n\t\t\tvar tvs = [];\n\t\t\tvar tvd = [];\n\t\t\tfor (var k = 0; k < events.length; k++) {\n\t\t\t\tif (events[k]._timed)\n\t\t\t\t\ttvs.push(events[k]);\n\t\t\t\telse\n\t\t\t\t\ttvd.push(events[k]);\n\t\t\t}\n\t\t\tthis._table_view = true;\n\t\t\tthis.render_data(tvd);\n\t\t\tthis._table_view = false;\n\t\t\tthis.render_data(tvs);\n\t\t}\n\t\telse\n\t\t\tthis.render_data(events);\n\t};\n\n\tscheduler.render_view_data = function(){\n\t\tif (this._not_render) {\n\t\t\tthis._render_wait = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._render_wait = false;\n\n\t\tthis.clear_view();\n\n\t\tthis._evs_layer = {};\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\n\t\t}\n\n\t\tvar evs = this.get_visible_events();\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\n\t\t\tif(this._evs_layer[evs[i].layer])\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\n\t\t}\n\n\t\tif(this._mode == 'month') { // old logic is used\n\t\t\tvar tevs = [];\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\n\t\t\t\tif (this.layers[i].visible)\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\n\t\t\t}\n\t\t\tthis._t_render_view_data(tevs);\n\t\t}\n\t\telse { // week, day; should use new logic\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\n\t\t\t\tif (this.layers[i].visible) {\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\n\t\tvar id = ev.id;\n\n\t\tif(contentA.indexOf('
';\n\t\thtml+='
 
';\n\t\thtml+='
'+contentA+'
';\n\t\thtml+='
'+contentB+'
';\n\t\thtml+='
';\n\n\t\td.innerHTML=html;\n\t\td.style.zIndex = 100;\n\t\treturn d.firstChild;\n\t};\n\n\tscheduler.render_event_bar=function(ev){\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\n\n\t\tvar x=this._colsS[ev._sday];\n\t\tvar x2=this._colsS[ev._eday];\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\n\t\tvar hb = this.xy.bar_height;\n\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\n\n\t\tvar d=document.createElement(\"div\");\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\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);\n\t\tif (cse) cs=cs+\" \"+cse;\n\n\t\tvar html='
';\n\n\t\tif (ev._timed)\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);\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) + '
)');\n\t\thtml+='';\n\n\t\td.innerHTML=html;\n\n\t\tthis._rendered.push(d.firstChild);\n\t\tparent.appendChild(d.firstChild);\n\t};\n\n\tscheduler.render_event=function(ev){\n\t\tvar menu = scheduler.xy.menu_width;\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\n\t\t\tmenu = 0;\n\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\n\t\tvar parent=scheduler.locate_holder(ev._sday);\n\t\tif (!parent) return; //attempt to render non-visible event\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\n\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\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\n\t\t\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\n\t\tvar left=ev._sorder*width+1;\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\n\n\n\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));\n\n\t\tthis._rendered.push(d);\n\t\tparent.appendChild(d);\n\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\n\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\n\n\t\tif (this._edit_id==ev.id){\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\n\t\t\tvar new_zIndex = d.style.zIndex;\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\n\t\t\tvar d=document.createElement(\"div\");\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\n\t\t\td.className=\"dhx_cal_editor\";\n\t\t\td.style.zIndex = new_zIndex;\n\t\t\tvar d2=document.createElement(\"div\");\n\t\t\tthis.set_xy(d2,width-6,height-26);\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\n\n\n\t\t\td2.style.zIndex = new_zIndex;\n\t\t\td.appendChild(d2);\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\n\t\t\tthis._rendered.push(d);\n\n\t\t\td2.innerHTML=\"\";\n\n\t\t\tthis._editor=d2.firstChild;\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\n\t\t\t\tif (e.shiftKey) return true;\n\t\t\t\tvar code= e.keyCode;\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\n\t\t\t});\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\n\t\t\td2.firstChild.focus();\n\t\t\t//IE and opera can add x-scroll during focusing\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\n\t\t\td2.firstChild.select();\n\t\t}\n\t\tif (this._select_id==ev.id){\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\n\t\t\tvar icons_str=\"\";\n\t\t\tfor (var i=0; i\";\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\n\t\t\tobj.style.left=left-menu+1;\n\t\t\tobj.style.zIndex = d.style.zIndex;\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\n\t\t\tthis._rendered.push(obj);\n\t\t}\n\n\t};\n\n scheduler.filter_agenda = function(id, event) {\n var layer = scheduler.getLayer(event.layer);\n return (layer && layer.visible);\n };\n});\n\n\n}","import definition from \"../legacy/dhtmlxcommon\";\n\n\nexport default function(scheduler){\n\tdefinition();\n}","import global from \"../global\";\nimport dhtmlxErrorConstructor from \"./dhtmlx_error\";\nexport default function extend() {\n\n/* eslint-disable */\n\nif (!global.dhtmlx) {\n\tglobal.dhtmlx = function (obj) {\n\t\tfor (var a in obj) dhtmlx[a] = obj[a];\n\t\treturn dhtmlx; //simple singleton\n\t};\n}\nlet dhtmlx = global.dhtmlx;\n\ndhtmlx.extend_api = function (name, map, ext) {\n\tvar t = global[name];\n\tif (!t) return; //component not defined\n\tglobal[name] = function (obj) {\n\t\tvar that;\n\n\t\tif (obj && typeof obj == \"object\" && !obj.tagName) {\n\t\t\tthat = t.apply(this, (map._init ? map._init(obj) : arguments));\n\t\t\t//global settings\n\t\t\tfor (var a in dhtmlx)\n\t\t\t\tif (map[a]) this[map[a]](dhtmlx[a]);\n\t\t\t//local settings\n\t\t\tfor (var a in obj) {\n\t\t\t\tif (map[a]) this[map[a]](obj[a]);\n\t\t\t\telse if (a.indexOf(\"on\") === 0) {\n\t\t\t\t\tthis.attachEvent(a, obj[a]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else\n\t\t\tthat = t.apply(this, arguments);\n\t\tif (map._patch) map._patch(this);\n\t\treturn that || this;\n\t};\n\tglobal[name].prototype = t.prototype;\n\tif (ext)\n\t\tdhtmlXHeir(global[name].prototype, ext);\n};\n\n// TODO: remove\nglobal.dhtmlxAjax = {\n\tget: function (url, callback) {\n\t\tvar t = new dtmlXMLLoaderObject(true);\n\t\tt.async = (arguments.length < 3);\n\t\tt.waitCall = callback;\n\t\tt.loadXML(url);\n\t\treturn t;\n\t},\n\tpost: function (url, post, callback) {\n\t\tvar t = new dtmlXMLLoaderObject(true);\n\t\tt.async = (arguments.length < 4);\n\t\tt.waitCall = callback;\n\t\tt.loadXML(url, true, post);\n\t\treturn t;\n\t},\n\tgetSync: function (url) {\n\t\treturn this.get(url, null, true);\n\t},\n\tpostSync: function (url, post) {\n\t\treturn this.post(url, post, null, true);\n\t}\n};\n\n\n// TODO: remove\n/**\n *\t @desc: xmlLoader object\n\t*\t @type: private\n\t*\t @param: funcObject - xml parser function\n\t*\t @param: object - jsControl object\n\t*\t @param: async - sync/async mode (async by default)\n\t*\t @param: rSeed - enable/disable random seed ( prevent IE caching)\n\t*\t @topic: 0\n\t*/\nfunction dtmlXMLLoaderObject(funcObject, dhtmlObject, async, rSeed) {\n\tthis.xmlDoc = \"\";\n\n\tif (typeof (async) != \"undefined\")\n\t\tthis.async = async;\n\telse\n\t\tthis.async = true;\n\n\tthis.onloadAction = funcObject || null;\n\tthis.mainObject = dhtmlObject || null;\n\tthis.waitCall = null;\n\tthis.rSeed = rSeed || false;\n\treturn this;\n}\n\nglobal.dtmlXMLLoaderObject = dtmlXMLLoaderObject;\n\ndtmlXMLLoaderObject.count = 0;\n\n/**\n *\t @desc: xml loading handler\n\t*\t @type: private\n\t*\t @param: dtmlObject - xmlLoader object\n\t*\t @topic: 0\n\t*/\ndtmlXMLLoaderObject.prototype.waitLoadFunction = function (dhtmlObject) {\n\tvar once = true;\n\tthis.check = function () {\n\t\tif ((dhtmlObject) && (dhtmlObject.onloadAction)) {\n\t\t\tif ((!dhtmlObject.xmlDoc.readyState) || (dhtmlObject.xmlDoc.readyState == 4)) {\n\t\t\t\tif (!once)\n\t\t\t\t\treturn;\n\n\t\t\t\tonce = false; //IE 5 fix\n\t\t\t\tdtmlXMLLoaderObject.count++;\n\t\t\t\tif (typeof dhtmlObject.onloadAction == \"function\")\n\t\t\t\t\tdhtmlObject.onloadAction(dhtmlObject.mainObject, null, null, null, dhtmlObject);\n\n\t\t\t\tif (dhtmlObject.waitCall) {\n\t\t\t\t\tdhtmlObject.waitCall.call(this, dhtmlObject);\n\t\t\t\t\tdhtmlObject.waitCall = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\treturn this.check;\n};\n\n/**\n *\t @desc: return XML top node\n\t*\t @param: tagName - top XML node tag name (not used in IE, required for Safari and Mozilla)\n\t*\t @type: private\n\t*\t @returns: top XML node\n\t*\t @topic: 0\n\t*/\ndtmlXMLLoaderObject.prototype.getXMLTopNode = function (tagName, oldObj) {\n\tvar z;\n\n\tif (this.xmlDoc.responseXML) {\n\t\tvar temp = this.xmlDoc.responseXML.getElementsByTagName(tagName);\n\t\tif (temp.length === 0 && tagName.indexOf(\":\") != -1)\n\t\t\tvar temp = this.xmlDoc.responseXML.getElementsByTagName((tagName.split(\":\"))[1]);\n\t\tz = temp[0];\n\t} else\n\t\tz = this.xmlDoc.documentElement;\n\n\tif (z) {\n\t\tthis._retry = false;\n\t\treturn z;\n\t}\n\n\tif (!this._retry && _isIE) {\n\t\tthis._retry = true;\n\t\tvar oldObj = this.xmlDoc;\n\t\tthis.loadXMLString(this.xmlDoc.responseText.replace(/^[\\s]+/, \"\"), true);\n\t\treturn this.getXMLTopNode(tagName, oldObj);\n\t}\n\n\tdhtmlxError.throwError(\"LoadXML\", \"Incorrect XML\", [\n\t\t(oldObj || this.xmlDoc),\n\t\tthis.mainObject\n\t]);\n\n\treturn document.createElement(\"div\");\n};\n\n/**\n *\t @desc: load XML from string\n\t*\t @type: private\n\t*\t @param: xmlString - xml string\n\t*\t @topic: 0\n\t*/\ndtmlXMLLoaderObject.prototype.loadXMLString = function (xmlString, silent) {\n\n\tif (!_isIE) {\n\t\tvar parser = new DOMParser();\n\t\tthis.xmlDoc = parser.parseFromString(xmlString, \"text/xml\");\n\t} else {\n\t\tthis.xmlDoc = new ActiveXObject(\"Microsoft.XMLDOM\");\n\t\tthis.xmlDoc.async = this.async;\n\t\tthis.xmlDoc.onreadystatechange = function () { };\n\t\tthis.xmlDoc[\"loadXM\" + \"L\"](xmlString);\n\t}\n\n\tif (silent)\n\t\treturn;\n\n\tif (this.onloadAction)\n\t\tthis.onloadAction(this.mainObject, null, null, null, this);\n\n\tif (this.waitCall) {\n\t\tthis.waitCall();\n\t\tthis.waitCall = null;\n\t}\n};\n/**\n *\t @desc: load XML\n\t*\t @type: private\n\t*\t @param: filePath - xml file path\n\t*\t @param: postMode - send POST request\n\t*\t @param: postVars - list of vars for post request\n\t*\t @topic: 0\n\t*/\ndtmlXMLLoaderObject.prototype.loadXML = function (filePath, postMode, postVars, rpc) {\n\tif (this.rSeed)\n\t\tfilePath += ((filePath.indexOf(\"?\") != -1) ? \"&\" : \"?\") + \"a_dhx_rSeed=\" + (new Date()).valueOf();\n\tthis.filePath = filePath;\n\n\tif ((!_isIE) && (global.XMLHttpRequest))\n\t\tthis.xmlDoc = new XMLHttpRequest();\n\telse {\n\t\tthis.xmlDoc = new ActiveXObject(\"Microsoft.XMLHTTP\");\n\t}\n\n\tif (this.async)\n\t\tthis.xmlDoc.onreadystatechange = new this.waitLoadFunction(this);\n\tif (typeof postMode == \"string\")\n\t\tthis.xmlDoc.open(postMode, filePath, this.async);\n\telse\n\t\tthis.xmlDoc.open(postMode ? \"POST\" : \"GET\", filePath, this.async);\n\n\tif (rpc) {\n\t\tthis.xmlDoc.setRequestHeader(\"User-Agent\", \"dhtmlxRPC v0.1 (\" + navigator.userAgent + \")\");\n\t\tthis.xmlDoc.setRequestHeader(\"Content-type\", \"text/xml\");\n\t}\n\n\telse if (postMode)\n\t\tthis.xmlDoc.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n\tthis.xmlDoc.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\tthis.xmlDoc.send(null || postVars);\n\n\tif (!this.async)\n\t\t(new this.waitLoadFunction(this))();\n};\n/**\n *\t @desc: destructor, cleans used memory\n\t*\t @type: private\n\t*\t @topic: 0\n\t*/\ndtmlXMLLoaderObject.prototype.destructor = function () {\n\tthis._filterXPath = null;\n\tthis._getAllNamedChilds = null;\n\tthis._retry = null;\n\tthis.async = null;\n\tthis.rSeed = null;\n\tthis.filePath = null;\n\tthis.onloadAction = null;\n\tthis.mainObject = null;\n\tthis.xmlDoc = null;\n\tthis.doXPath = null;\n\tthis.doXPathOpera = null;\n\tthis.doXSLTransToObject = null;\n\tthis.doXSLTransToString = null;\n\tthis.loadXML = null;\n\tthis.loadXMLString = null;\n\t// this.waitLoadFunction = null;\n\tthis.doSerialization = null;\n\tthis.xmlNodeToJSON = null;\n\tthis.getXMLTopNode = null;\n\tthis.setXSLParamValue = null;\n\treturn null;\n};\n\ndtmlXMLLoaderObject.prototype.xmlNodeToJSON = function (node) {\n\tvar t = {};\n\tfor (var i = 0; i < node.attributes.length; i++)\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\n\tt[\"_tagvalue\"] = node.firstChild ? node.firstChild.nodeValue : \"\";\n\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\tvar name = node.childNodes[i].tagName;\n\t\tif (name) {\n\t\t\tif (!t[name]) t[name] = [];\n\t\t\tt[name].push(this.xmlNodeToJSON(node.childNodes[i]));\n\t\t}\n\t}\n\treturn t;\n};\n\nfunction dhtmlDragAndDropObject() {\n\tif (global.dhtmlDragAndDrop)\n\t\treturn global.dhtmlDragAndDrop;\n\n\tthis.lastLanding = 0;\n\tthis.dragNode = 0;\n\tthis.dragStartNode = 0;\n\tthis.dragStartObject = 0;\n\tthis.tempDOMU = null;\n\tthis.tempDOMM = null;\n\tthis.waitDrag = 0;\n\tglobal.dhtmlDragAndDrop = this;\n\n\treturn this;\n}\n\nglobal.dhtmlDragAndDropObject = dhtmlDragAndDropObject;\n\ndhtmlDragAndDropObject.prototype.removeDraggableItem = function (htmlNode) {\n\thtmlNode.onmousedown = null;\n\thtmlNode.dragStarter = null;\n\thtmlNode.dragLanding = null;\n};\n\ndhtmlDragAndDropObject.prototype.addDraggableItem = function (htmlNode, dhtmlObject) {\n\thtmlNode.onmousedown = this.preCreateDragCopy;\n\thtmlNode.dragStarter = dhtmlObject;\n\tthis.addDragLanding(htmlNode, dhtmlObject);\n};\n\ndhtmlDragAndDropObject.prototype.addDragLanding = function (htmlNode, dhtmlObject) {\n\thtmlNode.dragLanding = dhtmlObject;\n};\n\ndhtmlDragAndDropObject.prototype.preCreateDragCopy = function (e) {\n\tif ((e || global.event) && (e || event).button == 2)\n\t\treturn;\n\n\tif (global.dhtmlDragAndDrop.waitDrag) {\n\t\tglobal.dhtmlDragAndDrop.waitDrag = 0;\n\t\tdocument.body.onmouseup = global.dhtmlDragAndDrop.tempDOMU;\n\t\tdocument.body.onmousemove = global.dhtmlDragAndDrop.tempDOMM;\n\t\treturn false;\n\t}\n\n\tif (global.dhtmlDragAndDrop.dragNode)\n\t\tglobal.dhtmlDragAndDrop.stopDrag(e);\n\n\tglobal.dhtmlDragAndDrop.waitDrag = 1;\n\tglobal.dhtmlDragAndDrop.tempDOMU = document.body.onmouseup;\n\tglobal.dhtmlDragAndDrop.tempDOMM = document.body.onmousemove;\n\tglobal.dhtmlDragAndDrop.dragStartNode = this;\n\tglobal.dhtmlDragAndDrop.dragStartObject = this.dragStarter;\n\tdocument.body.onmouseup = global.dhtmlDragAndDrop.preCreateDragCopy;\n\tdocument.body.onmousemove = global.dhtmlDragAndDrop.callDrag;\n\tglobal.dhtmlDragAndDrop.downtime = new Date().valueOf();\n\n\n\tif ((e) && (e.preventDefault)) {\n\t\te.preventDefault();\n\t\treturn false;\n\t}\n\treturn false;\n};\n\ndhtmlDragAndDropObject.prototype.callDrag = function (e) {\n\tif (!e)\n\t\te = global.event;\n\tvar dragger = global.dhtmlDragAndDrop;\n\tif ((new Date()).valueOf() - dragger.downtime < 100) return;\n\n\t//if ((e.button == 0)&&(_isIE))\n\t//\treturn dragger.stopDrag();\n\n\tif (!dragger.dragNode) {\n\t\tif (dragger.waitDrag) {\n\t\t\tdragger.dragNode = dragger.dragStartObject._createDragNode(dragger.dragStartNode, e);\n\n\t\t\tif (!dragger.dragNode)\n\t\t\t\treturn dragger.stopDrag();\n\n\t\t\tdragger.dragNode.onselectstart = function () { return false; };\n\t\t\tdragger.gldragNode = dragger.dragNode;\n\t\t\tdocument.body.appendChild(dragger.dragNode);\n\t\t\tdocument.body.onmouseup = dragger.stopDrag;\n\t\t\tdragger.waitDrag = 0;\n\t\t\tdragger.dragNode.pWindow = global;\n\t\t\tdragger.initFrameRoute();\n\t\t}\n\t\telse return dragger.stopDrag(e, true);\n\t}\n\n\tif (dragger.dragNode.parentNode != global.document.body && dragger.gldragNode) {\n\t\tvar grd = dragger.gldragNode;\n\n\t\tif (dragger.gldragNode.old)\n\t\t\tgrd = dragger.gldragNode.old;\n\n\t\t//if (!document.all) dragger.calculateFramePosition();\n\t\tgrd.parentNode.removeChild(grd);\n\t\tvar oldBody = dragger.dragNode.pWindow;\n\n\t\tif (grd.pWindow && grd.pWindow.dhtmlDragAndDrop.lastLanding)\n\t\t\tgrd.pWindow.dhtmlDragAndDrop.lastLanding.dragLanding._dragOut(grd.pWindow.dhtmlDragAndDrop.lastLanding);\n\n\t\t//\t\tvar oldp=dragger.dragNode.parentObject;\n\t\tif (_isIE) {\n\t\t\tvar div = document.createElement(\"div\");\n\t\t\tdiv.innerHTML = dragger.dragNode.outerHTML;\n\t\t\tdragger.dragNode = div.childNodes[0];\n\t\t} else\n\t\t\tdragger.dragNode = dragger.dragNode.cloneNode(true);\n\n\t\tdragger.dragNode.pWindow = global;\n\t\t//\t\tdragger.dragNode.parentObject=oldp;\n\n\t\tdragger.gldragNode.old = dragger.dragNode;\n\t\tdocument.body.appendChild(dragger.dragNode);\n\t\toldBody.dhtmlDragAndDrop.dragNode = dragger.dragNode;\n\t}\n\n\tdragger.dragNode.style.left = e.clientX + 15 +\n\t\t(dragger.fx ? dragger.fx * (-1) : 0) +\n\t\t(document.body.scrollLeft || document.documentElement.scrollLeft) + \"px\";\n\tdragger.dragNode.style.top = e.clientY + 3 +\n\t\t(dragger.fy ? dragger.fy * (-1) : 0) +\n\t\t(document.body.scrollTop || document.documentElement.scrollTop) + \"px\";\n\n\tvar z;\n\tif (!e.srcElement)\n\t\tz = e.target;\n\telse\n\t\tz = e.srcElement;\n\tdragger.checkLanding(z, e);\n};\n\ndhtmlDragAndDropObject.prototype.calculateFramePosition = function (n) {\n\t//this.fx = 0, this.fy = 0;\n\tif (global.name) {\n\t\tvar el = parent.frames[global.name].frameElement.offsetParent;\n\t\tvar fx = 0;\n\t\tvar fy = 0;\n\n\t\twhile (el) {\n\t\t\tfx += el.offsetLeft;\n\t\t\tfy += el.offsetTop;\n\t\t\tel = el.offsetParent;\n\t\t}\n\n\t\tif ((parent.dhtmlDragAndDrop)) {\n\t\t\tvar ls = parent.dhtmlDragAndDrop.calculateFramePosition(1);\n\t\t\tfx += ls.split('_')[0] * 1;\n\t\t\tfy += ls.split('_')[1] * 1;\n\t\t}\n\n\t\tif (n)\n\t\t\treturn fx + \"_\" + fy;\n\t\telse\n\t\t\tthis.fx = fx;\n\t\tthis.fy = fy;\n\t}\n\treturn \"0_0\";\n};\n\ndhtmlDragAndDropObject.prototype.checkLanding = function (htmlObject, e) {\n\tif ((htmlObject) && (htmlObject.dragLanding)) {\n\t\tif (this.lastLanding)\n\t\t\tthis.lastLanding.dragLanding._dragOut(this.lastLanding);\n\t\tthis.lastLanding = htmlObject;\n\t\tthis.lastLanding = this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, e.clientX,\n\t\t\te.clientY, e);\n\t\tthis.lastLanding_scr = (_isIE ? e.srcElement : e.target);\n\t} else {\n\t\tif ((htmlObject) && (htmlObject.tagName != \"BODY\"))\n\t\t\tthis.checkLanding(htmlObject.parentNode, e);\n\t\telse {\n\t\t\tif (this.lastLanding)\n\t\t\t\tthis.lastLanding.dragLanding._dragOut(this.lastLanding, e.clientX, e.clientY, e);\n\t\t\tthis.lastLanding = 0;\n\n\t\t\tif (this._onNotFound)\n\t\t\t\tthis._onNotFound();\n\t\t}\n\t}\n};\n\ndhtmlDragAndDropObject.prototype.stopDrag = function (e, mode) {\n\tvar dragger = global.dhtmlDragAndDrop;\n\n\tif (!mode) {\n\t\tdragger.stopFrameRoute();\n\t\tvar temp = dragger.lastLanding;\n\t\tdragger.lastLanding = null;\n\n\t\tif (temp)\n\t\t\ttemp.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, temp,\n\t\t\t\t(_isIE ? event.srcElement : e.target));\n\t}\n\tdragger.lastLanding = null;\n\n\tif ((dragger.dragNode) && (dragger.dragNode.parentNode == document.body))\n\t\tdragger.dragNode.parentNode.removeChild(dragger.dragNode);\n\tdragger.dragNode = 0;\n\tdragger.gldragNode = 0;\n\tdragger.fx = 0;\n\tdragger.fy = 0;\n\tdragger.dragStartNode = 0;\n\tdragger.dragStartObject = 0;\n\tdocument.body.onmouseup = dragger.tempDOMU;\n\tdocument.body.onmousemove = dragger.tempDOMM;\n\tdragger.tempDOMU = null;\n\tdragger.tempDOMM = null;\n\tdragger.waitDrag = 0;\n};\n\ndhtmlDragAndDropObject.prototype.stopFrameRoute = function (win) {\n\tif (win)\n\t\tglobal.dhtmlDragAndDrop.stopDrag(1, 1);\n\n\tfor (var i = 0; i < global.frames.length; i++) {\n\t\ttry {\n\t\t\tif ((global.frames[i] != win) && (global.frames[i].dhtmlDragAndDrop))\n\t\t\t\tglobal.frames[i].dhtmlDragAndDrop.stopFrameRoute(global);\n\t\t} catch (e) { }\n\t}\n\n\ttry {\n\t\tif ((parent.dhtmlDragAndDrop) && (parent != global) && (parent != win))\n\t\t\tparent.dhtmlDragAndDrop.stopFrameRoute(global);\n\t} catch (e) { }\n};\n\ndhtmlDragAndDropObject.prototype.initFrameRoute = function (win, mode) {\n\tif (win) {\n\t\tglobal.dhtmlDragAndDrop.preCreateDragCopy();\n\t\tglobal.dhtmlDragAndDrop.dragStartNode = win.dhtmlDragAndDrop.dragStartNode;\n\t\tglobal.dhtmlDragAndDrop.dragStartObject = win.dhtmlDragAndDrop.dragStartObject;\n\t\tglobal.dhtmlDragAndDrop.dragNode = win.dhtmlDragAndDrop.dragNode;\n\t\tglobal.dhtmlDragAndDrop.gldragNode = win.dhtmlDragAndDrop.dragNode;\n\t\tglobal.document.body.onmouseup = global.dhtmlDragAndDrop.stopDrag;\n\t\tglobal.waitDrag = 0;\n\n\t\tif (((!_isIE) && (mode)) && ((!_isFF) || (_FFrv < 1.8)))\n\t\t\tglobal.dhtmlDragAndDrop.calculateFramePosition();\n\t}\n\ttry {\n\t\tif ((parent.dhtmlDragAndDrop) && (parent != global) && (parent != win))\n\t\t\tparent.dhtmlDragAndDrop.initFrameRoute(global);\n\t} catch (e) { }\n\n\tfor (var i = 0; i < global.frames.length; i++) {\n\t\ttry {\n\t\t\tif ((global.frames[i] != win) && (global.frames[i].dhtmlDragAndDrop))\n\t\t\t\tglobal.frames[i].dhtmlDragAndDrop.initFrameRoute(global, ((!win || mode) ? 1 : 0));\n\t\t} catch (e) { }\n\t}\n};\n\nvar _isFF = false;\nvar _isIE = false;\nvar _isOpera = false;\nvar _isKHTML = false;\nvar _isMacOS = false;\nvar _isChrome = false;\nvar _FFrv = false;\nvar _KHTMLrv = false;\nvar _OperaRv = false;\n\nif (navigator.userAgent.indexOf('Macintosh') != -1)\n\t_isMacOS = true;\n\n\nif (navigator.userAgent.toLowerCase().indexOf('chrome') > -1)\n\t_isChrome = true;\n\nif ((navigator.userAgent.indexOf('Safari') != -1) || (navigator.userAgent.indexOf('Konqueror') != -1)) {\n\t_KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Safari') + 7, 5));\n\n\tif (_KHTMLrv > 525) { //mimic FF behavior for Safari 3.1+\n\t\t_isFF = true;\n\t\t_FFrv = 1.9;\n\t} else\n\t\t_isKHTML = true;\n} else if (navigator.userAgent.indexOf('Opera') != -1) {\n\t_isOpera = true;\n\t_OperaRv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera') + 6, 3));\n}\n\n\nelse if (navigator.appName.indexOf(\"Microsoft\") != -1) {\n\t_isIE = true;\n\tif ((navigator.appVersion.indexOf(\"MSIE 8.0\") != -1 || navigator.appVersion.indexOf(\"MSIE 9.0\") != -1 || navigator.appVersion.indexOf(\"MSIE 10.0\") != -1) && document.compatMode != \"BackCompat\") {\n\t\t_isIE = 8;\n\t}\n} else if (navigator.appName == 'Netscape' && navigator.userAgent.indexOf(\"Trident\") != -1) {\n\t//ie11\n\t_isIE = 8;\n} else {\n\t_isFF = true;\n\t_FFrv = parseFloat(navigator.userAgent.split(\"rv:\")[1]);\n}\n\n\n//multibrowser Xpath processor\ndtmlXMLLoaderObject.prototype.doXPath = function (xpathExp, docObj, namespace, result_type) {\n\tif (_isKHTML || (!_isIE && !global.XPathResult))\n\t\treturn this.doXPathOpera(xpathExp, docObj);\n\n\tif (_isIE) { //IE\n\t\tif (!docObj)\n\t\t\tif (!this.xmlDoc.nodeName)\n\t\t\t\tdocObj = this.xmlDoc.responseXML;\n\t\t\telse\n\t\t\t\tdocObj = this.xmlDoc;\n\n\t\tif (!docObj)\n\t\t\tdhtmlxError.throwError(\"LoadXML\", \"Incorrect XML\", [\n\t\t\t\t(docObj || this.xmlDoc),\n\t\t\t\tthis.mainObject\n\t\t\t]);\n\n\t\tif (namespace)\n\t\t\tdocObj.setProperty(\"SelectionNamespaces\", \"xmlns:xsl='\" + namespace + \"'\"); //\n\n\t\tif (result_type == 'single') {\n\t\t\treturn docObj.selectSingleNode(xpathExp);\n\t\t}\n\t\telse {\n\t\t\treturn docObj.selectNodes(xpathExp) || new Array(0);\n\t\t}\n\t} else { //Mozilla\n\t\tvar nodeObj = docObj;\n\n\t\tif (!docObj) {\n\t\t\tif (!this.xmlDoc.nodeName) {\n\t\t\t\tdocObj = this.xmlDoc.responseXML;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdocObj = this.xmlDoc;\n\t\t\t}\n\t\t}\n\n\t\tif (!docObj)\n\t\t\tdhtmlxError.throwError(\"LoadXML\", \"Incorrect XML\", [\n\t\t\t\t(docObj || this.xmlDoc),\n\t\t\t\tthis.mainObject\n\t\t\t]);\n\n\t\tif (docObj.nodeName.indexOf(\"document\") != -1) {\n\t\t\tnodeObj = docObj;\n\t\t}\n\t\telse {\n\t\t\tnodeObj = docObj;\n\t\t\tdocObj = docObj.ownerDocument;\n\t\t}\n\t\tvar retType = XPathResult.ANY_TYPE;\n\n\t\tif (result_type == 'single')\n\t\t\tretType = XPathResult.FIRST_ORDERED_NODE_TYPE;\n\t\tvar rowsCol = [];\n\t\tvar col = docObj.evaluate(xpathExp, nodeObj, function (pref) {\n\t\t\treturn namespace;\n\t\t}, retType, null);\n\n\t\tif (retType == XPathResult.FIRST_ORDERED_NODE_TYPE) {\n\t\t\treturn col.singleNodeValue;\n\t\t}\n\t\tvar thisColMemb = col.iterateNext();\n\n\t\twhile (thisColMemb) {\n\t\t\trowsCol[rowsCol.length] = thisColMemb;\n\t\t\tthisColMemb = col.iterateNext();\n\t\t}\n\t\treturn rowsCol;\n\t}\n};\n\n\nglobal.dhtmlxError = new dhtmlxErrorConstructor();\n\n\n//opera fake, while 9.0 not released\n//multibrowser Xpath processor\ndtmlXMLLoaderObject.prototype.doXPathOpera = function (xpathExp, docObj) {\n\t//this is fake for Opera\n\tvar z = xpathExp.replace(/[\\/]+/gi, \"/\").split('/');\n\tvar obj = null;\n\tvar i = 1;\n\n\tif (!z.length)\n\t\treturn [];\n\n\tif (z[0] == \".\")\n\t\tobj = [docObj]; else if (z[0] === \"\") {\n\t\t\tobj = (this.xmlDoc.responseXML || this.xmlDoc).getElementsByTagName(z[i].replace(/\\[[^\\]]*\\]/g, \"\"));\n\t\t\ti++;\n\t\t} else\n\t\treturn [];\n\n\tfor (i; i < z.length; i++)obj = this._getAllNamedChilds(obj, z[i]);\n\n\tif (z[i - 1].indexOf(\"[\") != -1)\n\t\tobj = this._filterXPath(obj, z[i - 1]);\n\treturn obj;\n};\n\ndtmlXMLLoaderObject.prototype._filterXPath = function (a, b) {\n\tvar c = [];\n\tvar b = b.replace(/[^\\[]*\\[\\@/g, \"\").replace(/[\\[\\]\\@]*/g, \"\");\n\n\tfor (var i = 0; i < a.length; i++)\n\t\tif (a[i].getAttribute(b))\n\t\t\tc[c.length] = a[i];\n\n\treturn c;\n};\n\ndtmlXMLLoaderObject.prototype._getAllNamedChilds = function (a, b) {\n\tvar c = [];\n\n\tif (_isKHTML)\n\t\tb = b.toUpperCase();\n\n\tfor (var i = 0; i < a.length; i++)for (var j = 0; j < a[i].childNodes.length; j++) {\n\t\tif (_isKHTML) {\n\t\t\tif (a[i].childNodes[j].tagName && a[i].childNodes[j].tagName.toUpperCase() == b)\n\t\t\t\tc[c.length] = a[i].childNodes[j];\n\t\t}\n\n\t\telse if (a[i].childNodes[j].tagName == b)\n\t\t\tc[c.length] = a[i].childNodes[j];\n\t}\n\n\treturn c;\n};\n\nfunction dhtmlXHeir(a, b) {\n\tfor (var c in b)\n\t\tif (typeof (b[c]) == \"function\")\n\t\t\ta[c] = b[c];\n\treturn a;\n}\n\nif (typeof (global.dhtmlxEvent) == 'undefined') {\n\tglobal.dhtmlxEvent = function dhtmlxEvent(el, event, handler) {\n\t\tif (el.addEventListener)\n\t\t\tel.addEventListener(event, handler, false);\n\n\t\telse if (el.attachEvent)\n\t\t\tel.attachEvent(\"on\" + event, handler);\n\t};\n}\n\n//============= XSL Extension ===================================\n\ndtmlXMLLoaderObject.prototype.xslDoc = null;\ndtmlXMLLoaderObject.prototype.setXSLParamValue = function (paramName, paramValue, xslDoc) {\n\tif (!xslDoc)\n\t\txslDoc = this.xslDoc;\n\n\tif (xslDoc.responseXML)\n\t\txslDoc = xslDoc.responseXML;\n\tvar item =\n\t\tthis.doXPath(\"/xsl:stylesheet/xsl:variable[@name='\" + paramName + \"']\", xslDoc,\n\t\t\t\"http:/\\/www.w3.org/1999/XSL/Transform\", \"single\");\n\n\tif (item)\n\t\titem.firstChild.nodeValue = paramValue;\n};\n\ndtmlXMLLoaderObject.prototype.doXSLTransToObject = function (xslDoc, xmlDoc) {\n\tif (!xslDoc)\n\t\txslDoc = this.xslDoc;\n\n\tif (xslDoc.responseXML)\n\t\txslDoc = xslDoc.responseXML;\n\n\tif (!xmlDoc)\n\t\txmlDoc = this.xmlDoc;\n\n\tif (xmlDoc.responseXML)\n\t\txmlDoc = xmlDoc.responseXML;\n\n\n\tvar result;\n\t//Mozilla\n\tif (!_isIE) {\n\t\tif (!this.XSLProcessor) {\n\t\t\tthis.XSLProcessor = new XSLTProcessor();\n\t\t\tthis.XSLProcessor.importStylesheet(xslDoc);\n\t\t}\n\t\tresult = this.XSLProcessor.transformToDocument(xmlDoc);\n\t} else {\n\t\tresult = new ActiveXObject(\"Msxml2.DOMDocument.3.0\");\n\t\ttry {\n\t\t\txmlDoc.transformNodeToObject(xslDoc, result);\n\t\t} catch (e) {\n\t\t\tresult = xmlDoc.transformNode(xslDoc);\n\t\t}\n\t}\n\treturn result;\n};\n\ndtmlXMLLoaderObject.prototype.doXSLTransToString = function (xslDoc, xmlDoc) {\n\tvar res = this.doXSLTransToObject(xslDoc, xmlDoc);\n\tif (typeof (res) == \"string\")\n\t\treturn res;\n\treturn this.doSerialization(res);\n};\n\ndtmlXMLLoaderObject.prototype.doSerialization = function (xmlDoc) {\n\tif (!xmlDoc)\n\t\txmlDoc = this.xmlDoc;\n\tif (xmlDoc.responseXML)\n\t\txmlDoc = xmlDoc.responseXML;\n\tif (!_isIE) {\n\t\tvar xmlSerializer = new XMLSerializer();\n\t\treturn xmlSerializer.serializeToString(xmlDoc);\n\t} else\n\t\treturn xmlDoc.xml;\n};\n\n/**\n * @desc:\n * @type: private\n */\nglobal.dhtmlxEventable = function (obj) {\n\tobj.attachEvent = function (name, catcher, callObj) {\n\t\tname = 'ev_' + name.toLowerCase();\n\t\tif (!this[name])\n\t\t\tthis[name] = new this.eventCatcher(callObj || this);\n\n\t\treturn (name + ':' + this[name].addEvent(catcher)); //return ID (event name & event ID)\n\t};\n\tobj.callEvent = function (name, arg0) {\n\t\tname = 'ev_' + name.toLowerCase();\n\t\tif (this[name])\n\t\t\treturn this[name].apply(this, arg0);\n\t\treturn true;\n\t};\n\tobj.checkEvent = function (name) {\n\t\treturn (!!this['ev_' + name.toLowerCase()]);\n\t};\n\tobj.eventCatcher = function (obj) {\n\t\tvar dhx_catch = [];\n\t\tvar z = function () {\n\t\t\tvar res = true;\n\t\t\tfor (var i = 0; i < dhx_catch.length; i++) {\n\t\t\t\tif (dhx_catch[i]) {\n\t\t\t\t\tvar zr = dhx_catch[i].apply(obj, arguments);\n\t\t\t\t\tres = res && zr;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn res;\n\t\t};\n\t\tz.addEvent = function (ev) {\n\t\t\tif (typeof (ev) != \"function\")\n\t\t\t\tthrow new Error(`Invalid argument addEvent(${ev})`);\n\t\t\tif (ev)\n\t\t\t\treturn dhx_catch.push(ev) - 1;\n\t\t\treturn false;\n\t\t};\n\t\tz.removeEvent = function (id) {\n\t\t\tdhx_catch[id] = null;\n\t\t};\n\t\treturn z;\n\t};\n\tobj.detachEvent = function (id) {\n\t\tif (id) {\n\t\t\tvar list = id.split(':');//get EventName and ID\n\t\t\tthis[list[0]].removeEvent(list[1]); //remove event\n\t\t}\n\t};\n\tobj.detachAllEvents = function () {\n\t\tfor (var name in this) {\n\t\t\tif (name.indexOf(\"ev_\") === 0) {\n\t\t\t\tthis.detachEvent(name);\n\t\t\t\tthis[name] = null;\n\t\t\t}\n\t\t}\n\t};\n\tobj = null;\n};\n\n}","export default function(scheduler){\n\nscheduler.config.limit_start = null;\nscheduler.config.limit_end = null;\nscheduler.config.limit_view = false;\nscheduler.config.check_limits = true;\n\nscheduler._temp_limit_scope = function(){\n\tvar before = null;\n\tvar dhx_time_block = \"dhx_time_block\";\n\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\n\n\t\tfunction isBlocked(date, mode){\n\t\t\tvar limit_start = scheduler.config.limit_start,\n\t\t\t\tlimit_end = scheduler.config.limit_end,\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\n\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\n\t\t}\n\n\t\tif (scheduler.config.limit_view){\n\t\t\tnd = nd||od; nm = nm||om;\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tif(scheduler.$destroyed){\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\n\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\n\t\t\t\t},1);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\n\t\treturn !(classname == dhx_time_block);\n\t});\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\n\t\tif (!id) return true;\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\n\t});\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\n });\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\n\n\t\tvar ev = scheduler.getEvent(id);\n\t\tbefore = [ev.start_date, ev.end_date];\n\t\treturn scheduler.checkLimitViolation(ev);\n\t});\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\n\n\t\t//lightbox may not have 'time' section\n\t\tif(!(data.start_date && data.end_date)){\n\t\t\tvar ev = scheduler.getEvent(id);\n\t\t\tdata.start_date = new Date(ev.start_date);\n\t\t\tdata.end_date = new Date(ev.end_date);\n\t\t}\n\n\t\tif(data.rec_type){\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\n\t\t\t// use a copy to keep original event unchanged\n\t\t\tvar data_copy = scheduler._lame_clone(data);\n\t\t\tscheduler._roll_back_dates(data_copy);\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\n\t\t}\n\t\treturn scheduler.checkLimitViolation(data);\n\t});\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\n\t\tif (!id) return true;\n\t\tvar ev = scheduler.getEvent(id);\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\n\t\t\t}\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\n\t\t\t}\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\n\t\t\t}\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\n\t\t\t}\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\n\t\t\t}\n\t\t\tev._timed=this.isOneDayEvent(ev);\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\n\t\tif (!id) return true;\n\t\tvar ev = scheduler.getEvent(id);\n\t\tif (!scheduler.checkLimitViolation(ev)){\n\t\t\tif (!before) return false;\n\t\t\tev.start_date = before[0];\n\t\t\tev.end_date = before[1];\n\t\t\tev._timed=this.isOneDayEvent(ev);\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\n\t\treturn scheduler.checkLimitViolation(ev);\n\t});\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\n\t\tvar start_date = scheduler.getActionData(ev).date;\n\t\tvar event = {\n\t\t\t_timed: true,\n\t\t\tstart_date: start_date,\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\n\t\t};\n\t\treturn scheduler.checkLimitViolation(event);\n\t});\n\n\tscheduler.attachEvent(\"onViewChange\", function(){\n\t\tscheduler._mark_now();\n\t});\n\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\n\t\twindow.setTimeout(function(){ \n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tscheduler._mark_now(); \n\t\t}, 1);\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\n\t\t\tif(!scheduler._is_initialized())\n\t\t\t\treturn;\n\t\t\tscheduler._mark_now();\n\t\t}, 60000);\n\t});\n\n\tscheduler.attachEvent(\"onDestroy\", function(){\n\t\tclearInterval(scheduler._mark_now_timer);\n\t});\n\n};\nscheduler._temp_limit_scope();\n\n\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\nimport { MapboxAdapter } from \"./mapboxAdapter\";\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\n\ndeclare let google: any;\n\nexport default function(scheduler: any){\n\t\nlet mapAdapter: IMapAdapter | null = null;\nlet eventHandlerIds: number[] = [];\nconst adapters: { [name:string]: IMapAdapter } = {\n\tgoogleMap: new GoogleMapAdapter(scheduler),\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\n\tmapbox: new MapboxAdapter(scheduler)\n}\n\nif(!scheduler.ext){\n\tscheduler.ext = {};\n}\nscheduler.ext.mapView = {\n\tcreateAdapter: function():IMapAdapter{\n\t\treturn adapters[scheduler.config.map_view_provider];\n\t},\n\tcreateMarker: function(config){\n\t\treturn new google.maps.Marker(config);\n\t},\n\tcurrentAdapter: null,\n\tadapters\n};\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\nscheduler.config.map_view_provider = \"googleMap\";\nscheduler.config.map_settings = {\n\tinitial_position: {\n\t lat: 48.724,\n\t lng: 8.215\n\t},\n\terror_position: {\n\t lat: 15,\n\t lng: 15\n\t},\n\tinitial_zoom: 1,\n\tzoom_after_resolve: 15,\n\tinfo_window_max_width: 300,\n\tresolve_user_location: true,\n\tresolve_event_location: true,\n\tview_provider: \"googleMap\"\n}\nif (scheduler.config.map_initial_position) {\n\tscheduler.config.map_settings.initial_position = {\n\t\tlat: scheduler.config.map_initial_position.lat(),\n\t\tlng: scheduler.config.map_initial_position.lng(), \n\t};\n}\n\nif (scheduler.config.map_error_position) {\n\tscheduler.config.map_settings.error_position = {\n\t\tlat: scheduler.config.map_error_position.lat(),\n\t\tlng: scheduler.config.map_error_position.lng(), \n\t};\n}\n\nscheduler.xy.map_date_width = 188; // date column width\nscheduler.xy.map_icon_width = 25; // event details icon width\nscheduler.xy.map_description_width = 400; // description column width\nscheduler.date.add_map = function(date, inc, mode) {\n\treturn (new Date(date.valueOf()));\n};\nscheduler.templates.map_date = function(dd, ed, mode) {\n\treturn '';\n};\nscheduler.templates.map_time = function(start, end, ev) {\n\tif (scheduler.config.rtl && !ev._timed) {\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\n\t} else if (ev._timed) {\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\n\t} else {\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\n\t}\n};\nscheduler.templates.map_text = function(start, end, ev) {\n\treturn ev.text;\n};\nscheduler.templates.map_info_content = function(event){\n return `
Event's text: ${event.text}\n\t\t\t\t
Location: ${event.event_location}
\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\n\t\t\t
`;\n};\nscheduler.date.map_start = function(d) {\n\treturn d;\n};\n\nfunction setupMapView(scheduler) {\n\t// Initialization logic, possibly including creation of a new mapAdapter\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\n\tattachSchedulerEvents();\n}\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\n\tevent.lat = coordinates.lat;\n\tevent.lng = coordinates.lng;\n\tmapAdapter.removeEventMarker(String(event.id));\n\tmapAdapter.addEventMarker(event);\n\treturn event;\n}\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\n\tif (options.resolve_user_location) {\n\t\tif (navigator.geolocation) {\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\n\t\t\t});\n\t\t}\n\t} else {\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\n\t}\n}\nscheduler.dblclick_dhx_map_area = function(e) {\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\n\tif (eventNode){\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\n\t\tscheduler.showLightbox(eventId);\n\t}\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\n\t\tthis.addEventNow({\n\t\t\tstart_date: scheduler.config.map_start,\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\n\t\t});\n\t}\t\n};\n\nfunction attachSchedulerEvents() { \n eventHandlerIds.push(\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\n\t\t\tscheduler._eventLocationChanged = true;\n\t\t}\n\t\treturn true;\n\t}),\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\n\t\tconst {start_date, end_date} = event;\n\t\tconst {min_date, max_date} = scheduler.getState();\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\n\t\t\tif (mapAdapter) {\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\n\t\t\t\t} else {\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tscheduler._latLngUpdate = false;\n\t\treturn true;\n }),\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\n\t\tmapAdapter?.removeEventMarker(old_id);\n\t\tmapAdapter?.addEventMarker(newIdEvent);\n\t}),\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\n\t\tconst {start_date, end_date} = event;\n\t\tconst {min_date, max_date} = scheduler.getState();\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\n \t\tif (mapAdapter) {\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\n\t\t\t\t\tscheduler._eventLocationChanged = false;\n\t\t\t\t} else {\n\t\t\t\t\tmapAdapter.addEventMarker(event);\n\t\t\t\t\tmapAdapter.onEventClick(event);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n }),\n scheduler.attachEvent(\"onClick\", function (id, e){\n\t\tconst event = scheduler.getEvent(id);\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\n\t\treturn false;\n }),\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\n\t\tif (mapAdapter) {\n\t\t\tmapAdapter.removeEventMarker(id);\n\t\t}\n\t\treturn true;\n })\n );\n}\nfunction detachSchedulerEvents() {\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\n\teventHandlerIds = [];\n}\n\nscheduler.attachEvent(\"onSchedulerReady\", function() {\n\n\tif(scheduler.config.map_initial_zoom !== undefined){\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\n\t}\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\n\t}\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\n\t}\n\tif(scheduler.config.map_resolve_user_location !== undefined){\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\n\t}\n\tif(scheduler.config.map_view_provider !== undefined){\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\n\t}\n\tif(scheduler.config.map_type !== undefined){\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\n\t}\n\tif(scheduler.config.map_resolve_event_location !== undefined){\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\n\t}\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\n\n\tlet map = document.createElement('div');\n\tmap.className = 'mapContainer';\n\tmap.id = 'mapContainer';\n\tmap.style.display = \"none\";\n\tmap.style.zIndex = \"1\";\n\tscheduler._obj.appendChild(map);\n\n\tconst old = scheduler.render_data;\n\tscheduler.render_data = function(evs, hold) {\n\t\tif (this._mode == \"map\") {\n\t\t\tfill_map_tab();\n\t\t\tlet events = scheduler.get_visible_events();\n\t\t\tif (mapAdapter) {\n\t\t\t\tmapAdapter.clearEventMarkers();\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\n\t\t\t}\n\t\t} else\n\t\t\treturn old.apply(this, arguments);\n\t};\n\n\tscheduler.map_view = function(mode) {\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\n\t\tscheduler._table_view = true;\n\t\tset_full_view(mode);\n\t\tlet mapContainer = document.getElementById('mapContainer');\n\t\t_setMapSize('mapContainer');\n\n\t\t// creating the new logic\n\t\tif (mode && mapContainer) {\n\t\t\tmap.style.display = 'block';\n\t\t\tfill_map_tab();\n\t\t\t// case to display several maps and has the opportunity to switch between them\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\n\t\t\t\tmapAdapter?.destroy(mapContainer);\n\t\t\t\tsetupMapView(scheduler);\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\n\t\t\t} else {\n\t\t\t\tmapAdapter?.destroy(mapContainer);\n\t\t\t\tsetupMapView(scheduler);\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\n\t\t\t}\n\t\t\tif(mapAdapter) {\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\n\t\t\t}\t\n\t\t} else {\n\t\t\tmap.style.display = 'none';\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\n\t\t \tif (mapAdapter && mapContainer ) {\n\t\t\t\tmapAdapter.destroy(mapContainer);\n\t\t\t\tmapAdapter = null;\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\n\t\t }\n\t\t \tdetachSchedulerEvents();\n\t\t}\n\t};\n\n\tfunction _setMapSize(elem_id) { //input - map's div id\n\t\tlet map = document.getElementById(elem_id);\n\t\tif (map) {\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\n\t\t\tif (height < 0)\n\t\t\t\theight = 0;\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\n\t\t\tif (width < 0)\n\t\t\t\twidth = 0;\n\t\t\tmap.style.height = height + 'px';\n\t\t\tmap.style.width = width + 'px';\n\t\t\tmap.style.position = \"absolute\";\n\t\t\tmap.style.top = nav_height + \"px\";\n\t\t\tif (scheduler.config.rtl) {\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\n\t\t\t} else {\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\n\t\t\t}\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\n\t\t}\n\t}\t\n\tfunction fill_map_tab() {\n\t\t//select events for which data need to be printed\n\t\tlet events = scheduler.get_visible_events();\n\t\tevents.sort(function(a, b) {\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\n\t\t\t\treturn a.id>b.id?1:-1;\n\t\t\treturn a.start_date>b.start_date?1:-1;\n\t\t});\n\n\t\t//generate html for the view\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\n\n\t\tlet html = \"
\";\n\t\tfor (let i = 0; i < events.length; i++) {\n\t\t\tlet ev = events[i];\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\n\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\n\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\n\t\t\thtml += `
\n\t\t\t\n\t\t\t
`;\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\n\t\t}\n\t\thtml += \"
\";\n\n\t\t//render html\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\n\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\n\n\t\tlet dateElement = scheduler._getNavDateElement();\n\t\tif(dateElement){\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\n\t\t}\n\n\t\tscheduler._rendered = [];\n\t\tfor (let i = 0; i < t.length - 2; i++) {\n\t\t\tscheduler._rendered[i] = t[i];\n\t\t}\n\t}\n\tfunction set_full_view(mode) {\n\t\tif (mode) {\n\t\t\tconst l = scheduler.locale.labels;\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\n\t\t\tscheduler._table_view = true;\n\t\t\tscheduler.set_sizes();\n\t\t}\n\t}\n\t\n\tscheduler.attachEvent(\"onLocationError\", function (id){\n\t\talert(\"Location can't be found\");\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \n\t\t//the coordinates of the Greenwich Royal Observatory\n\t})\n\tlet _updateEventLocation = async function(event) {\n\t\tif (mapAdapter){\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\n\t\t\tif (coordinates.lat && coordinates.lng) {\n\t\t\t\tevent.lat = +coordinates.lat;\n\t\t\t\tevent.lng = +coordinates.lng;\n\t\t\t} else {\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\n\t\t\t}\n\t\t\tscheduler._latLngUpdate = true;\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\n\t\t}\n\t};\n\tlet _delay = function(method, object, params, delay) {\n\t\tsetTimeout(function() {\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tlet ret = method.apply(object, params);\n\t\t\tmethod = object = params = null;\n\t\t\treturn ret;\n\t\t}, delay || 1);\n\t};\n\tscheduler._event_resolve_delay = 1500;\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\n\t\tif (event.lat && event.lng) {\n\t\t\tevent.lat = +event.lat;\n\t\t\tevent.lng = +event.lng;\n\t\t}\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\n\t\t\tscheduler._event_resolve_delay += 1500;\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\n\t\t}\n\t\treturn true;\n\t});\n})\n\n}","export default function(scheduler){\n\nconst minicalDomEvents = scheduler._createDomEventScope();\n\t\n\nscheduler.config.minicalendar = {\n\tmark_events: true\n};\nscheduler._synced_minicalendars = [];\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\n\tvar cal = null;\n\tvar date = obj.date || (scheduler._currentDate());\n\tif (typeof date == \"string\")\n\t\tdate = this.templates.api_date(date);\n\n\tif (!_prev) {\n\t\tvar cont = obj.container;\n\t\tvar pos = obj.position;\n\n\t\tif (typeof cont == \"string\")\n\t\t\tcont = document.getElementById(cont);\n\n\t\tif (typeof pos == \"string\")\n\t\t\tpos = document.getElementById(pos);\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\n\t\t\tpos = {\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\n\t\t\t\tleft: tpos.left\n\t\t\t};\n\t\t}\n\t\tif (!cont)\n\t\t\tcont = scheduler._get_def_cont(pos);\n\n\t\tcal = this._render_calendar(cont, date, obj);\n\t\n\t\tif (!cal.$_eventAttached) {\n\t\t\tcal.$_eventAttached = true;\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\n\t\t\t\tvar src = e.target || e.srcElement;\n\n\t\t\t\tvar $dom = scheduler.$domHelpers;\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\n\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\n\t\t\t\t\t\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\n\t\t\t\t\t\tthis._last_date = newDate;\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}).bind(cal));\n\t\t}\n\t\n\t} else {\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\n\t\tscheduler.unmarkCalendar(cal);\n\t}\n\n\tif (scheduler.config.minicalendar.mark_events) {\n\t\tvar start = scheduler.date.month_start(date);\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\n\t\tvar evs = this.getEvents(start, end);\n\t\tvar filter = this[\"filter_\" + this._mode];\n\t\tvar markedDates = {};\n\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\tvar ev = evs[i];\n\t\t\tif (filter && !filter(ev.id, ev))\n\t\t\t\tcontinue;\n\t\t\tvar d = ev.start_date;\n\t\t\tif (d.valueOf() < start.valueOf())\n\t\t\t\td = start;\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\n\t\t\twhile (d < ev.end_date) {\n\t\t\t\tif(!markedDates[+d]) {\n\t\t\t\t\tmarkedDates[+d] = true;\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\n\t\t\t\t}\n\t\t\t\td = this.date.add(d, 1, \"day\");\n\t\t\t\tif (d.valueOf() >= end.valueOf())\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tthis._markCalendarCurrentDate(cal);\n\n\tcal.conf = obj;\n\tif (obj.sync && !is_refresh)\n\t\tthis._synced_minicalendars.push(cal);\n\n\tif(!cal.conf._on_xle_handler){\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\n\t\t});\n\t}\n\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\n\t\tcal.setAttribute(\"role\", \"application\");\n\t}\n\n\treturn cal;\n};\nscheduler._get_def_cont = function(pos) {\n\tif (!this._def_count) {\n\t\tthis._def_count = document.createElement(\"div\");\n\t\tthis._def_count.className = \"dhx_minical_popup\";\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\n\t\tdocument.body.appendChild(this._def_count);\n\t}\n\n\tif(pos.left){\n\t\tthis._def_count.style.left = pos.left + \"px\";\n\t}\n\tif(pos.right){\n\t\tthis._def_count.style.right = pos.right + \"px\";\n\t}\n\tif(pos.top){\n\t\tthis._def_count.style.top = pos.top + \"px\";\n\t}\n\tif(pos.bottom){\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\n\t}\n\n\tthis._def_count._created = new Date();\n\n\treturn this._def_count;\n};\nscheduler._locateCalendar = function(cal, date) {\n\tif (typeof date == \"string\")\n\t\tdate = scheduler.templates.api_date(date);\n\n\tif(+date > +cal._max_date || +date < +cal._min_date)\n\t\treturn null;\n\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\n\n\tvar weekNum = 0;\n\tvar dat = new Date(cal._min_date);\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\n\t\tdat = this.date.add(dat, 1, \"week\");\n\t\tweekNum++;\n\t}\n\n\tvar sm = scheduler.config.start_on_monday;\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\n\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\n\tif(dayCell) {\n\t\treturn dayCell.firstChild;\n\t} else {\n\t\treturn null;\n\t}\n};\nscheduler.markCalendar = function(cal, date, css) {\n\tvar div = this._locateCalendar(cal, date);\n\tif(!div)\n\t\treturn;\n\n\tdiv.className += \" \" + css;\n};\nscheduler.unmarkCalendar = function(cal, date, css) {\n\tdate = date || cal._last_date;\n\tcss = css || \"dhx_calendar_click\";\n\tif (!date) return;\n\tvar el = this._locateCalendar(cal, date);\n\tif(!el)\n\t\treturn;\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\n};\nscheduler._week_template = function(width) {\n\tvar summ = (width || 250);\n\tvar left = 0;\n\n\tvar week_template = document.createElement(\"div\");\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\n\tfor (var i = 0; i < 7; i++) {\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\n\t\tsumm -= this._cols[i];\n\t\tleft += this._cols[i];\n\t}\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\n\treturn week_template;\n};\nscheduler.updateCalendar = function(obj, sd) {\n\tobj.conf.date = sd;\n\tthis.renderCalendar(obj.conf, obj, true);\n};\nscheduler._mini_cal_arrows = [\" \", \" \"];\nscheduler._render_calendar = function(obj, sd, conf, previous) {\n\t/*store*/\n\tvar ts = scheduler.templates;\n\tvar temp = this._cols;\n\tthis._cols = [];\n\tvar temp2 = this._mode;\n\tthis._mode = \"calendar\";\n\tvar temp3 = this._colsS;\n\tthis._colsS = {height: 0};\n\tvar temp4 = new Date(this._min_date);\n\tvar temp5 = new Date(this._max_date);\n\tvar temp6 = new Date(scheduler._date);\n\tvar temp7 = ts.month_day;\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\n\tts.month_day = ts.calendar_date;\n\n\tsd = this.date.month_start(sd);\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\n\n\tvar d;\n\tif (previous){\n\t\td = previous;\n\t} else {\n\t\td = document.createElement(\"div\");\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\n\t}\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\n\td.innerHTML = \"
\" +\n\t\t\t\"
\" : \"'>\") +\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\n\t\t\t\"
\" +\n\t\t\"
\";\n\tvar header = d.querySelector(\".dhx_year_month\");\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\n\tvar body = d.querySelector(\".dhx_year_body\");\n\n\theader.innerHTML = this.templates.calendar_month(sd);\n\tif (conf.navigation) {\n\t\tvar move_minicalendar_date = function(calendar, diff) {\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\n\t\t\tscheduler.updateCalendar(calendar, date);\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\n\t\t\t}\n\t\t};\n\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\n\t\tvar diffs = [-1, 1];\n\t\tvar handler = function(diff) {\n\t\t\treturn function() {\t\n\t\t\t\tif (conf.sync) {\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (scheduler.config.rtl) {\n\t\t\t\t\t\tdiff = -diff;\n\t\t\t\t\t}\n\t\t\t\t\tmove_minicalendar_date(d, diff);\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\n\t\tfor (var j = 0; j < 2; j++) {\n\t\t\tvar arrow = document.createElement(\"div\");\n\t\t\t//var diff = diffs[j];\n\t\t\tarrow.className = css_classnames[j];\n\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\n\n\t\t\tarrow.style.cssText = css_texts[j];\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\n\t\t\theader.appendChild(arrow);\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\n\t\t}\n\t}\n\td._date = new Date(sd);\n\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\n\n\tvar dd = d._min_date = this.date.week_start(sd);\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\n\n\tthis._reset_month_scale(body, sd, dd, 6);\n\n\tif (!previous)\n\t\tobj.appendChild(d);\n\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)\n\n\tvar headerId = scheduler.uid();\n\tscheduler._waiAria.minicalHeader(header, headerId);\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\n\tscheduler._waiAria.minicalRow(weekHeader);\n\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\n\tfor(var i = 0; i < dayHeaders.length; i++){\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\n\t}\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\n\tvar firstDate = new Date(dd);\n\tfor(var i = 0; i < dayCells.length; i++){\n\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\n\t}\n\n\tscheduler._waiAria.minicalHeader(header, headerId);\n\n\t/*restore*/\n\tthis._cols = temp;\n\tthis._mode = temp2;\n\tthis._colsS = temp3;\n\tthis._min_date = temp4;\n\tthis._max_date = temp5;\n\tscheduler._date = temp6;\n\tts.month_day = temp7;\n\tthis._ignores_detected = temp8;\n\treturn d;\n};\nscheduler.destroyCalendar = function(cal, force) {\n\tif (!cal && this._def_count && this._def_count.firstChild) {\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\n\t\t\tcal = this._def_count.firstChild;\n\t}\n\tif (!cal) return;\n\tminicalDomEvents.detachAll();\n\t//cal.onclick = null;\n\tcal.innerHTML = \"\";\n\tif (cal.parentNode)\n\t\tcal.parentNode.removeChild(cal);\n\tif (this._def_count)\n\t\tthis._def_count.style.top = \"-1000px\";\n\n\tif(cal.conf && cal.conf._on_xle_handler)\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\n};\nscheduler.isCalendarVisible = function() {\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\n\t\treturn this._def_count;\n\treturn false;\n};\n\nscheduler.attachEvent(\"onTemplatesReady\", function() {\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\n}, {once: true});\n\n\n\nscheduler.form_blocks.calendar_time = {\n\trender: function(sns) {\n\t\tvar html = \"\";\n\n\t\tvar cfg = scheduler.config;\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\n\n\t\tvar last = 24 * 60, first = 0;\n\t\tif (cfg.limit_time_select) {\n\t\t\tfirst = 60 * cfg.first_hour;\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\n\t\t}\n\t\tdt.setHours(first / 60);\n\n\t\tsns._time_values = [];\n\t\thtml += \" \";\n\n\t\t//var full_day = scheduler.config.full_day;\n\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\n\t},\n\tset_value: function(node, value, ev, config) {\n\n\t\tvar inputs = node.getElementsByTagName(\"input\");\n\t\tvar selects = node.getElementsByTagName(\"select\");\n\t\tvar start_date,\n\t\t\tend_date;\n\n\t\tvar _init_once = function(inp, date, number) {\n\t\t\tscheduler.event(inp, \"click\", function() {\n\t\t\t\tscheduler.destroyCalendar(null, true);\n\t\t\t\tscheduler.renderCalendar({\n\t\t\t\t\tposition: inp,\n\t\t\t\t\tdate: new Date(this._date),\n\t\t\t\t\tnavigation: true,\n\t\t\t\t\thandler: function(new_date) {\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\n\t\t\t\t\t\tinp._date = new Date(new_date);\n\t\t\t\t\t\tscheduler.destroyCalendar();\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\n\t\t\t\t\t\t\t_update_minical_select();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (scheduler.config.full_day) {\n\t\t\tif (!node._full_day) {\n\t\t\t\tvar html = \"\";\n\t\t\t\tif (!scheduler.config.wide_form)\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\n\t\t\t\tnode.previousSibling.innerHTML = html;\n\t\t\t\tnode._full_day = true;\n\t\t\t}\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\n\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\n\t\t\tinput.checked = isFulldayEvent;\n\n\t\t\tselects[0].disabled = input.checked;\n\t\t\tselects[1].disabled = input.checked;\n\n\t\t\tif (!input.$_eventAttached) {\n\t\t\t\tinput.$_eventAttached = true;\n\t\t\t\tscheduler.event(input, \"click\", function() {\n\t\t\t\t\tif (input.checked === true) {\n\t\t\t\t\t\tvar obj = {};\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\n\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\n\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)))\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tstart_date = null;\n\t\t\t\t\t\tend_date = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar start = start_date || ev.start_date;\n\t\t\t\t\tvar end = end_date || ev.end_date;\n\t\t\t\t\t_attach_action(inputs[0], start);\n\t\t\t\t\t_attach_action(inputs[1], end);\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\n\n\t\t\t\t\tselects[0].disabled = input.checked;\n\t\t\t\t\tselects[1].disabled = input.checked;\n\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\n\n\t\t\tvar _update_minical_select = function () {\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\n\t\t\t\t\t// setting may be disabled after the handler is attached\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\n\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\n\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\n\t\t\t};\n\n\t\t\tif(!selects[0].$_eventAttached){\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\n\t\t\t}\n\t\t}\n\n\t\tfunction _attach_action(inp, date, number) {\n\t\t\t_init_once(inp, date, number);\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\n\t\t}\n\n\t\t_attach_action(inputs[0], ev.start_date, 0);\n\t\t_attach_action(inputs[1], ev.end_date, 1);\n\t\t_init_once = function() {};\n\n\t\tfunction _round_minutes(date) {\n\t\t\tvar time_values = config._time_values;\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\n\t\t\tvar fixed_value = direct_value;\n\t\t\tvar value_found = false;\n\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\n\t\t\t\tvar t_v = time_values[k];\n\t\t\t\tif (t_v === direct_value) {\n\t\t\t\t\tvalue_found = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (t_v < direct_value)\n\t\t\t\t\tfixed_value = t_v;\n\t\t\t}\n\n\t\t\tif(!(value_found || fixed_value))\n\t\t\t\treturn -1;\n\n\t\t\treturn (value_found) ? direct_value : fixed_value;\n\t\t}\n\n\t\tselects[0].value = _round_minutes(ev.start_date);\n\t\tselects[1].value = _round_minutes(ev.end_date);\n\n\t},\n\tget_value: function(node, ev) {\n\t\tvar inputs = node.getElementsByTagName(\"input\");\n\t\tvar selects = node.getElementsByTagName(\"select\");\n\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\n\n\t\tif (ev.end_date <= ev.start_date)\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\n\t\treturn {\n\t\t\tstart_date: new Date(ev.start_date),\n\t\t\tend_date: new Date(ev.end_date)\n\t\t};\n\t},\n\tfocus: function(node) {\n\t}\n};\nscheduler.linkCalendar = function(calendar, datediff) {\n\tvar action = function() {\n\t\tvar date = scheduler._date;\n\t\tvar dateNew = new Date(date.valueOf());\n\t\tif (datediff) dateNew = datediff(dateNew);\n\t\tdateNew.setDate(1);\n\t\tscheduler.updateCalendar(calendar, dateNew);\n\t\treturn true;\n\t};\n\n\tscheduler.attachEvent(\"onViewChange\", action);\n\tscheduler.attachEvent(\"onXLE\", action);\n\tscheduler.attachEvent(\"onEventAdded\", action);\n\tscheduler.attachEvent(\"onEventChanged\", action);\n\tscheduler.attachEvent(\"onEventDeleted\", action);\n\taction();\n};\n\nscheduler._markCalendarCurrentDate = function(calendar) {\n\tvar state = scheduler.getState();\n\tvar from = state.min_date;\n\tvar to = state.max_date;\n\tvar mode = state.mode;\n\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\n\n\tvar noHighlight = {\n\t\t\"month\":true,\n\t\t\"year\":true,\n\t\t\"agenda\":true,\n\t\t\"grid\":true\n\t};\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\n\t\treturn;\n\t}\n\n\tvar current = from;\n\twhile(current.valueOf() < to.valueOf()){\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\n\t\t}\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\n\t}\n};\n\nscheduler.attachEvent(\"onEventCancel\", function(){\n\tscheduler.destroyCalendar(null, true);\n});\n\nscheduler.attachEvent(\"onDestroy\", function(){\n\tscheduler.destroyCalendar();\n});\n\n}","export default function(scheduler){\n\nscheduler.attachEvent(\"onTemplatesReady\",function(){\n\tscheduler.xy.scroll_width = 0;\n\n\tvar old = scheduler.render_view_data;\n\tscheduler.render_view_data=function(){\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\n\t\tdata.firstChild._h_fix = true;\n\n\t\told.apply(scheduler,arguments);\n\n\n\n\t\tvar height = parseInt(data.style.height);\n\t\tdata.style.height=\"1px\";\n\t\tdata.style.height=data.scrollHeight+\"px\";\n\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\n\t};\n\n\tvar old_s=scheduler._reset_month_scale;\n\tscheduler._reset_month_scale=function(a,b,c,d){\n\t\tvar dummy = {clientHeight:100};\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\n\t\ta.innerHTML = dummy.innerHTML;\n\t};\n\n});\n\n}","import virtual_events_helpers from \"../core/virtual_events_helpers\";\n\nexport default function(scheduler){\n\nscheduler.config.multisection = true;\nscheduler.config.multisection_shift_all = true;\nscheduler.config.section_delimiter = \",\";\nscheduler.attachEvent(\"onSchedulerReady\", function(){\n\tvirtual_events_helpers(scheduler);\n\t// #include core/virtual_events_helpers.js\n\n\tvar old_unit = scheduler._update_unit_section;\n\tscheduler._update_unit_section = function(action){\n\t\treturn scheduler._update_sections(action, old_unit);\n\t};\n\tvar old_timeline = scheduler._update_timeline_section;\n\tscheduler._update_timeline_section =function(action){\n\t\treturn scheduler._update_sections(action, old_timeline);\n\t};\n\n\n\tscheduler.isMultisectionEvent = function(ev){\n\t\tif(ev && this._get_multisection_view()){\n\t\t\tvar units = this._get_event_sections(ev);\n\t\t\treturn (units.length > 1);\n\t\t}\n\t\treturn false;\n\t};\n\n\tscheduler._get_event_sections = function(event){\n\t\tvar mapping = this._get_section_property();\n\t\tvar units = event[mapping] || \"\";\n\t\treturn this._parse_event_sections(units);\n\t};\n\tscheduler._parse_event_sections = function(value){\n\t\tif(value instanceof Array){\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn value.toString().split(scheduler.config.section_delimiter);\n\t\t}\n\t};\n\n\tscheduler._clear_copied_events();\n\n\tscheduler._split_events = function(evs) {\n\t\tvar stack = [];\n\t\tvar pr = this._get_multisection_view();\n\n\t\tif(pr) {\n\t\t\tfor (var i=0; i 1) {\n\t\t\tfor (var j=0; j\";\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\n\t\t}\n\t\t_result += \"\";\n\t\treturn _result;\n\t},\n\tset_value:function(node,value,ev,config){\n\n\t\tvar _children = node.getElementsByTagName('input');\n\t\tfor(var i=0;i<_children.length;i++) {\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\n\t\t}\n\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\n\t\t\tvar _children = node.getElementsByTagName('input');\n\t\t\tfor(var i=0;i<_children.length; i++) {\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\n\t\t\t}\n\t\t}\n\n\t\tvar _ids = {};\n\t\tif (ev[config.map_to]) {\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\n\t\t\tfor (var i = 0; i < results.length; i++) {\n\t\t\t\t_ids[results[i]] = true;\n\t\t\t}\n\t\t\t_mark_inputs(_ids);\n\t\t} else {\n\t\t\tif (scheduler._new_event || !config.script_url)\n\t\t\t\treturn;\n\t\t\tvar divLoading = document.createElement('div');\n\t\t\tdivLoading.className = 'dhx_loading';\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\n\t\t\tnode.appendChild(divLoading);\n\n\t\t\tvar url = [\n\t\t\t\tconfig.script_url,\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\n\t\t\t].join(\"\");\n\n\t\t\tscheduler.ajax.get(url, function(loader) {\n\t\t\t\tvar options = parseJSONOptions(loader, config);\n\t\t\t\tif(!options){\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\n\t\t\t\t}\n\t\t\t\t_mark_inputs(options);\n\t\t\t\tnode.removeChild(divLoading);\n\t\t\t});\n\t\t}\n\t},\n\tget_value:function(node,ev,config){\n\t\tvar _result = [];\n\t\tvar _children = node.getElementsByTagName(\"input\");\n\t\tfor(var i=0;i<_children.length;i++) {\n\t\t\tif(_children[i].checked)\n\t\t\t\t_result.push(_children[i].value);\n\t\t}\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\n\t},\n\n\tfocus:function(node){\n\t}\n};\n\n}","export default function(scheduler){\n\n\n\tfunction backup(obj){\n\t\tvar t = function(){};\n\t\tt.prototype = obj;\n\t\treturn t;\n\t}\n\n\tvar old = scheduler._load;\n\tscheduler._load=function(url,from){\n\t\turl=url||this._load_url;\n\t\tif (typeof url == \"object\"){\n\t\t\tvar t = backup(this._loaded);\n\t\t\tfor (var i=0; i < url.length; i++) {\n\t\t\t\tthis._loaded=new t();\n\t\t\t\told.call(this,url[i],from);\n\t\t\t}\n\t\t} else\n\t\t\told.apply(this,arguments);\n\t};\n\n}","export default function(scheduler){\n\t/* global Backbone */\n\tvar cfg = {\n\t\tuse_id : false\n\t};\n\n\t//remove private properties\n\tfunction sanitize(ev){\n\t\tvar obj = {};\n\t\tfor (var key in ev)\n\t\t\tif (key.indexOf(\"_\") !== 0)\n\t\t\t\tobj[key] = ev[key];\n\n\t\tif (!cfg.use_id)\n\t\t\tdelete obj.id;\n\n\t\treturn obj;\n\t}\n\n\tvar update_timer;\n\tfunction update_view(){\n\t\tclearTimeout(update_timer);\n\t\tupdate_timer = setTimeout(function(){\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tscheduler.updateView();\n\t\t},1);\n\t}\n\n\tfunction _start_ext_load(cal){\n\t\tcal._loading = true;\n\t\tcal._not_render = true;\n\n\t\tcal.callEvent(\"onXLS\", []);\n\t}\n\tfunction _finish_ext_load(cal){\n\t\tcal._not_render = false;\n\t\tif (cal._render_wait)\n\t\t\tcal.render_view_data();\n\t\tcal._loading = false;\n\n\t\tcal.callEvent(\"onXLE\", []);\n\t}\n\n\n\tfunction _get_id(model){\n\t\treturn cfg.use_id ? model.id : model.cid;\n\t}\n\nscheduler.backbone = function(events, config){\n\tif (config) cfg = config;\n\n\tevents.bind(\"change\", function(model, info){\n\t\tvar cid = _get_id(model);\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\n\t\tev.id = cid;\n\n\t\tscheduler._init_event(ev);\n\t\tupdate_view();\n\t});\n\tevents.bind(\"remove\", function(model, changes){\n\t\tvar cid = _get_id(model);\n\t\tif (scheduler._events[cid])\n\t\t\tscheduler.deleteEvent(cid);\n\t});\n\n\tvar queue = [];\n\tfunction add_from_queue(){\n\t\tif(scheduler.$destroyed){\n\t\t\treturn true;\n\t\t}\n\t\tif (queue.length){\n\t\t\tscheduler.parse(queue, \"json\");\n\t\t\tqueue = [];\n\t\t}\n\t}\n\n\tevents.bind(\"add\", function(model, changes){\n\t\tvar cid = _get_id(model);\n\t\tif (!scheduler._events[cid]){\n\t\t\tvar ev = model.toJSON();\n\t\t\tev.id = cid;\n\t\t\tscheduler._init_event(ev);\n\n\t\t\tqueue.push(ev);\n\t\t\tif (queue.length == 1)\n\t\t\t\tsetTimeout(add_from_queue,1);\n\t\t}\n\t});\n\n\tevents.bind(\"request\", function(obj){\n\t\tif (obj instanceof Backbone.Collection)\n\t\t\t_start_ext_load(scheduler);\n\t});\n\tevents.bind(\"sync\", function(obj){\n\t\tif (obj instanceof Backbone.Collection)\n\t\t\t_finish_ext_load(scheduler);\n\t});\n\tevents.bind(\"error\", function(obj){\n\t\tif (obj instanceof Backbone.Collection)\n\t\t\t_finish_ext_load(scheduler);\n\t});\n\n\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\n\t\tvar ev = new events.model(scheduler.getEvent(id));\n\t\tscheduler._events[id] = ev.toJSON();\n\t\tscheduler._events[id].id = id;\n\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\n\t\tif (!events.get(id)){\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\n\t\t\tvar model = new events.model(data);\n\n\t\t\tvar cid = _get_id(model);\n\t\t\tif (cid != id)\n\t\t\t\tthis.changeEventId(id, cid);\n\t\t\tevents.add(model);\n\t\t\tevents.trigger(\"scheduler:add\", model);\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\n\t\tvar ev = events.get(id);\n\t\tvar upd = sanitize(scheduler.getEvent(id));\n\n\t\tev.set(upd);\n\t\tevents.trigger(\"scheduler:change\", ev);\n\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\n\t\tvar model = events.get(id);\n\t\tif (model){\n\t\t\tevents.trigger(\"scheduler:remove\", model);\n\t\t\tevents.remove(id);\n\t\t}\n\t\treturn true;\n\t});\n};\n\n}","export default function(scheduler){\n\n\t/* global dhtmlDragAndDropObject, dhtmlx */\n// lame old code doesn't provide raw event object\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\n\t\tvar dragger = (new dhtmlDragAndDropObject());\n\t\tvar old = dragger.stopDrag;\n\t\tvar last_event;\n\t\tdragger.stopDrag = function(e) {\n\t\t\tlast_event = e;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\n\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\n\t\t\t\treturn;\n\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\n\t\t\t\t\tthis.deleteEvent(id);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar action_data = scheduler.getActionData(last_event);\n\t\t\tvar event_data = {\n\t\t\t\tstart_date: new Date(action_data.date)\n\t\t\t};\n\n\t\t\t// custom views, need to assign section id, fix dates\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\n\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\n\t\t\t}\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\n\t\t\t}\n\n\t\t\tscheduler.addEventNow(event_data);\n\n\t\t\tscheduler.detachEvent(temp);\n\t\t}\n\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\n\t\t\t},\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\n\t\t\t\treturn htmlObject;\n\t\t\t},\n\t\t\t_dragOut: function(htmlObject) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t});\n\n\t\tif(dhtmlx.DragControl) {\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\n\t\t\t\tonDrop: function (source, target, d, e) {\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\n\t\t\t\t\tlast_event = e;\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\n\t\t\t\t},\n\n\t\t\t\tonDragIn: function (source, target, e) {\n\t\t\t\t\treturn target;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t}\n\t});\n\n}","export default function(scheduler){\n\n\tvar dx, dy,\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\n\n\tfunction clean_html(val) {\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\n\t}\n\n\tfunction x_norm(x, offset) {\n\t\tx = parseFloat(x);\n\t\toffset = parseFloat(offset);\n\t\tif (!isNaN(offset)) x -= offset;\n\n\t\tvar w = colsWidth(x);\n\t\tx = x - w.width + w.cols*dx;\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\n\t}\n\n\tfunction x_norm_event(x, offset, is_left) {\n\t\tx = parseFloat(x);\n\t\toffset = parseFloat(offset);\n\t\tif (!isNaN(offset) && is_left) x -= offset;\n\n\t\tvar w = colsWidth(x);\n\t\tx = x - w.width + w.cols*dx;\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\n\t}\n\tfunction colsWidth(width) {\n\t\tvar r = 0;\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\n\t\tfor (var i = 0; i < els.length; i++) {\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\n\t\t\tvar w = parseFloat(el.style.width);\n\t\t\tif (width > w){\n\t\t\t\twidth -= (w+1);\n\t\t\t\tr+=(w+1);\n\t\t\t}\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\t\treturn { width: r, cols: i };\n\t}\n\n\tfunction y_norm(y) {\n\t\ty = parseFloat(y);\n\t\tif (isNaN(y)) return \"auto\";\n\t\treturn 100 * y / dy;\n\t}\n\n\tfunction get_style(node, style){\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\n\t}\n\n\tfunction de_day(node, n) {\n\t\tvar x = parseInt(node.style.left, 10);\n\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\n\t\t\tx -= scheduler._cols[dx];\n\t\t\tif (x < 0) return dx;\n\t\t}\n\t\treturn n;\n\t}\n\n\tfunction de_week(node, n) {\n\t\tvar y = parseInt(node.style.top, 10);\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\n\t\treturn n;\n\t}\n\n\tfunction xml_start(tag) {\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\n\t}\n\tfunction xml_end(tag) {\n\t\treturn tag ? \"\" : \"\";\n\t}\n\n\tfunction xml_top(tag, profile, header, footer) {\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\n\t\tif (header)\n\t\t\txml += \" header='\" + header + \"'\";\n\t\tif (footer)\n\t\t\txml += \" footer='\" + footer + \"'\";\n\t\txml += \">\";\n\t\treturn xml;\n\t}\n\n\tfunction xml_body_header() {\n\t\tvar xml = \"\";\n\t\t// detects if current mode is timeline\n\t\tvar mode = scheduler._mode;\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\n\t\txml += \"\";\n\n\t\tif (scheduler._mode == \"week_agenda\") {\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\n\t\t\tfor (var i = 0; i < xh.length; i++)\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\n\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\n\t\t} else if (scheduler._mode == \"year\") {\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\n\t\t\tfor (var i = 0; i < xh.length; i++) {\n\t\t\t\txml += \"\";\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\n\t\t\t\txml += \"\";\n\t\t\t}\n\t\t} else {\n\t\t\txml += \"\";\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\n\t\t\txml += xml_month_scale(xh);\n\t\t\txml += \"\";\n\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\t\t\txml += \"\";\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\n\t\t\t\t\txml += \"\";\n\t\t\t\t}\n\t\t\t\txml += \"\";\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\n\t\t\t\txml += xml_month(yh);\n\t\t\t} else {\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\n\t\t\t\t\tyh = yh.previousSibling;\n\t\t\t\tyh = yh.childNodes;\n\n\t\t\t\txml += \"\";\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\n\t\t\t\t\txml += \"\\n\";\n\t\t\t\txml += \"\";\n\t\t\t\tdy = yh[0].offsetHeight;\n\t\t\t}\n\t\t}\n\t\txml += \"\";\n\t\treturn xml;\n\t}\n\n\tfunction xml_month(yh) {\n\t\tvar xml = \"\";\n\t\tvar r = yh.querySelectorAll(\"tr\");\n\t\tfor (var i = 0; i < r.length; i++) {\n\t\t\tvar days = [];\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\n\n\t\t\tfor (var j = 0; j < cells.length; j++)\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\n\n\t\t\txml += \"\\n\";\n\t\t\tdy = cells[0].offsetHeight;\n\t\t}\n\t\treturn xml;\n\t}\n\n\tfunction xml_month_scale(xh) {\n\t\tvar xhs,\n\t\t\txml = \"\";\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\n\t\t\t\txhs = xh[1].childNodes;\n\n\t\t\txh = xh[0].childNodes;\n\t\t}\n\n\t\tfor (var i = 0; i < xh.length; i++)\n\t\t\txml += \"\\n\";\n\t\tdx = xh[0].offsetWidth;\n\n\t\tif (xhs) {\n\t\t\tvar width = 0;\n\t\t\tvar top_width = xh[0].offsetWidth;\n\t\t\tvar top_col = 1;\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\n\t\t\t\txml += \"\\n\";\n\t\t\t\twidth += xhs[i].offsetWidth;\n\t\t\t\tif (width >= top_width) {\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\n\t\t\t\t\ttop_col++;\n\t\t\t\t}\n\t\t\t\tdx = xhs[0].offsetWidth;\n\t\t\t}\n\t\t}\n\t\treturn xml;\n\t}\n\n\tfunction xml_body(colors) {\n\t\tvar xml = \"\";\n\t\tvar evs = scheduler._rendered;\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\n\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\n\n\t\t\tfor (var i = 0; i < evs.length; i++)\n xml += \"\";\n\n\t\t} else if (scheduler._mode == \"week_agenda\") {\n\n\t\t\tfor (var i = 0; i < evs.length; i++)\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\n\n\t\t} else if (scheduler._mode == \"year\") {\n\n\t\t\tvar evs = scheduler.get_visible_events();\n\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\tvar d = evs[i].start_date;\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\n\t\t\t\t\td = scheduler._min_date;\n\n\t\t\t\twhile (d < evs[i].end_date) {\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\n\n\t\t\t\t\txml += \"\";\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (matrix && matrix.render == \"cell\") {\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\n\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\n\t\t\t\txml += \"\\n\";\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\tvar zx, zdx;\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\t\t\t\t// logic for timeline view\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\n\t\t\t\t} else {\n\t\t\t\t\t// we should use specific logic for day/week/units view\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\n\t\t\t\t}\n\t\t\t\tif (isNaN(zdx * 1)) continue;\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\n\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\n\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\n if (!dets) continue;\n\t\t\t\tvar day = dets._sday;\n\t\t\t\tvar week = dets._sweek;\n\t\t\t\tvar length = dets._length || 0;\n\n\t\t\t\tif (scheduler._mode == \"month\") {\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\n\n\t\t\t\t\tday = de_day(evs[i], day);\n\t\t\t\t\tweek = de_week(evs[i], week);\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\t\t\t\tday = 0;\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\n\t\t\t\t\tweek = el.rowIndex;\n\t\t\t\t\tvar dy_copy = dy;\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\n\t\t\t\t\tzy -= zy * 0.2;\n\t\t\t\t\tdy = dy_copy;\n\t\t\t\t} else {\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\n\t\t\t\t}\n\n\t\t\t\txml += \"\\n\";\n\n\t\t\t\tif (e_type == \"event\") {\n\t\t\t\t\txml += \"
\";\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\n\t\t\t\t\txml += \"\";\n\t\t\t\t} else {\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\n\t\t\t\t\txml += \"\";\n\t\t\t\t}\n\t\t\t\txml += \"
\";\n\t\t\t}\n\t\t\t}\n\n\t\treturn xml;\n\t}\n\n\tfunction toXML(start, end, view, mode, header, footer){\n\t\tvar colors = false;\n\t\tif (mode == \"fullcolor\") {\n\t\t\tcolors = true;\n\t\t\tmode = \"color\";\n\t\t}\n\n\t\tmode = mode || \"color\";\n\n\t\tvar xml = \"\";\n\t\tif (start) {\n\n\t\t\tvar original_date = scheduler._date;\n\t\t\tvar original_mode = scheduler._mode;\n\t\t\tend = scheduler.date[view+\"_start\"](end);\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\n\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\n\t\t\t\tthis.setCurrentView(temp_date, view);\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\n\t\t\t}\n\t\t\txml += xml_end(\"pages\");\n\n\t\t\tthis.setCurrentView(original_date, original_mode);\n\t\t} else {\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\n\t\t}\n\t\treturn xml;\n\t}\n\tscheduler.getPDFData = toXML;\n\tfunction send_xml(xml, url){\n\t\tvar uid = scheduler.uid();\n\t\tvar d = document.createElement(\"div\");\n\t\td.style.display = \"none\";\n\t\tdocument.body.appendChild(d);\n\n\t\td.innerHTML = '
';\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\n\t\tdocument.getElementById(uid).submit();\n\t\td.parentNode.removeChild(d);\n\t}\n\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\n\t\tvar xml = \"\";\n\t\tif(typeof mode == \"object\"){\n\t\t\txml = schedulersToPdf(mode);\n\t\t}else{\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\n\t\t}\n\n\t\tsend_xml(xml, url);\n\t}\n\n\tfunction schedulersToPdf(objects){\n\t\tvar xml = \"\";\n\t\tfor(var i=0; i < objects.length; i++){\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);\n\t\t}\n\t\txml += \"\";\n\t\treturn xml;\n\t}\n\n\t/*\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\n\t * example:\n\t * scheduler.toPDF(\"generate.ashx\", [\n\t * { source: scheduler1, mode: \"color\" },\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\n\t * { source: scheduler3 }\n\t * ]);\n\t *\n\t */\n\tscheduler.toPDF = function(url, mode, header, footer) {\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\n\t};\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\n\t\tif (typeof start == \"string\") {\n\t\t\tstart = scheduler.templates.api_date(start);\n\t\t\tend = scheduler.templates.api_date(end);\n\t\t}\n\n\t\treturn to_pdf.apply(this, arguments);\n\t};\n\n}","export default function(scheduler){\n\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\nscheduler.config.details_on_create = true;\nscheduler.config.show_quick_info = true;\nscheduler.xy.menu_width = 0;\n\n\n\nlet clickedElementPosition = null;\nscheduler.attachEvent(\"onSchedulerReady\", function(){\n\tconst container = scheduler.$container;\n\tif(container._$quickInfoHandler){\n\t\treturn;\n\t}else{\n\t\tcontainer._$quickInfoHandler = true;\n\t\t// store coordinates of clicked segment of an event\n\t\t// in case multi section events or multi-line month events\n\t\tscheduler.event(container, \"mousedown\", function(e){\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\n\t\t\tif (eventElement) {\n\t\t\t\tclickedElementPosition = {\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\n\t\t\tdelete container._$quickInfoHandler;\n\t\t});\n\t}\n});\n\nscheduler.attachEvent(\"onClick\", function(id){\n\tif(!scheduler.config.show_quick_info){\n\t\treturn;\n\t}\n\tscheduler.showQuickInfo(id);\n\treturn true;\n});\n\n(function(){\n\t// pass `force` argument in order to hide quick info synchronously\n\t// so it won't affect showQuickInfo call that can follow\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\n\tvar hiding_function = function(){\n\t\tscheduler.hideQuickInfo(true);\n\t\treturn true;\n\t};\n\tfor (var i=0; i window.innerWidth){\n\t\t\tleft = window.innerWidth - width;\n\t\t}\n\t\tleft = Math.max(0, left);\n\n\t\tqi.style.left = left + \"px\";\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\n\t} else {\n\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\n\t\tqi.style.top = dataPos + 20 + \"px\";\n\t\tif (pos.dx == 1){\n\t\t\tqi.style.right = \"auto\";\n\t\t\tqi.style.left = -width + \"px\";\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tqi.style.left = \"-10px\";\n\t\t\t},1);\n\t\t} else {\n\t\t\tqi.style.left = \"auto\";\n\t\t\tqi.style.right = -width + \"px\";\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tqi.style.right = \"-10px\";\n\t\t\t},1);\n\t\t}\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\n\t}\n\n\tqi.ontransitionend = () => {\n\t\tfitQIInsideWindow(qi);\n\t\tqi.ontransitionend = null;\n\t};\n\tsetTimeout(() => {\n\t\tfitQIInsideWindow(qi);\n\t}, 1);\n};\n\nfunction fitQIInsideWindow(quickInfoPopup){\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\n\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\n\n\t// If the popup extends outside the scheduler container, adjust its top position\n\tif (offsetBottom < 0) {\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\n\t}\n}\n\nscheduler.attachEvent(\"onTemplatesReady\", function(){\n\tscheduler.hideQuickInfo();\n\tif(this._quick_info_box){\n\t\tvar box = this._quick_info_box;\n\t\tif(box.parentNode){\n\t\t\tbox.parentNode.removeChild(box);\n\t\t}\n\t\tthis._quick_info_box = null;\n\t}\n});\nscheduler._quick_info_onscroll_handler = function(e){\n\tscheduler.hideQuickInfo();\n};\nscheduler._init_quick_info = function(){\n\tif (!this._quick_info_box){\n\n\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\n\n\t\tthis._waiAria.quickInfoAttr(qi);\n\n\t\tqi.className = \"dhx_cal_quick_info\";\n\t\tif (scheduler.$testmode)\n\t\t\tqi.className += \" dhx_no_animate\";\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\n\t//title\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\n\t\tvar html = `\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t
`;\n\n\t//buttons\n\t\thtml += \"
\";\n\t\tvar buttons = scheduler.config.icons_select;\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\n\t\t\t\thtml += `
\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\n\t\t\t}\n\t\t// }\n\t\thtml += \"
\";\n\n\t\tqi.innerHTML = html;\n\t\tscheduler.event(qi, \"click\", function(ev){\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\n\t\t});\n\t\tif (scheduler.config.quick_info_detached){\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\n\t\t}\n\t}\n\n\treturn this._quick_info_box;\n};\n\nscheduler._qi_button_click = function(node){\n\tvar box = scheduler._quick_info_box;\n\tif (!node || node == box) return;\n\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\n\t\tscheduler.hideQuickInfo();\n\t\treturn;\n\t}\n\n\tvar mask = scheduler._getClassName(node);\n\tif (mask.indexOf(\"_icon\")!=-1){\n\t\tvar id = scheduler._quick_info_box_id;\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\n\t} else\n\t\tscheduler._qi_button_click(node.parentNode);\n};\n\nfunction getPositionInsideScheduler(element){\n\tlet left = 0;\n\tlet top = 0;\n\n\tlet node = element;\n\twhile (node && node != scheduler._obj){\n\t\tleft += node.offsetLeft;\n\t\ttop += node.offsetTop-node.scrollTop;\n\t\tnode = node.offsetParent;\n\t}\n\tif(node){\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\n\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\n\t}\n\treturn 0;\n}\n\nscheduler._get_event_counter_part = function(id){\n\tvar domEv = scheduler.getRenderedEvent(id);\n\treturn getPositionInsideScheduler(domEv);\n};\n\nscheduler._fill_quick_data = function(id){\n\tvar ev = scheduler.getEvent(id);\n\tvar qi = scheduler._quick_info_box;\n\n\tscheduler._quick_info_box_id = id;\n\n//title content\n\n\tvar header = {\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\n\t};\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\n\ttitleContent.innerHTML = `${header.content}`;\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\n\ttitleDate.innerHTML = header.date;\n\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\n\n//main content\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\n\tif(mainContent){\n\t\tmain.classList.remove(\"dhx_hidden\");\n\t\tmain.innerHTML = mainContent;\n\t}else{\n\t\tmain.classList.add(\"dhx_hidden\");\n\t}\n};\n\n\n}","export default function(scheduler){\n\t\nscheduler.attachEvent(\"onTemplatesReady\", function() {\n\tvar originalRecurringSetValue;\n\tif (scheduler.form_blocks.recurring) {\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\n\t}\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\n\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\n\t\t\tthis.config.readonly_active = true;\n\t\t}\n\t\telse {\n\t\t\tthis.config.readonly_active = false;\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\n\t\n\t\t\t// initial value\n\t\t\tif(scheduler.form_blocks.recurring) {\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\n\t\t\t}\n\t\t}\n\n\t\tvar sns = this.config.lightbox.sections;\n\t\tif (this.config.readonly_active) {\n\t\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\t\tif (sns[i].type == 'recurring') {\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\n\t\t\t\t\t\t\tvar style = \"none\";\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\n\t\t\t\t\t\t\twrapper.style.display = style;\n\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\n\t\t\t\t\tvar button_array = button_arrays[k];\n\t\t\t\t\tvar index = -1;\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\n\t\t\t\t\t\t\tindex = p;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (index != -1) {\n\t\t\t\t\t\tbutton_array.splice(index, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.resetLightbox();\n\n\t\treturn true;\n\t});\n\n\tfunction txt_replace(tag, d, n, text) {\n\t\tvar txts = d.getElementsByTagName(tag);\n\t\tvar txtt = n.getElementsByTagName(tag);\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\n\t\t\tvar n = txtt[i];\n\t\t\tif (!text){\n\t\t\t\tn.disabled = true;\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\n\t\t\t\tif(d.checked)\n\t\t\t\t\tn.checked = true;\n\t\t\t}else {\n\t\t\t\tvar t = document.createElement(\"span\");\n\t\t\t\tt.className = \"dhx_text_disabled\";\n\t\t\t\tt.innerHTML = text(txts[i]);\n\t\t\t\tn.parentNode.insertBefore(t, n);\n\t\t\t\tn.parentNode.removeChild(n);\n\t\t\t}\n\t\t}\n\t}\n\n\tvar old = scheduler._fill_lightbox;\n\tscheduler._fill_lightbox = function() {\n\n\t\tvar lb = this.getLightbox();\n\t\tif (this.config.readonly_active) {\n\t\t\tlb.style.visibility = 'hidden';\n\t\t\t// lightbox should have actual sizes before rendering controls\n\t\t\t// currently only matters for dhtmlxCombo\n\t\t\tlb.style.display = 'block';\n\t\t}\n\t\tvar res = old.apply(this, arguments);\n\t\tif (this.config.readonly_active) {\n\t\t\t//reset visibility and display\n\t\t\tlb.style.visibility = '';\n\t\t\tlb.style.display = 'none';\n\t\t}\n\n\t\tif (this.config.readonly_active) {\n\n\t\t\tvar originalForm = this.getLightbox();\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\n\t\t\treadonlyForm.id = scheduler.uid();\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\n\t\t\t\treturn a.value;\n\t\t\t});\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\n\t\t\t\tif(!a.options.length) return \"\";\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\n\t\t\t});\n\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\n\n\t\t\tthis.showCover(readonlyForm);\n\t\t\tif (scheduler._lightbox)\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\n\t\t\tthis._lightbox = readonlyForm;\n\n\t\t\tif (scheduler.config.drag_lightbox)\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\n\t\t\t\t\n\t\t\tscheduler._init_lightbox_events();\n\t\t\tthis.setLightboxSize();\n\t\t}\n\t\treturn res;\n\t};\n\n\tvar hold = scheduler.hide_lightbox;\n\tscheduler.hide_lightbox = function() {\n\t\tif (this._lightbox_r) {\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\n\t\t\tthis._lightbox_r = this._lightbox = null;\n\t\t}\n\n\t\treturn hold.apply(this, arguments);\n\t};\n});\n\n\n}","import { RRule, rrulestr } from 'rrule';\n\nexport default function (scheduler) {\n\n\tfunction clearMilliseconds(date) {\n\t\treturn new Date(\n\t\t\tdate.getFullYear(),\n\t\t\tdate.getMonth(),\n\t\t\tdate.getDate(),\n\t\t\tdate.getHours(),\n\t\t\tdate.getMinutes(),\n\t\t\tdate.getSeconds(),\n\t\t\t0\n\t\t);\n\t}\n\n\tfunction isDeletedOccurrence(event) {\n\t\treturn !!event.deleted;\n\t}\n\n\tfunction isSeries(event) {\n\t\treturn !!event.rrule && !event.recurring_event_id;\n\t}\n\n\tfunction clearRecurringProperties(event) {\n\t\tevent.rrule = \"\";\n\t\tevent.original_start = null;\n\t\tevent.recurring_event_id = null;\n\t\tevent.duration = null;\n\t\tevent.deleted = null;\n\t}\n\n\tfunction createException(ev) {\n\t\tlet id = ev.id.split(\"#\");\n\n\t\tlet nid = scheduler.uid();\n\t\tscheduler._not_render = true;\n\t\tlet nev = scheduler._copy_event(ev);\n\t\tnev.id = nid;\n\t\tnev.recurring_event_id = id[0];\n\n\t\tlet timestamp = id[1];\n\n\t\tnev.original_start = new Date(Number(timestamp));\n\n\t\tscheduler._add_rec_marker(nev, timestamp);\n\t\tscheduler.addEvent(nev);\n\t\tscheduler._not_render = false;\n\t}\n\n\tfunction toUTCDate(date){\n\t\treturn new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(),date.getSeconds()));\n\t}\n\n\tfunction setUTCPartsToDate(d) {\n\t\treturn new Date(\n\t\t\td.getUTCFullYear(),\n\t\t\td.getUTCMonth(),\n\t\t\td.getUTCDate(),\n\t\t\td.getUTCHours(),\n\t\t\td.getUTCMinutes(),\n\t\t\td.getUTCSeconds()\n\t\t);\n\t}\n\n\tscheduler._rec_temp = [];\n\tscheduler._rec_markers_pull = {};\n\tscheduler._rec_markers = {};\n\tscheduler._add_rec_marker = function (ev, time) {\n\t\tev._pid_time = time;\n\t\tthis._rec_markers[ev.id] = ev;\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\n\t};\n\tscheduler._get_rec_marker = function (time, id) {\n\t\tlet ch = this._rec_markers_pull[id];\n\t\tif (ch) return ch[time];\n\t\treturn null;\n\t};\n\tscheduler._get_rec_markers = function (id) {\n\t\treturn (this._rec_markers_pull[id] || []);\n\t};\n\n\t(function () {\n\t\tvar old_add_event = scheduler.addEvent;\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\n\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\n\n\t\t\t\tif (ev.start_date) {\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\n\t\t\t\t}\n\t\t\t\tif (ev.end_date) {\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn ev_id;\n\t\t};\n\t})();\n\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\n\n\t\tif (event.original_start) {\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\n\t\t}\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\n\t\tif (this._ignore_call) return;\n\t\tthis._ignore_call = true;\n\n\t\tif (scheduler._rec_markers[id]) {\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\n\t\t\tdelete scheduler._rec_markers[id];\n\t\t}\n\n\t\tif (scheduler._rec_markers_pull[id]) {\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\n\t\t\tdelete scheduler._rec_markers_pull[id];\n\t\t}\n\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\n\t\t\tvar tev = this._rec_temp[i];\n\t\t\tif (tev.recurring_event_id == id) {\n\t\t\t\ttev.recurring_event_id = new_id;\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\n\t\t\t}\n\t\t}\n\n\t\tfor (var i in this._rec_markers) {\n\t\t\tvar tev = this._rec_markers[i];\n\t\t\tif (tev.recurring_event_id == id) {\n\t\t\t\ttev.recurring_event_id = new_id;\n\t\t\t\ttev._pid_changed = true;\n\t\t\t}\n\t\t}\n\n\t\tvar el = scheduler._rec_markers[new_id];\n\t\tif (el && el._pid_changed) {\n\t\t\tdelete el._pid_changed;\n\t\t\tsetTimeout(function () {\n\t\t\t\tif (scheduler.$destroyed) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\n\t\t\t}, 1);\n\t\t}\n\n\t\tdelete this._ignore_call;\n\t});\n\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\n\t\tlet id = idTimestamp;\n\t\tidTimestamp = id.split(\"#\");\n\t\tlet nid = scheduler.uid();\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\n\t\tlet nev = scheduler._copy_event(ev);\n\t\tnev.id = nid;\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\n\t\tnev.original_start = new Date(Number(tid));\n\t\tnev.deleted = true;\n\t\tscheduler.addEvent(nev);\n\t}\n\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\n\t\tvar ev = this.getEvent(id);\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\n\t\t\tdeleteEventFromSeries(id, ev);\n\t\t} else {\n\t\t\tif (isSeries(ev) && this._lightbox_id)\n\t\t\t\tthis._roll_back_dates(ev);\n\n\n\t\t\tvar sub = this._get_rec_markers(id);\n\t\t\tfor (var i in sub) {\n\t\t\t\tif (sub.hasOwnProperty(i)) {\n\t\t\t\t\tid = sub[i].id;\n\t\t\t\t\tif (this.getEvent(id))\n\t\t\t\t\t\tthis.deleteEvent(id, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\n\t\t\tif (!scheduler._events[id]) {\n\t\t\t\tev.deleted = true;\n\t\t\t\tthis.setEvent(id, ev);\n\t\t\t}\n\t\t}\n\t});\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\n\t\tif (this._loading) return true;\n\n\t\tvar ev = this.getEvent(id);\n\n\t\tif (this._is_virtual_event(id)) {\n\t\t\tcreateException(ev);\n\n\t\t} else {\n\t\t\tif (ev.start_date) {\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\n\t\t\t}\n\t\t\tif (ev.end_date) {\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\n\t\t\t}\n\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\n\t\t\t\tthis._roll_back_dates(ev);\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\n\t\t\t}\n\n\t\t\tvar sub = this._get_rec_markers(id);\n\t\t\tfor (var i in sub) {\n\t\t\t\tif (sub.hasOwnProperty(i)) {\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete this._rec_markers_pull[id];\n\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\n\t\t\tvar isEventFound = false;\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\n\t\t\t\t\tisEventFound = true;\n\t\t\t}\n\t\t\tif (!isEventFound)\n\t\t\t\tthis._select_id = null;\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\n\t\tif (!this._loading) {\n\t\t\tvar ev = this.getEvent(id);\n\t\t\tif (isSeries(ev)) {\n\t\t\t\tthis._roll_back_dates(ev);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\n\t\tvar ev = this.getEvent(id);\n\t\tif (isSeries(ev))\n\t\t\tthis._select_id = null;\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\n\t\tvar ev = this.getEvent(id);\n\t\tif (!isSeries(ev)) {\n\t\t\tclearRecurringProperties(ev);\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\n\t\tvar ev = this.getEvent(id);\n\t\tif (isSeries(ev)) {\n\t\t\tthis._roll_back_dates(ev);\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\n\t\t\tthis.render_view_data();\n\t\t}\n\t});\n\tscheduler._roll_back_dates = function (ev) {\n\t\t//// !!!!! calc temp properties\n\t\tif (ev.start_date) {\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\n\t\t}\n\t\tif (ev.end_date) {\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\n\t\t}\n\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\n\t\tev.end_date = ev._end_date;\n\t\tif (ev._start_date) {\n\t\t\tev.start_date.setMonth(0);\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\n\n\t\t}\n\t};\n\n\tscheduler._is_virtual_event = function (id) {\n\t\treturn id.toString().indexOf(\"#\") != -1;\n\t};\n\tscheduler._is_modified_occurence = function (ev) {\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\n\t};\n\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\n\tscheduler.showLightbox = function (id) {\n\t\tvar locale = this.locale;\n\t\tvar c = scheduler.config.lightbox_recurring;\n\t\tvar ev = this.getEvent(id);\n\t\tvar pid = ev.recurring_event_id;\n\t\tvar isVirtual = this._is_virtual_event(id);\n\t\tif (isVirtual)\n\t\t\tpid = id.split(\"#\")[0];\n\n\t\t// show series\n\t\tvar showSeries = function (id) {\n\t\t\tvar event = scheduler.getEvent(id);\n\t\t\tevent._end_date = event.end_date;\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\n\t\t};\n\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\n\t\t\t// direct API call on series id\n\t\t\treturn showSeries(id);\n\t\t}\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\n\t\t\t// editing instance or non recurring event\n\t\t\treturn this.showLightbox_rec(id);\n\t\t}\n\t\tif (c == 'ask') {\n\t\t\tvar that = this;\n\t\t\tscheduler.modalbox({\n\t\t\t\ttext: locale.labels.confirm_recurring,\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\n\t\t\t\twidth: \"500px\",\n\t\t\t\tposition: \"middle\",\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\n\t\t\t\tcallback: function (index) {\n\t\t\t\t\tswitch (+index) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\treturn showSeries(pid);\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tshowSeries(pid);\n\t\t}\n\t};\n\n\tfunction groupExceptions() {\n\t\tconst exceptions = {};\n\t\tfor (const i in scheduler._events) {\n\t\t\tconst ev = scheduler._events[i];\n\t\t\tif (ev.recurring_event_id) {\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\n\t\t\t\t}\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\n\t\t\t}\n\t\t}\n\t\treturn exceptions;\n\t}\n\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\n\tscheduler.get_visible_events = function (only_timed) {\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\n\t\t\tdelete this._events[this._rec_temp[i].id];\n\t\tthis._rec_temp = [];\n\n\t\tconst exceptions = groupExceptions();\n\t\tvar stack = this.get_visible_events_rec(only_timed);\n\t\tvar out = [];\n\t\tfor (var i = 0; i < stack.length; i++) {\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isSeries(stack[i])) {\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\n\t\t\t} else {\n\t\t\t\tout.push(stack[i]);\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t};\n\n\t(function () {\n\t\tvar old = scheduler.isOneDayEvent;\n\t\tscheduler.isOneDayEvent = function (ev) {\n\t\t\tif (isSeries(ev)) return true;\n\t\t\treturn old.call(this, ev);\n\t\t};\n\t\tvar old_update_event = scheduler.updateEvent;\n\t\tscheduler.updateEvent = function (id) {\n\t\t\tvar ev = scheduler.getEvent(id);\n\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\n\t\t\t\tscheduler.update_view();\n\t\t\t} else {\n\t\t\t\told_update_event.call(this, id);\n\t\t\t}\n\t\t};\n\t})();\n\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\n\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\n\t\tif (!ev.rrule) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\n\t\tif (!seriesExceptions) {\n\t\t\tseriesExceptions = {};\n\t\t}\n\n\t\t// GS-2596: from and to should be in UTC, \n\t\t// need to remove one sec to not be included in repeatedDates array\n\t\tfrom = toUTCDate(from || new Date(scheduler._min_date.valueOf() - 1000));\n\t\tto = toUTCDate(to || new Date(scheduler._max_date.valueOf() - 1000));\n\n\t\t\n\t\tconst utcStart = toUTCDate(ev.start_date);\n\t\tlet parsedRRule;\n\t\tif (maxCount){\n\t\t\t// for getRecDates() method\n\t\t\tparsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)};COUNT=${maxCount}`, { dtstart: utcStart });\n\t\t} else {\n\t\t\tparsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart });\n\t\t}\n\t\t//GS-2596: third parameter, includes dates that match with arguments\n\t\tconst repeatedDates = parsedRRule.between(from, to, true).map(date => {\n\t\t\tconst adjustedDate = setUTCPartsToDate(date);\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\n\t\t\treturn adjustedDate;\n\t\t});\n\t\tlet visibleCount = 0;\n\n\t\tconst eventDuration = ev.duration;\n\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\n\t\t\tif (maxCount && visibleCount >= maxCount) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst date = repeatedDates[i];\n\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\n\t\t\tif (exception) {\n\t\t\t\tif (exception.deleted) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tvisibleCount++;\n\t\t\t\t\tstack.push(exception);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst copy = scheduler._copy_event(ev);\n\t\t\t\t//copy._timed = ev._timed;\n\t\t\t\tcopy.text = ev.text;\n\t\t\t\tcopy.start_date = date;\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\n\n\n\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\n\t\t\t\tstack.push(copy);\n\n\t\t\t\tif (!non_render) {\n\t\t\t\t\tscheduler._events[copy.id] = copy;\n\t\t\t\t\tscheduler._rec_temp.push(copy);\n\t\t\t\t}\n\t\t\t\tvisibleCount++;\n\t\t\t}\n\t\t}\n\t\t//GS-2534: case when exceptions have different dates\n\t\tif (seriesExceptions && repeatedDates.length == 0 ){\n\t\t\tfor (let a in seriesExceptions){\n\t\t\t\tlet exception = seriesExceptions[a];\n\t\t\t\tif (exception) {\n\t\t\t\t\tif(exception.deleted){\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\telse if (from && to && exception.start_date < to && exception.end_date > from) {\n\t\t\t\t\t\tstack.push(exception);\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t};\n\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\n\t\tif (shift) {\n\t\t\tif (shift > 0) {\n\t\t\t\t// e.g. 24h -> 23h\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// e.g. 24h -> 25h\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\n\t\t\t}\n\t\t}\n\t\treturn new Date(default_date.valueOf());\n\t};\n\tscheduler.getRecDates = function (id, max) {\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\n\t\tvar recurrings = [];\n\t\tmax = max || 100;\n\n\t\tif (!isSeries(ev)) {\n\t\t\treturn [\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\n\t\t\t];\n\t\t}\n\t\tif (ev.deleted) {\n\t\t\treturn [];\n\t\t}\n\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\n\n\t\tvar result = [];\n\t\tfor (var i = 0; i < recurrings.length; i++) {\n\t\t\tif (!recurrings[i].deleted) {\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\tscheduler.getEvents = function (from, to) {\n\t\tvar result = [];\n\t\tconst exceptions = groupExceptions();\n\t\tfor (var a in this._events) {\n\t\t\tvar ev = this._events[a];\n\t\t\tif (ev.recurring_event_id) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\n\t\t\t\tif (isSeries(ev)) {\n\t\t\t\t\tvar sev = [];\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\n\t\t\t\t\tsev.forEach(function(occurence){\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\n\t\t\t\t\t\t\tresult.push(occurence);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t// if it's virtual event we can skip it\n\t\t\t\t} else if (!this._is_virtual_event(ev.id)) {\n\t\t\t\t\tresult.push(ev);\n\t\t\t\t}\n\t\t\t} else if (!from && !to && !this._is_virtual_event(ev.id)) {\n\t\t\t\tresult.push(ev);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t};\n\n\t//drop secondary attributes\n\tscheduler._copy_dummy = function (ev) {\n\t\tvar start_date = new Date(this.start_date);\n\t\tvar end_date = new Date(this.end_date);\n\t\tthis.start_date = start_date;\n\t\tthis.end_date = end_date;\n\t\tthis.duration = this.rrule = null;\n\t};\n\n\tscheduler.config.include_end_by = false;\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\n\tscheduler.config.lightbox.sections = [\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\n\t];\n\n\tscheduler.attachEvent(\"onClearAll\", function () {\n\t\tscheduler._rec_markers = {}; //clear recurring events data\n\t\tscheduler._rec_markers_pull = {};\n\t\tscheduler._rec_temp = [];\n\t});\n\n\n\tfunction getTopLevelOption(rruleObj, untilDate) {\n\t\tconst options = rruleObj.options;\n\t\tconst until = options.until || untilDate;\n\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\n\n\t\tif (hasEndCondition) {\n\t\t\treturn 'CUSTOM';\n\t\t}\n\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\n\t\t\treturn 'DAILY';\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\n\t\t\treturn 'WEEKLY';\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\n\t\t\treturn 'MONTHLY';\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\n\t\t\treturn 'YEARLY';\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\n\t\t\toptions.byweekday.includes(RRule.MO) &&\n\t\t\toptions.byweekday.includes(RRule.TU) &&\n\t\t\toptions.byweekday.includes(RRule.WE) &&\n\t\t\toptions.byweekday.includes(RRule.TH) &&\n\t\t\toptions.byweekday.includes(RRule.FR)) {\n\t\t\treturn 'WORKDAYS';\n\t\t} else {\n\t\t\treturn 'CUSTOM';\n\t\t}\n\t}\n\t\n\tfunction getWeekdayOfMonth(date) {\n\t\tconst dayOfWeek = date.getDay();\n\t\tconst dayOfMonth = date.getDate();\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\n\t\treturn { dayOfWeek, dayNumber };\n\t}\n\n\n\tconst jsDaysToRRULEDays = {\n\t\t0: \"SU\",\n\t\t1: \"MO\",\n\t\t2: \"TU\",\n\t\t3: \"WE\",\n\t\t4: \"TH\",\n\t\t5: \"FR\",\n\t\t6: \"SA\"\n\t};\n\tconst RruleDayNumsToJs = {\n\t\t0: 1,\n\t\t1: 2,\n\t\t2: 3,\n\t\t3: 4,\n\t\t4: 5,\n\t\t5: 6,\n\t\t6: 0\n\t};\n\n\tfunction fillCustomDaily(node, rule) {\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\n\t}\n\n\tfunction fillCustomWeekly(node, rule, event) {\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\n\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\n\t\tif (rule && rule.byweekday) {\n\t\t\trule.byweekday.forEach((day) => {\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\n\t\t\t});\n\t\t} else {\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\n\t\t}\n\n\t}\n\n\tfunction fillCustomMonthly(node, rule, event) {\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\n\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\n\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\n\t\t} else {\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\n\t\t}\n\t}\n\n\tfunction formatDayNumber(date){\n\t\tswitch (date) {\n\t\t\tcase 1:\n\t\t\tcase 31:\n\t\t\t\treturn `${date}st`;\n\t\t\tcase 2:\n\t\t\t\treturn `${date}nd`;\n\t\t\tcase 3:\n\t\t\t\treturn `${date}rd`;\n\t\t\tdefault:\n\t\t\t\treturn `${date}th`;\n\t\t}\n\t}\n\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\n\t\tconst date = startDate.getDate();\n\t\treturn `Every ${formatDayNumber(date)}`;\n\t};\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\n\t};\n\t\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\n\t\tconst date = startDate.getDate();\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\n\t};\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\n\t};\n\n\tfunction fillCustomYearly(node, rule, event) {\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\n\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\n\t\t} else {\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\n\t\t}\n\t}\n\n\tfunction fillEndRule(node, rule, event) {\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\n\t\tcountInput.value = 1;\n\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\n\t\tif (!scheduler.config.repeat_date_of_end) {\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\n\t\t}\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\n\n\t\tif (rule && rule.count) {\n\t\t\tendOptionSelect.value = \"AFTER\";\n\t\t\tcountInput.value = rule.count;\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\n\t\t\tendOptionSelect.value = \"ON\";\n\t\t\tondateInput.value = formatter(event._end_date);\n\t\t} else {\n\t\t\tendOptionSelect.value = \"NEVER\";\n\t\t}\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\n\t}\n\n\tconst getRecValue = {\n\t\tMONTHLY: function (dates) {\n\t\t\tconst rrule = {\n\t\t\t\tfreq: RRule.MONTHLY,\n\t\t\t\tinterval: 1,\n\t\t\t\tbymonthday: dates.start.getDate()\n\t\t\t};\n\t\t\tconst until = new Date(9999, 1, 1);\n\t\t\treturn {rrule, until};\n\t\t},\n\t\tWEEKLY: function (dates) {\n\t\t\tlet day = dates.start.getDay() - 1;\n\t\t\tif (day == -1) day = 6;\n\t\t\tconst rrule = {\n\t\t\t\tfreq: RRule.WEEKLY,\n\t\t\t\tinterval: 1,\n\t\t\t\tbyweekday: [day]\n\t\t\t};\n\t\t\tconst until = new Date(9999, 1, 1);\n\t\t\treturn {rrule, until};\n\t\t},\n\t\tDAILY: function (dates) {\n\t\t\tconst rrule = {\n\t\t\t\tfreq: RRule.DAILY,\n\t\t\t\tinterval: 1\n\t\t\t};\n\t\t\tconst until = new Date(9999, 1, 1);\n\t\t\treturn {rrule, until};\n\t\t},\n\t\tYEARLY: function (dates) {\n\t\t\tconst rrule = {\n\t\t\t\tfreq: RRule.YEARLY,\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\n\t\t\t\tinterval: 1,\n\t\t\t\tbymonthday: dates.start.getDate()\n\t\t\t};\n\t\t\tconst until = new Date(9999, 1, 1);\n\t\t\treturn {rrule, until};\n\t\t},\n\t\tWORKDAYS: function (dates) {\n\t\t\tconst rrule = {\n\t\t\t\tfreq: RRule.WEEKLY,\n\t\t\t\tinterval: 1,\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\n\t\t\t};\n\t\t\tconst until = new Date(9999, 1, 1);\n\t\t\treturn {rrule, until};\n\t\t},\n\t\tCUSTOM: function (dates, node) {\n\t\t\tconst rrule = {};\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\n\n\t\t\trrule.interval = interval;\n\t\t\tlet days;\n\t\t\tlet day;\n\n\t\t\tswitch (freq) {\n\t\t\t\tcase \"DAILY\":\n\t\t\t\t\trrule.freq = RRule.DAILY;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"WEEKLY\": \n\t\t\t\t\trrule.freq = RRule.WEEKLY;\n\t\t\t\t\tdays = [];\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\n\t\t\t\t\t\tif(ch.checked){\n\t\t\t\t\t\t\tdays.push(ch.value);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\trrule.byweekday = days.map((day) => {\n\t\t\t\t\t\tswitch (day) {\n\t\t\t\t\t\t\tcase \"MO\":\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\n\t\t\t\t\t\t\tcase \"TU\":\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\n\t\t\t\t\t\t\tcase \"WE\":\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\n\t\t\t\t\t\t\tcase \"TH\":\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\n\t\t\t\t\t\t\tcase \"FR\":\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\n\t\t\t\t\t\t\tcase \"SA\":\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\n\t\t\t\t\t\t\tcase \"SU\":\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"MONTHLY\":\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\n\t\t\t\t\t\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\n\t\t\t\t\t\tif (day == -1) day = 6;\n\t\t\t\t\t\trrule.byweekday = [day];\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"YEARLY\":\n\t\t\t\t\trrule.freq = RRule.YEARLY;\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\n\t\t\t\t\t\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\n\t\t\t\t\t\tif (day == -1) day = 6;\n\t\t\t\t\t\trrule.byweekday = [day];\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst formatFunc = scheduler.date.str_to_date(\"%Y-%m-%d\");\n\t\t\tlet until = new Date(9999, 1, 1);\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\n\t\t\tif(endRule.value === \"ON\"){\n\t\t\t\tuntil = formatFunc(node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value);\n\t\t\t} else if(endRule.value === \"AFTER\") {\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\n\t\t\t}\n\n\t\t\treturn {rrule, until};\n\t\t},\n\t\tNEVER: function () {\n\t\t}\n\t};\n\n\tfunction fillInDefaults(node, rule, event) {\n\t\tfillCustomDaily(node, rule, event);\n\t\tfillCustomWeekly(node, rule, event);\n\t\tfillCustomMonthly(node, rule, event);\n\t\tfillCustomYearly(node, rule, event);\n\t\tfillEndRule(node, rule, event);\n\t}\n\tscheduler.form_blocks[\"recurring\"] = {\n\t\trender: function (sns) {\n\t\t\tif (sns.form) {\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\n\t\t\t\tlet form = rec._get_node(sns.form);\n\t\t\t\tlet html = rec._outer_html(form);\n\t\t\t\tform.style.display = 'none';\n\t\t\t\treturn html;\n\t\t\t}\n\t\t\tlet loc = scheduler.locale.labels;\n\n\t\t\treturn `
\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
${loc.repeat_ends}
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t
\n\t
`;\n\t\t},\n\n\t\n\t\t_init_set_value: function (node, value, event) {\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\n\t\t\tfunction hide(node) {\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\n\t\t\t}\n\t\t\tfunction show(node) {\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\n\t\t\t}\n\t\t\tfunction onRepeatOptionChange(value) {\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\n\t\t\t\tif (value === \"CUSTOM\") {\n\t\t\t\t\tshow(repeat);\n\t\t\t\t} else {\n\t\t\t\t\thide(repeat);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\n\t\t\t\tconst nodes = {\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\n\t\t\t\t};\n\t\t\t\tswitch (value) {\n\t\t\t\t\tcase \"DAILY\":\n\t\t\t\t\t\thide(nodes.weekly);\n\t\t\t\t\t\thide(nodes.monthly);\n\t\t\t\t\t\thide(nodes.yearly);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"WEEKLY\":\n\t\t\t\t\t\tshow(nodes.weekly);\n\t\t\t\t\t\thide(nodes.monthly);\n\t\t\t\t\t\thide(nodes.yearly);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"MONTHLY\":\n\t\t\t\t\t\thide(nodes.weekly);\n\t\t\t\t\t\tshow(nodes.monthly);\n\t\t\t\t\t\thide(nodes.yearly);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"YEARLY\":\n\t\t\t\t\t\thide(nodes.weekly);\n\t\t\t\t\t\thide(nodes.monthly);\n\t\t\t\t\t\tshow(nodes.yearly);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onCustomRepeatEndRule(value) {\n\t\t\t\tconst nodes = {\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\n\t\t\t\t};\n\t\t\t\tswitch (value) {\n\t\t\t\t\tcase \"NEVER\":\n\t\t\t\t\t\thide(nodes.after);\n\t\t\t\t\t\thide(nodes.on);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"AFTER\":\n\t\t\t\t\t\tshow(nodes.after);\n\t\t\t\t\t\thide(nodes.on);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ON\":\n\t\t\t\t\t\thide(nodes.after);\n\t\t\t\t\t\tshow(nodes.on);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// repeat section change\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\n\t\t\t\tonRepeatOptionChange(this.value);\n\t\t\t});\n\n\t\t\t// custom repeat interval change\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\n\t\t\t});\n\n\t\t\t// custom repeat end rule\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\n\t\t\t\tonCustomRepeatEndRule(this.value);\n\t\t\t});\n\n\t\t\tscheduler._lightbox._rec_init_done = true;\n\t\t},\n\t\tbutton_click: function(){},\n\t\tset_value: function (node, value, ev) {\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\n\t\t\tif (!scheduler._lightbox._rec_init_done)\n\t\t\t\trf._init_set_value(node, value, ev);\n\t\t\tnode.open = !ev.rrule;\n\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\n\n\t\t\tlet ds = rf._ds;\n\t\t\tds.start = ev.start_date;\n\t\t\tds.end = ev._end_date;\n\n\t\t\tif (ev.rrule) {\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\n\t\t\t\tif(topOption === \"CUSTOM\"){\n\t\t\t\t\tlet customFreq;\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\n\t\t\t\t\t\tcase RRule.DAILY:\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase RRule.WEEKLY:\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase RRule.MONTHLY:\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase RRule.YEARLY:\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(customFreq){\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\n\t\t\t\t\t}\n\t\t\t\t//\trepeat_interval_unit\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tfillInDefaults(node, null, ev);\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\n\t\t\t}\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\n\n\t\t},\n\t\tget_value: function (node, ev) {\n\t\t\t\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\n\t\t\t\tlet actual_dates = {};\n\n\t\t\t\tlet timeControl = getTimeSection();\n\n\t\t\t\ttimeControl.getValue(actual_dates);\n\t\t\t\tds.start = actual_dates.start_date;\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\n\t\t\t\tds.end = recurrence.until;\n\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\n\n\t\t\t\tif (ds._start) {\n\t\t\t\t\tev.start_date = new Date(ds.start);\n\t\t\t\t\tev._start_date = new Date(ds.start);\n\t\t\t\t\tds._start = false;\n\t\t\t\t} else\n\t\t\t\t\tev._start_date = null;\n\n\t\t\t\tev._end_date = ds.end;\n\t\t\t}else{\n\t\t\t\tev.rrule = ev.rrule = \"\";\n\t\t\t\tev._end_date = ev.end_date;\n\t\t\t}\n\n\t\t\treturn ev.rrule;\n\t\t},\n\n\t\tfocus: function (node) {\n\t\t}\n\t};\n\n\tfunction getTimeSection() {\n\t\tlet timeControl = scheduler.formSection('time');\n\t\tif (!timeControl) {\n\t\t\ttimeControl = getFirstSectionOfType('time');\n\t\t}\n\t\tif (!timeControl) {\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\n\t\t}\n\n\n\t\tif (!timeControl) {\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.\",\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. \",\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\n\t\t\t\t\"\",\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\n\t\t\t\t.join(\"\\n\"));\n\t\t}\n\n\t\treturn timeControl;\n\t}\n\n\tfunction getFirstSectionOfType(type) {\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\n\t\t\tif (section.type === type) {\n\t\t\t\treturn scheduler.formSection(section.name);\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n}","export default function(scheduler){\n\nscheduler.config.occurrence_timestamp_in_utc = false;\nscheduler.config.recurring_workdays = [1,2,3,4,5];\nscheduler.form_blocks[\"recurring\"] = {\n\t_get_node : function(node){\n\t\tif (typeof node == \"string\"){\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\n\t\t\tif(!element){\n\t\t\t\t// form is detached from lightbox \n\t\t\t\t// search globally, won't work in LWC\n\t\t\t\telement = document.getElementById(node);\n\t\t\t}\n\t\t\tnode = element;\n\t\t}\n\t\tif (node.style.display == 'none')\n\t\t\tnode.style.display = \"\";\n\t\treturn node;\n\t},\n\t_outer_html: function(node){\n\t\treturn node.outerHTML || getOuterHTML(node);\n\n\t\t//probably not needed, FF v10- only\n\t\tfunction getOuterHTML(n){\n\t\t\tvar div = document.createElement('div'), h;\n\t\t\tdiv.appendChild( n.cloneNode(true) );\n\t\t\th = div.innerHTML;\n\t\t\tdiv = null;\n\t\t\treturn h;\n\t\t}\n\t},\n\trender:function(sns) {\n\t\tif(sns.form){\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\n\t\t\tvar form = rec._get_node(sns.form);\n\t\t\tvar html = rec._outer_html(form);\n\t\t\tform.style.display = 'none';\n\t\t\treturn html;\n\t\t}\n\t\tvar loc = scheduler.locale.labels;\n\t\treturn '
'+\n\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\n\t\t\t\t\t\t\t\t'
\"+value+\"
'+\n\t\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\tloc.select_year_day2+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t' '+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
'+\n\t\t\t\t\t' '+\n\t\t\t\t' '+\n\t\t\t\t'';\n\t},\n\t_ds: {},\n\t_get_form_node: function(els, name, value){\n\t\tvar col = els[name];\n\t\tif(!col) return null;\n\t\tif(col.nodeName) return col;\n\n\t\tif(col.length){\n\t\t\tfor(var i=0; i < col.length; i++){\n\t\t\t\tif(col[i].value == value)\n\t\t\t\t\treturn col[i];\n\t\t\t}\n\t\t}\n\t},\n\t_get_node_value: function(els, name, multiselect){\n\t\tvar col = els[name];\n\t\tif(!col) return \"\";\n\t\tif(col.length){\n\t\t\tif(multiselect){\n\t\t\t\tvar res = [];\n\t\t\t\tfor (var i = 0; i < col.length; i++)\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\n\n\t\t\t\treturn res;\n\t\t\t}else{\n\t\t\t\tfor (var i = 0; i < col.length; i++)\n\t\t\t\t\tif (col[i].checked) return col[i].value;\n\t\t\t}\n\t\t}\n\n\t\tif(col.value)\n\t\t\treturn !multiselect ? col.value : [col.value];\n\t},\n\n\t_get_node_numeric_value: function(els, name){\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\n\t\treturn ((value * 1) || 0);\n\t},\n\n\t_set_node_value: function(els, name, value){\n\t\tvar col = els[name];\n\t\tif(!col) return;\n\n\t\tif(col.name == name){\n\t\t\tcol.value = value;\n\t\t}else if(col.length){\n\t\t\tvar hash_value = typeof value == \"object\";\n\t\t\tfor (var i = 0; i < col.length; i++)\n\t\t\t\tif (hash_value || col[i].value == value){\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\n\t\t\t\t}\n\t\t}\n\t},\n\n\t_init_set_value:function(node, value, ev) {\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\n\t\tvar get_value = block._get_node_value;\n\t\tvar set_value = block._set_node_value;\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\n\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\n\t\tvar str_date = function(str_date) {\n\t\t\tvar date = str_date_format(str_date);\n\t\t\tif (scheduler.config.include_end_by)\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\n\t\t\treturn date;\n\t\t};\n\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\n\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\n\t\tvar els = {};\n\n\t\tfunction register_els(inps) {\n\t\t\tfor (var i = 0; i < inps.length; i++) {\n\t\t\t\tvar inp = inps[i];\n\n\t\t\t\tif(inp.name){\n\t\t\t\t\tif(!els[inp.name]){\n\t\t\t\t\t\tels[inp.name] = inp;\n\t\t\t\t\t}else if(els[inp.name].nodeType){\n\t\t\t\t\t\tvar node = els[inp.name];\n\t\t\t\t\t\tels[inp.name] = [node, inp];\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tels[inp.name].push(inp);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\n\n\t\tif (!scheduler.config.repeat_date_of_end) {\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\n\t\t}\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\n\n\t\tvar $ = function(a) {\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\n\t\t};\n\n\t\tfunction change_current_view() {\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\n\t\t\tscheduler.setLightboxSize();\n\t\t}\n\n\t\tfunction get_repeat_code(dates) {\n\t\t\tvar code = [get_value(els, \"repeat\")];\n\t\t\tget_rcode[code[0]](code, dates);\n\n\t\t\twhile (code.length < 5) code.push(\"\");\n\t\t\tvar repeat = \"\";\n\n\t\t\tvar end = get_end_rule(els);\n\n\t\t\tif (end == \"no\") {\n\t\t\t\tdates.end = new Date(9999, 1, 1);\n\t\t\t\trepeat = \"no\";\n\t\t\t}\n\t\t\telse if (end == \"date_of_end\") {\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\n\n\t\t\t\tvar transp = 0;\n\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);\n\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\n\n\t\t\t\t/*if(code[0] == \"week\"){\n\t\t\t\t\tvar days = code[4] || \"\";\n\t\t\t\t\tif(scheduler.config.start_on_monday){\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\n\t\t\t\t\t\ttransp = 1;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\n\t\t\t\t\t\ttransp = 1;\n\t\t\t\t\t}\n\t\t\t\t}*/\n\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\n\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\n\t\t\t}\n\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\n\t\t}\n\t\tfunction get_end_rule(els){\n\t\t\tvar end = els[\"end\"];\n\t\t\tif(end.length){\n\t\t\t\tfor(var i =0; i < end.length; i++){\n\t\t\t\t\tif(end[i].checked){\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\n\t\t\t\t\t\t\treturn end[i].value;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(!i){\n\t\t\t\t\t\t\t\treturn \"no\";\n\t\t\t\t\t\t\t}else if(i == 2){\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(end.value)\n\t\t\t\t\treturn end.value;\n\t\t\t}\n\t\t\treturn \"no\";\n\t\t}\n\t\tfunction set_end_rule(els, value){\n\t\t\tvar end = els[\"end\"];\n\n\t\t\tif(end.length){\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\n\t\t\t\tif(has_values){\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\n\t\t\t\t\t\tif(end[i].value == value)\n\t\t\t\t\t\t\tend[i].checked = true;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tvar ind = 0;\n\t\t\t\t\tswitch(value){\n\t\t\t\t\t\tcase \"no\":\n\t\t\t\t\t\t\tind = 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"date_of_end\":\n\t\t\t\t\t\t\tind = 2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tind = 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tend[ind].checked = true;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tend.value = value;\n\t\t\t}\n\t\t}\n\n\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\n\t\tvar get_rcode = {\n\t\t\tmonth:function(code, dates) {\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\n\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\n\t\t\t\t} else {\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\n\t\t\t\t\t\tdates.start.setDate(1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdates._start = true;\n\t\t\t},\n\t\t\tweek:function(code, dates) {\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\n\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\n\t\t\t\tcode.push(\"\");\n\t\t\t\tcode.push(\"\");\n\t\t\t\tvar t = [];\n\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\n\t\t\t\t//var col = els[\"week_day\"];\n\t\t\t\tvar day = dates.start.getDay();\n\t\t\t\tvar start_exists = false;\n\n\t\t\t\tfor (var i = 0; i < col.length; i++){\n\t\t\t\t\tt.push(col[i]);\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\n\t\t\t\t}\n\t\t\t\tif (!t.length){\n\t\t\t\t\tt.push(day);\n\t\t\t\t\tstart_exists = true;\n\t\t\t\t}\n\t\t\t\tt.sort();\n\n\n\t\t\t\tif (!scheduler.config.repeat_precise){\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\n\t\t\t\t\tdates._start = true;\n\t\t\t\t} else if (!start_exists){\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\n\t\t\t\t\tdates._start = true;\n\t\t\t\t}\n\n\t\t\t\tcode.push(t.join(\",\"));\n\t\t\t},\n\t\t\tday:function(code) {\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\n\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcode.push(\"week\");\n\t\t\t\t\tcode.push(1);\n\t\t\t\t\tcode.push(\"\");\n\t\t\t\t\tcode.push(\"\");\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\n\t\t\t\t\tcode.splice(0, 1);\n\t\t\t\t}\n\t\t\t},\n\t\t\tyear:function(code, dates) {\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\n\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\n\t\t\t\t\tcode.push(\"1\");\n\t\t\t\t\tdates.start.setMonth(0);\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\n\n\t\t\t\t} else {\n\t\t\t\t\tcode.push(\"1\");\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\n\t\t\t\t\tdates.start.setDate(1);\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\n\t\t\t\t}\n\t\t\t\tdates._start = true;\n\t\t\t}\n\t\t};\n\t\tvar set_rcode = {\n\t\t\tweek:function(code, dates) {\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\n\t\t\t\tset_value(els, \"week_count\", code[1]);\n\n\t\t\t\tvar t = code[4].split(\",\");\n\t\t\t\tvar d = {};\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\n\n\t\t\t\tset_value(els, \"week_day\", d);\n\n\t\t\t\t//for (var i = 0; i < col.length; i++)\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\n\t\t\t},\n\t\t\tmonth:function(code, dates) {\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\n\n\t\t\t\tif (code[2] === \"\") {\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\n\t\t\t\t} else {\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\n\t\t\t\t}\n\t\t\t},\n\t\t\tday:function(code, dates) {\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\n\t\t\t\tset_value(els, \"day_type\", \"d\");\n\t\t\t\tset_value(els, \"day_count\", code[1]);\n\t\t\t},\n\t\t\tyear:function(code, dates) {\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\n\n\t\t\t\tif (code[2] === \"\") {\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\n\n\t\t\t\t} else {\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfunction set_repeat_code(code, dates) {\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\n\t\t\tvar data = code.split(\"#\");\n\t\t\tcode = data[0].split(\"_\");\n\t\t\tset_rcode[code[0]](code, dates);\n\n\t\t\tswitch (data[1]) {\n\t\t\t\tcase \"no\":\n\t\t\t\t\tset_end_rule(els, \"no\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"\":\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\n\n\t\t\t\t\tvar end_date = dates.end;\n\t\t\t\t\tif (scheduler.config.include_end_by){\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\n\t\t\t\t\t}\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tset_value(els, \"repeat\", code[0]);\n\t\t\t//e.checked = true;\n\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\n\t\t\t//\tnode.onchange();\n\t\t\t\tnode.dispatchEvent(new Event('change'));\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\n\t\t\t}else{\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\n\t\t\t}\n\t\t}\n\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\n\n\t\tfor (var i = 0; i < top.elements.length; i++) {\n\t\t\tvar el = top.elements[i];\n\t\t\tswitch (el.name) {\n\t\t\t\tcase \"repeat\":\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\n\t\t\t\t\t\tel.$_eventAttached = true;\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\n\t\t\t\t\t} else if(!el.$_eventAttached){\n\t\t\t\t\t\tel.$_eventAttached = true;\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tscheduler._lightbox._rec_init_done = true;\n\t},\n\tset_value:function(node, value, ev) {\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\n\t\tif (!scheduler._lightbox._rec_init_done)\n\t\t\trf._init_set_value(node, value, ev);\n\t\tnode.open = !ev.rec_type;\n\n\t\tnode.blocked = this._is_modified_occurence(ev);\n\n\t\tvar ds = rf._ds;\n\t\tds.start = ev.start_date;\n\t\tds.end = ev._end_date;\n\n\t\trf._toggle_block();\n\n\t\tif (value)\n\t\t\trf._set_repeat_code(value, ds);\n\t},\n\tget_value:function(node, ev) {\n\t\tif (node.open) {\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\n\t\t\tvar actual_dates = {};\n\n\t\t\tvar timeControl = getTimeSection();\n\n\t\t\ttimeControl.getValue(actual_dates);\n\t\t\tds.start = actual_dates.start_date;\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\n\t\t\tif (ds._start) {\n\t\t\t\tev.start_date = new Date(ds.start);\n\t\t\t\tev._start_date = new Date(ds.start);\n\t\t\t\tds._start = false;\n\t\t\t} else\n\t\t\t\tev._start_date = null;\n\n\t\t\tev._end_date = ds.end;\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\n\t\t} else {\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\n\t\t\tev._end_date = ev.end_date;\n\t\t}\n\t\treturn ev.rec_type;\n\t},\n\t_get_button: function(){\n\t\tvar node = getRecurringSection().header;\n\t\treturn node.firstChild.firstChild;\n\t},\n\t_get_form: function(){\n\t\treturn getRecurringSection().node;\n\t},\n\topen:function(){\n\t\tvar block = scheduler.form_blocks.recurring;\n\n\t\tvar cont = block._get_form();\n\t\tif(!cont.open)\n\t\t\tblock._toggle_block();\n\t},\n\tclose: function(){\n\t\tvar block = scheduler.form_blocks.recurring;\n\n\t\tvar cont = block._get_form();\n\n\t\tif(cont.open)\n\t\t\tblock._toggle_block();\n\t},\n\t_toggle_block: function(){\n\t\tvar block = scheduler.form_blocks.recurring;\n\n\t\tvar cont = block._get_form(),\n\t\t\tel = block._get_button();\n\t\tif (!cont.open && !cont.blocked) {\n\t\t\tcont.style.height = \"auto\";//reset to default value\n\t\t\tif(el){\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\n\t\t\t}\n\t\t} else {\n\t\t\tcont.style.height = \"0px\";\n\t\t\tif(el){\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\n\t\t\t}\n\t\t}\n\t\tcont.open = !cont.open;\n\n\t\tscheduler.setLightboxSize();\n\t},\n\tfocus:function(node) {\n\t},\n\tbutton_click:function(node, button, event) {\n\t\tvar block = scheduler.form_blocks.recurring;\n\t\tvar cont = block._get_form();\n\t\tif (!cont.blocked)\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\n\t}\n};\n\nfunction getTimeSection(){\n\tvar timeControl = scheduler.formSection('time');\n\tif(!timeControl){\n\t\ttimeControl = getFirstSectionOfType('time');\n\t}\n\tif(!timeControl){\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\n\t}\n\n\t\n\tif (!timeControl) {\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.\",\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. \",\n\"In the latter case, make sure the control is named \\\"time\\\":\",\n\"\",\n\"scheduler.config.lightbox.sections = [\",\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\n.join(\"\\n\"));\n\t}\n\n\treturn timeControl;\n}\n\nfunction getRecurringSection(){\n\tvar recurringSection = scheduler.formSection('recurring');\n\tif(!recurringSection){\n\t\trecurringSection = getFirstSectionOfType('recurring');\n\t}\n\n\tif (!recurringSection) {\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\n\"\",\n\"scheduler.config.lightbox.sections = [\",\n\"\t{name:\\\"recurring\\\", ... }\",\n\"];\"].join(\"\\n\"));\n\n\t}\n\n\treturn recurringSection;\n}\n\nfunction getFirstSectionOfType(type){\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\n\t\tvar section = scheduler.config.lightbox.sections[i];\n\t\tif(section.type === type){\n\t\t\treturn scheduler.formSection(section.name);\n\t\t}\n\t}\n\treturn null;\n}\n\n//problem may occur if we will have two repeating events in the same moment of time\nscheduler._rec_markers = {};\nscheduler._rec_markers_pull = {};\nscheduler._add_rec_marker = function(ev, time) {\n\tev._pid_time = time;\n\tthis._rec_markers[ev.id] = ev;\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\n};\nscheduler._get_rec_marker = function(time, id) {\n\tvar ch = this._rec_markers_pull[id];\n\tif (ch) return ch[time];\n\treturn null;\n};\nscheduler._get_rec_markers = function(id) {\n\treturn (this._rec_markers_pull[id] || []);\n};\n\nfunction clearMilliseconds(date){\n//\treturn date;\n\treturn new Date(\n\t\tdate.getFullYear(), \n\t\tdate.getMonth(), \n\t\tdate.getDate(), \n\t\tdate.getHours(), \n\t\tdate.getMinutes(),\n\t\tdate.getSeconds(),\n\t\t0\n\t);\n}\n\nscheduler._rec_temp = [];\n(function() {\n\tvar old_add_event = scheduler.addEvent;\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\n\t\tvar ev_id = old_add_event.apply(this, arguments);\n\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\n\t\t\tvar ev = scheduler.getEvent(ev_id);\n\t\t\t\n\t\t\tif(ev.start_date){\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\n\t\t\t}\n\t\t\tif(ev.end_date){\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\n\t\t\t}\n\t\t\tif (this._is_modified_occurence(ev))\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\n\t\t\tif (ev.rec_type)\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\n\t\t}\n\t\treturn ev_id;\n\t};\n})();\n\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\n\tif (this._ignore_call) return;\n\tthis._ignore_call = true;\n\n\tif(scheduler._rec_markers[id]){\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\n\t\tdelete scheduler._rec_markers[id];\n\t}\n\n\tif(scheduler._rec_markers_pull[id]){\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\n\t\tdelete scheduler._rec_markers_pull[id];\n\t}\n\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\n\t\tvar tev = this._rec_temp[i];\n\t\tif (tev.event_pid == id) {\n\t\t\ttev.event_pid = new_id;\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\n\t\t}\n\t}\n\n\tfor(var i in this._rec_markers){\n\t\tvar tev = this._rec_markers[i];\n\t\tif(tev.event_pid == id){\n\t\t\ttev.event_pid = new_id;\n\t\t\ttev._pid_changed = true;\n\t\t}\n\t}\n\n\tvar el = scheduler._rec_markers[new_id];\n\tif(el && el._pid_changed) {\n\t\tdelete el._pid_changed;\n\t\tsetTimeout(function() {\n\t\t\tif(scheduler.$destroyed){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\n\t\t}, 1);\n\t}\n\n\tdelete this._ignore_call;\n});\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\n\tvar ev = this.getEvent(id);\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\n\t\tid = id.split(\"#\");\n\t\tvar nid = this.uid();\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\n\n\t\tvar nev = this._copy_event(ev);\n\t\tnev.id = nid;\n\t\tnev.event_pid = ev.event_pid || id[0];\n\t\tvar timestamp = tid;\n\t\tnev.event_length = timestamp;\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\n\t\tthis.addEvent(nev);\n\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\n\t} else {\n\t\tif (ev.rec_type && this._lightbox_id)\n\t\t\tthis._roll_back_dates(ev);\n\t\tvar sub = this._get_rec_markers(id);\n\t\tfor (var i in sub) {\n\t\t\tif (sub.hasOwnProperty(i)) {\n\t\t\t\tid = sub[i].id;\n\t\t\t\tif (this.getEvent(id))\n\t\t\t\t\tthis.deleteEvent(id, true);\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n});\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\n\t\tif(!scheduler._events[id]){\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\n\t\t\tthis.setEvent(id, ev);\n\t\t}\n\t}\n});\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\n\tif (this._loading) return true;\n\n\tvar ev = this.getEvent(id);\n\n\tif (this._is_virtual_event(id)) {\n\t\tvar id = id.split(\"#\");\n\t\tvar nid = this.uid();\n\t\tthis._not_render = true;\n\n\t\tvar nev = this._copy_event(event);\n\t\tnev.id = nid;\n\t\tnev.event_pid = id[0];\n\t\tvar timestamp = id[1];\n\t\tnev.event_length = timestamp;\n\t\tnev.rec_type = nev.rec_pattern = \"\";\n\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\n\t\tthis.addEvent(nev);\n\n\t\tthis._not_render = false;\n\n\t} else {\n\t\tif(ev.start_date){\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\n\t\t}\n\t\tif(ev.end_date){\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\n\t\t}\n\n\t\tif (ev.rec_type && this._lightbox_id){\n\t\t\tthis._roll_back_dates(ev);\n\t\t}\n\t\tvar sub = this._get_rec_markers(id);\n\t\tfor (var i in sub) {\n\t\t\tif (sub.hasOwnProperty(i)) {\n\t\t\t\tdelete this._rec_markers[sub[i].id];\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\n\t\t\t}\n\t\t}\n\t\tdelete this._rec_markers_pull[id];\n\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\n\t\tvar isEventFound = false;\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\n\t\t\t\tisEventFound = true;\n\t\t}\n\t\tif (!isEventFound)\n\t\t\tthis._select_id = null;\n\t}\n\treturn true;\n});\nscheduler.attachEvent(\"onEventAdded\", function(id) {\n\tif (!this._loading) {\n\t\tvar ev = this.getEvent(id);\n\t\tif (ev.rec_type && !ev.event_length){\n\t\t\tthis._roll_back_dates(ev);\n\t\t}\n\t}\n\treturn true;\n});\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\n\tvar ev = this.getEvent(id);\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\n\t\tthis._select_id = null;\n\treturn true;\n});\nscheduler.attachEvent(\"onEventCreated\", function(id) {\n\tvar ev = this.getEvent(id);\n\tif (!ev.rec_type)\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\n\treturn true;\n});\nscheduler.attachEvent(\"onEventCancel\", function(id) {\n\tvar ev = this.getEvent(id);\n\tif (ev.rec_type) {\n\t\tthis._roll_back_dates(ev);\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\n\t\tthis.render_view_data();\n\t}\n});\nscheduler._roll_back_dates = function(ev) {\n\tif(ev.start_date){\n\t\tev.start_date = clearMilliseconds(ev.start_date);\n\t}\n\tif(ev.end_date){\n\t\tev.end_date = clearMilliseconds(ev.end_date);\n\t}\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\n\tev.end_date = ev._end_date;\n\tif (ev._start_date) {\n\t\tev.start_date.setMonth(0);\n\t\tev.start_date.setDate(ev._start_date.getDate());\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\n\n\t}\n};\n\nscheduler._is_virtual_event = function(id){\n\treturn id.toString().indexOf(\"#\") != -1;\n};\nscheduler._is_modified_occurence = function(ev){\n\treturn (ev.event_pid && ev.event_pid != \"0\");\n};\n\nscheduler.showLightbox_rec = scheduler.showLightbox;\nscheduler.showLightbox = function(id) {\n\tvar locale = this.locale;\n\tvar c = scheduler.config.lightbox_recurring;\n\tvar ev = this.getEvent(id);\n\tvar pid = ev.event_pid;\n\tvar isVirtual = this._is_virtual_event(id);\n\tif (isVirtual)\n\t\tpid = id.split(\"#\")[0];\n\n\t// show series\n\tvar showSeries = function(id) {\n\t\tvar event = scheduler.getEvent(id);\n\t\tevent._end_date = event.end_date;\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\n\t\treturn scheduler.showLightbox_rec(id); // editing series\n\t};\n\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\n\t\t// direct API call on series id\n\t\treturn showSeries(id);\n\t}\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\n\t\t// editing instance or non recurring event\n\t\treturn this.showLightbox_rec(id);\n\t}\n\tif (c == 'ask') {\n\t\tvar that = this;\n\t\tscheduler.modalbox({\n\t\t\ttext: locale.labels.confirm_recurring,\n\t\t\ttitle: locale.labels.title_confirm_recurring,\n\t\t\twidth: \"500px\",\n\t\t\tposition: \"middle\",\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\n\t\t\tcallback: function(index) {\n\t\t\t\tswitch(+index) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn showSeries(pid);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tshowSeries(pid);\n\t}\n};\n\n\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\nscheduler.get_visible_events = function(only_timed) {\n\tfor (var i = 0; i < this._rec_temp.length; i++)\n\t\tdelete this._events[this._rec_temp[i].id];\n\tthis._rec_temp = [];\n\n\tvar stack = this.get_visible_events_rec(only_timed);\n\tvar out = [];\n\tfor (var i = 0; i < stack.length; i++) {\n\t\tif (stack[i].rec_type) {\n\t\t\t//deleted element of series\n\t\t\tif (stack[i].rec_pattern != \"none\")\n\t\t\t\tthis.repeat_date(stack[i], out);\n\t\t}\n\t\telse out.push(stack[i]);\n\t}\n\treturn out;\n};\n\n\n(function() {\n\tvar old = scheduler.isOneDayEvent;\n\tscheduler.isOneDayEvent = function(ev) {\n\t\tif (ev.rec_type) return true;\n\t\treturn old.call(this, ev);\n\t};\n\tvar old_update_event = scheduler.updateEvent;\n\tscheduler.updateEvent = function(id) {\n\t\tvar ev = scheduler.getEvent(id);\n\t\tif(ev && ev.rec_type){\n\t\t\t//rec_type can be changed without the lightbox,\n\t\t\t// make sure rec_pattern updated as well\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\n\t\t}\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\n\t\t\tscheduler.update_view();\n\t\t} else {\n\t\t\told_update_event.call(this, id);\n\t\t}\n\t};\n})();\n\nscheduler.transponse_size = {\n\tday:1, week:7, month:1, year:12\n};\nscheduler.date.day_week = function(sd, day, week) {\n\tsd.setDate(1);\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\n\tweek = (week - 1) * 7;\n\tvar cday = sd.getDay();\n\tvar nday = day * 1 + week - cday + 1;\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\n\t\treturn false;\n\t}\n\treturn true;\n};\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (list[i] > cday)\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\n\t}\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\n};\nscheduler.transpose_type = function(type) {\n\tvar transposeRecurring = \"transpose_\" + type;\n\tif (!this.date[transposeRecurring]) {\n\t\tvar recurringParts = type.split(\"_\");\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\n\t\tvar addRecurring = \"add_\" + type;\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\n\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\n\t\t\tvar weekDays = null;\n\t\t\tif (recurringParts[4]) {\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\n\t\t\t\tif (scheduler.config.start_on_monday) {\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\n\t\t\t\t\tweekDays.sort();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\n\t\t\t\tif (delta > 0)\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\n\t\t\t\tif (weekDays)\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\n\n\t\t\t\treturn nd;\n\t\t\t};\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\n\t\t\t\tvar nd = new Date(sd.valueOf());\n\t\t\t\tif (weekDays) {\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\n\t\t\t\t} else\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\n\n\t\t\t\treturn nd;\n\t\t\t};\n\t\t}\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\n\n\t\t\t\tif (delta >= 0){\n\t\t\t\t\tnd.setDate(1);\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\n\t\t\t\t}\n\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\n\t\t\t\t//if (str[3]){\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\n\t\t\t\t//}\n\t\t\t};\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\n\t\t\t\tif(!currentCount){\n\t\t\t\t\tcurrentCount = 1;\n\t\t\t\t}else{\n\t\t\t\t\tcurrentCount++;\n\t\t\t\t}\n\t\t\t\tvar maxCount = 12;\n\t\t\t\tif(currentCount > maxCount){\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tvar nd = new Date(sd.valueOf());\n\t\t\t\tnd.setDate(1);\n\n\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\n\t\t\t\tvar origMonth = nd.getMonth();\n\t\t\t\tvar origYear = nd.getFullYear();\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\n\t\t\t\tif (recurringParts[3]){\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\n\t\t\t\t}\n\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\n\t\t\t\t\t// no such day in a month\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\n\t\t\t\t\t\t// return either last day of the month\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// or go to the next instance\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\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\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn nd;\n\t\t\t};\n\t\t}\n\t}\n};\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\n\n\tfrom = from || this._min_date;\n\tto = to || this._max_date;\n\tvar max = maxCount || -1;\n\tvar td = new Date(ev.start_date.valueOf());\n\n\tvar startHour = td.getHours();\n\n\tvar visibleCount = 0;\n\n\tif (!ev.rec_pattern && ev.rec_type)\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\n\n\tthis.transpose_type(ev.rec_pattern);\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\n\twhile ( td && (\n\t\ttd < ev.start_date ||\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\n\n\t}\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\n\t\ttd.setHours(startHour);\n\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();\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\n\t\tif (!ch) { // unmodified element of series\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\n\t\t\tvar copy = this._copy_event(ev);\n\t\t\t//copy._timed = ev._timed;\n\t\t\tcopy.text = ev.text;\n\t\t\tcopy.start_date = td;\n\t\t\tcopy.event_pid = ev.id;\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\n\t\t\tcopy.end_date = ted;\n\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\n\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\n\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\n\t\t\tstack.push(copy);\n\n\t\t\tif (!non_render) {\n\t\t\t\tthis._events[copy.id] = copy;\n\t\t\t\tthis._rec_temp.push(copy);\n\t\t\t}\n\n\t\t\tvisibleCount++;\n\n\t\t} else\n\t\tif (non_render){\n\t\t\tif(ch.rec_type != \"none\"){\n\t\t\t\tvisibleCount++;\n\t\t\t}\n\t\t\tstack.push(ch);\n\t\t}\n\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\n\t///\t\talert(\"detect add\")\n\t//\t}\n\t}\n};\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\n\tif (shift) {\n\t\tif (shift > 0) {\n\t\t\t// e.g. 24h -> 23h\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\n\t\t}\n\t\telse {\n\t\t\t// e.g. 24h -> 25h\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\n\t\t}\n\t}\n\treturn new Date(default_date.valueOf());\n};\nscheduler.getRecDates = function(id, max) {\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\n\tvar recurrings = [];\n\tmax = max || 100;\n\n\tif (!ev.rec_type) {\n\t\treturn [\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\n\t\t];\n\t}\n\tif (ev.rec_type == \"none\") {\n\t\treturn [];\n\t}\n\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\n\n\tvar result = [];\n\tfor(var i = 0; i < recurrings.length; i++){\n\t\tif(recurrings[i].rec_type != \"none\"){\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\n\t\t}\n\t}\n\n\treturn result;\n};\nscheduler.getEvents = function(from, to) {\n\tvar result = [];\n\tfor (var a in this._events) {\n\t\tvar ev = this._events[a];\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\n\t\t\tif (ev.rec_pattern) {\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\n\t\t\t\tvar sev = [];\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\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]) {\n\t\t\t\t\t\tresult.push(sev[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\n\t\t\t\tresult.push(ev);\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n};\n\nscheduler.config.repeat_date = \"%m.%d.%Y\";\nscheduler.config.lightbox.sections = [\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\n];\n\n\n//drop secondary attributes\nscheduler._copy_dummy = function(ev) {\n\tvar start_date = new Date(this.start_date);\n\tvar end_date = new Date(this.end_date);\n\tthis.start_date = start_date;\n\tthis.end_date = end_date;\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\n};\n\nscheduler.config.include_end_by = false;\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\n\nscheduler.attachEvent(\"onClearAll\", function(){\n\tscheduler._rec_markers = {}; //clear recurring events data\n\tscheduler._rec_markers_pull = {};\n\tscheduler._rec_temp = [];\n});\n\n}","import getSerializator from '../core/common/get_serializable_events';\nexport default function(scheduler){\n\n\t\nconst getSerializableData = getSerializator(scheduler);\n\n//redefine this method, if you want to provide a custom set of attributes for serialization\nscheduler.data_attributes=function(){\n\tvar attrs = [];\n\tvar format = scheduler._helpers.formatDate;\n\tvar all_events = getSerializableData();\n\tfor (var a in all_events){\n\t\tvar ev = all_events[a];\n\t\tfor (var name in ev)\n\t\t\tif (name.substr(0,1) !=\"_\")\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\n\t\tbreak;\n\t}\n\treturn attrs;\n};\n\nscheduler.toXML = function(header){\n\tvar xml = [];\n\tvar attrs = this.data_attributes();\n\tvar all_events = getSerializableData();\n\tfor (var a in all_events){\n\t\tvar ev = all_events[a];\n\n\t\txml.push(\"\");\n\t\tfor (var i=0; i < attrs.length; i++)\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\n\n\t\txml.push(\"\");\n\t}\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\n};\n\nscheduler._serialize_json_value = function(value){\n\tif(value === null || typeof value === \"boolean\"){\n\t\tvalue = \"\" + value;\n\t}else{\n\t\tif(!value && value !== 0){\n\t\t\tvalue = \"\";\n\t\t}\n\t\tvalue = '\"' + value.toString().\n\t\t\treplace(/\\n/g,\"\").\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\n\t}\n\treturn value;\n};\n\n\n\nscheduler.toJSON = function(){\n\treturn JSON.stringify(this.serialize());\n};\n\n\nscheduler.toICal = function(header){\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\n\tvar end = \"END:VCALENDAR\";\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\n\n\tvar ical = [];\n\tvar all_events = getSerializableData();\n\tfor (var a in all_events){\n\t\tvar ev = all_events[a];\n\n\n\t\tical.push(\"BEGIN:VEVENT\");\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\n\t\telse\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\n\t\telse\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\n\t\tical.push(\"SUMMARY:\"+ev.text);\n\t\tical.push(\"END:VEVENT\");\n\t}\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\n};\n\n}","\nimport autoscroll from \"./timeline/autoscroll\";\nimport scrollHelperFactory from \"./timeline/rtl_scroll_helper\";\nimport smartRender from \"./timeline/timeline_smart_render\";\nimport eventable from \"../utils/eventable\";\n\nexport default function(scheduler){\n\n// define scrollbar width once for correct height of label_wrapper\nfunction getScrollbarwidth() {\n\tvar inner = document.createElement('p');\n\tinner.style.width = \"100%\";\n\tinner.style.height = \"200px\";\n\n\tvar outer = document.createElement('div');\n\touter.style.position = \"absolute\";\n\touter.style.top = \"0px\";\n\touter.style.left = \"0px\";\n\touter.style.visibility = \"hidden\";\n\touter.style.width = \"200px\";\n\touter.style.height = \"150px\";\n\touter.style.overflow = \"hidden\";\n\touter.appendChild(inner);\n\n\tdocument.body.appendChild(outer);\n\tvar w1 = inner.offsetWidth;\n\touter.style.overflow = 'scroll';\n\tvar w2 = inner.offsetWidth;\n\n\tif (w1 == w2) {\n\t\tw2 = outer.clientWidth;\n\t}\n\n\tdocument.body.removeChild(outer);\n\n\treturn (w1 - w2);\n}\n\n\nscheduler.ext.timeline = {\n\trenderCells: function(columns, contentTemplate, baseClass){\n\t\tif(!columns || !columns.length){\n\t\t\treturn;\n\t\t}\n\t\tconst html = [];\n\t\tfor(let i = 0; i < columns.length; i++){\n\t\t\tconst column = columns[i];\n\t\t\tlet style = \"\";\n\t\t\tif(column.$width){\n\t\t\t\tstyle = \"width:\" + column.$width + \"px;\";\n\t\t\t}\n\n\t\t\tlet className = baseClass;\n\t\t\tif(column.css){\n\t\t\t\tclassName += \" \" + column.css;\n\t\t\t}\n\n\t\t\tif(i === 0) {\n\t\t\t\tclassName += \" \" + baseClass + \"_first\";\n\t\t\t}\n\t\t\tif (i === columns.length - 1){\n\t\t\t\tclassName += \" \" + baseClass + \"_last\";\n\t\t\t}\n\n\t\t\tconst content = contentTemplate(column) || \"\";\n\n\t\t\thtml.push(`
${content}
`);\n\t\t}\n\t\t\n\t\treturn html.join(\"\");\n\t},\n\trenderHeading: function renderHeading(){\n\t\treturn this.renderCells(\n\t\t\tthis.columns,\n\t\t\tfunction (column) {\n\t\t\t\treturn column.label;\n\t\t\t},\n\t\t\t\"dhx_timeline_label_column dhx_timeline_label_column_header\"\n\t\t);\n\t},\n\trenderColumns: function renderColumns(section){\n\t\treturn this.renderCells(\n\t\t\tthis.columns,\n\t\t\tfunction (column) {\n\t\t\t\tif(column.template){\n\t\t\t\t\treturn column.template.call(self, section) || \"\";\n\t\t\t\t}\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\t\"dhx_timeline_label_column\"\n\t\t);\n\t},\n\n\tscrollTo: function(scrollPosition){\n\t\tif(!scrollPosition){\n\t\t\treturn;\n\t\t}\n\n\t\tvar scrollDate;\n\t\tif(scrollPosition.date){\n\t\t\tscrollDate = scrollPosition.date;\n\t\t}else if(scrollPosition.left){\n\t\t\tscrollDate = scrollPosition.left;\n\t\t}else{\n\t\t\tscrollDate = scrollPosition;\n\t\t}\n\n\t\tvar scrollTop = -1;\n\t\tif(scrollPosition.section){\n\t\t\tscrollTop = this.getSectionTop(scrollPosition.section);\n\t\t}else if(scrollPosition.top){\n\t\t\tscrollTop = scrollPosition.top;\n\t\t}\n\n\t\tvar posLeft;\n\t\tif(typeof scrollDate == \"number\"){\n\t\t\tposLeft = scrollDate;\n\t\t}else{\n\t\t\tposLeft = this.posFromDate(scrollDate);\n\t\t}\n\t\tif (scheduler.config.rtl){\n\t\t\tvar labelWrapperHeight = +scheduler.$container.querySelector(\".dhx_timeline_label_wrapper\").style.height.replace(\"px\", \"\");\n\t\t\tvar scalesHeight = this._section_height[this.y_unit.length] + this._label_rows[this._label_rows.length - 1].top;\n\n\t\t\tif (this.scrollHelper.getMode() == this.scrollHelper.modes.minMax && (scalesHeight > labelWrapperHeight || this.render == \"tree\")) {\n\t\t\t\tposLeft -= getScrollbarwidth();\n\t\t\t}\n\t\t}\n\n\t\tvar dataWrapperDiv = scheduler.$container.querySelector('.dhx_timeline_data_wrapper');\n\t\tif (!this.scrollable){\n\t\t\tdataWrapperDiv = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\t}\n\n\t\tif(this.scrollable){\n\t\t\tthis.scrollHelper.setScrollValue(dataWrapperDiv, posLeft);\n\t\t}\n\n\t\tif(scrollTop > 0){\n\t\t\tdataWrapperDiv.scrollTop = scrollTop;\n\t\t}\n\t},\n\n\tgetScrollPosition: function () {\n\t\treturn {\n\t\t\tleft: this._x_scroll || 0,\n\t\t\ttop: this._y_scroll || 0\n\t\t};\n\t},\n\n\tposFromDate: function(date){\n\t\treturn scheduler._timeline_getX({start_date: date}, false, this) - 1;//getX adds 1px for event positioning\n\t}, \n\t\n\tdateFromPos: function (x) {\n\t\treturn scheduler._timeline_drag_date(this, x);\n\t},\n\n\tsectionFromPos: function(top) {\n\t\tvar pos = {y: top};\n\t\tscheduler._resolve_timeline_section(this, pos);\n\t\treturn pos.section;\n\t},\n\n\tresolvePosition: function(pos){\n\t\tvar result = {\n\t\t\tdate: null,\n\t\t\tsection: null\n\t\t};\n\t\tif(pos.left) {\n\t\t\tresult.date = this.dateFromPos(pos.left);\n\t\t}\n\t\tif(pos.top) {\n\t\t\tresult.section = this.sectionFromPos(pos.top);\n\t\t}\n\t\treturn result;\n\t},\n\n\tgetSectionHeight: function(sectionId){\n\t\treturn this._section_height[sectionId];\n\t},\n\n\tgetSectionTop: function(sectionId){\n\t\treturn this._rowStats[sectionId].top;\n\t},\n\n\tgetEventTop: function(event){\n\t\tvar eventHeight = this.getEventHeight(event);\n\t\tvar sorder = event._sorder || 0;\n\t\tvar y = 1+sorder*(eventHeight - 3)+(sorder?(sorder*2):0); // original top + number_of_events * event_dy + default event top/bottom borders\n\t\tif (scheduler.config.cascade_event_display) {\n\t\t\ty =1+sorder*scheduler.config.cascade_event_margin+(sorder?(sorder*2):0);\n\t\t}\n\t\treturn y;\n\t},\n\n\tgetEventHeight: function(event){\n\t\tvar timeline = this;\n\t\tvar section = event[timeline.y_property]; // section id\n\t\tvar eventHeight = timeline.event_dy;\n\t\tconst sectionIndex = timeline.order[section];\n\t\tif (timeline.event_dy == \"full\") {\n\t\t\tif (timeline.section_autoheight) {\n\t\t\t\t// GS-1509 need to calculate row stats to get sections height\n\t\t\t\tscheduler._timeline_get_cur_row_stats(this, sectionIndex);\n\t\t\t\teventHeight = timeline.getSectionHeight(section) - 6;\n\t\t\t} else {\n\t\t\t\teventHeight = timeline.dy - 3;\n\t\t\t}\n\t\t}\n\t\n\t\tif (timeline.resize_events) {\n\t\t\teventHeight = Math.max(Math.floor(eventHeight / (event._count||1)), timeline.event_min_dy);\n\t\t}\n\t\treturn eventHeight;\n\t}\n};\n\n\nscheduler._temp_matrix_scope = function(){\n//---#include ext/timeline/rtl_scroll_helper.js\n\nscheduler.matrix = {};\nscheduler._merge=function(a,b){\n\tfor (var c in b)\n\t\tif (typeof a[c] == \"undefined\")\n\t\t\ta[c]=b[c];\n};\nscheduler.createTimelineView=function(obj){\n\t/*scheduler._skin_init();*/\n\tscheduler._merge(obj,{\n\t\t// scrollable: true,\n\t\tscrollHelper: scrollHelperFactory(),\n\t\tcolumn_width: 100,\n\t\tautoscroll: {\n\t\t\trange_x: 200,// px to edge\n\t\t\trange_y: 100,\n\t\t\tspeed_x: 20,// speed\n\t\t\tspeed_y: 10\n\t\t},\n\n\t\t_is_new_view: true,\n\t\t_section_autowidth: true,\n\t\t_x_scroll: 0,\n\t\t_y_scroll: 0,\n\t\t_h_cols: {}, // [cellId: {div: htmlElem, left: number}, ... {}]\n\t\t_label_rows: [], // [{div: 'html', top: number}, {}, ...]\n\n\t\tsection_autoheight: true,\n\t\tlayout: \"timeline\",\n\t\tname:\"matrix\",\n\t\tx:\"time\",\n\t\ty:\"time\",\n\t\tx_step:1,\n\t\tx_unit:\"hour\",\n\t\ty_unit:\"day\",\n\t\ty_step:1,\n\t\tx_start:0,\n\t\tx_size:24,\n\t\ty_start:0,\n\t\ty_size:\t7,\n\t\tx_date: scheduler.config.hour_date,\n\t\trender:\"cell\",\n\t\tdx:200,\n\t\tdy:50,\n\t\tevent_dy: scheduler.xy.bar_height,\n\t\tevent_min_dy: scheduler.xy.bar_height,\n\t\tresize_events: true,\n\t\tfit_events: true,\n\t\tfit_events_offset: 0,\n\t\tshow_unassigned: false,\n\t\tsecond_scale: false,\n\t\tround_position: false,\n\t\t_logic: function(render_name, y_unit, timeline) {\n\t\t\tvar res = {};\n\t\t\tif(scheduler.checkEvent(\"onBeforeSectionRender\")) {\n\t\t\t\tres = scheduler.callEvent(\"onBeforeSectionRender\", [render_name, y_unit, timeline]);\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t});\n\tobj._original_x_start = obj.x_start;\n\n\t//first and last hours are applied only to day based timeline\n\tif (obj.x_unit != \"day\") obj.first_hour = obj.last_hour = 0;\n\t//correction for first and last hour\n\tobj._start_correction = obj.first_hour?obj.first_hour*60*60*1000:0;\n\tobj._end_correction = obj.last_hour?(24-obj.last_hour)*60*60*1000:0;\n\n\tif (scheduler.checkEvent(\"onTimelineCreated\")) {\n\t\tscheduler.callEvent(\"onTimelineCreated\", [obj]);\n\t}\n\n\teventable(obj);\n\tscheduler.attachEvent(\"onDestroy\", function() {\n\t\tobj.detachAllEvents();\n\t});\n\n\tvar old = scheduler.render_data;\n\tscheduler.render_data = function(evs, mode) {\n\t\tif (this._mode == obj.name) {\n\t\t\t//repaint single event, precision is not necessary\n\t\t\tif (mode && (!obj.show_unassigned || scheduler.getState().drag_id) && obj.render != \"cell\") {\n\t\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\t\tthis.clear_event(evs[i]);\n\t\t\t\t\tthis.render_timeline_event.call(this.matrix[this._mode], evs[i], true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tscheduler._renderMatrix.call(obj, true, true);\n\t\t\t}\n\t\t} else\n\t\t\treturn old.apply(this, arguments);\n\t};\n\n\tscheduler.matrix[obj.name]=obj;\n\tscheduler.templates[obj.name+\"_cell_value\"] = function(ar){ return ar?ar.length:\"\"; };\n\tscheduler.templates[obj.name+\"_cell_class\"] = function(arr){ return \"\"; };\n\tscheduler.templates[obj.name+\"_scalex_class\"] = function(date){ return \"\"; };\n\tscheduler.templates[obj.name+\"_second_scalex_class\"] = function(date){ return \"\"; };\n\tscheduler.templates[obj.name+\"_row_class\"] = function(section, timeline){\n\t\tif(timeline.folder_events_available && section.children){\n\t\t\t// 'folder' class was added to parent nodes of tree timelines in v5.0\n\t\t\t// pre 5.0 timelines didn't use this class if `folder_events_available` was enabled.\n\t\t\t// Move the classname into template in order not to change the behavior again and give the ability to remove this class by redefining the template\n\t\t\treturn \"folder\";\n\t\t}\n\t\treturn \"\";\n\t};\n\n\tscheduler.templates[obj.name+\"_scaley_class\"] = function(section_id, section_label, section_options){ return \"\"; };\n\t//scheduler.templates[obj.name+\"_scale_label\"] = function(section_id, section_label, section_options){ return section_label; };\n\n\tvar defaultColumnWidth = 20;\n\tfunction configureColumns(columns, timeline){\n\t\tvar totalWidth = timeline.dx;\n\n\t\tvar allocatedWidth = 0;\n\t\tvar fixedSizeColumns = [];\n\t\tvar flexibleColumns = [];\n\n\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.width){\n\t\t\t\tallocatedWidth += column.width;\n\t\t\t\tcolumn.$width = column.width;\n\t\t\t\tfixedSizeColumns.push(column);\n\t\t\t}else{\n\t\t\t\tflexibleColumns.push(column);\n\t\t\t}\n\t\t});\n\n\t\tvar modifyContainerWidth = false;\n\n\t\tvar freeWidth = totalWidth - allocatedWidth;\n\n\t\tif(freeWidth < 0 || flexibleColumns.length === 0){\n\t\t\tmodifyContainerWidth = true;\n\t\t}\n\t\tvar columnsLeft = flexibleColumns.length;\n\t\tflexibleColumns.forEach(function(column){\n\t\t\tcolumn.$width = Math.max(Math.floor(freeWidth / columnsLeft), defaultColumnWidth);\n\t\t\tfreeWidth -= column.$width;\n\t\t\tallocatedWidth += column.$width;\n\t\t\tcolumnsLeft --;\n\t\t});\n\n\t\tif(modifyContainerWidth){\n\t\t\ttimeline.dx = allocatedWidth;\n\t\t}\n\t}\n\n\tobj.attachEvent(\"onBeforeRender\", function(){\n\t\tif(obj.columns && obj.columns.length){\n\t\t\tconfigureColumns(obj.columns, obj);\n\t\t}\n\t\treturn true;\n\t});\n\t\n\n\n\tobj.renderColumns = obj.renderColumns || scheduler.ext.timeline.renderColumns.bind(obj);\n\tobj.renderHeading = obj.renderHeading || scheduler.ext.timeline.renderHeading.bind(obj);\n\tobj.renderCells = obj.renderCells || scheduler.ext.timeline.renderCells.bind(obj);\n\n\tscheduler.templates[obj.name+\"_scale_label\"] = function(section_id, section_label, section_options){ \n\t\tif(obj.columns && obj.columns.length){\n\t\t\treturn obj.renderColumns(section_options);\n\t\t}else{\n\t\t\treturn section_label;\t\n\t\t}\n\t};\n\n\tscheduler.templates[obj.name + \"_scale_header\"] = function(timeline){\n\t\tif(obj.columns){\n\t\t\treturn timeline.renderHeading(timeline);\n\t\t}else{\n\t\t\treturn scheduler.locale.labels[obj.name + \"_scale_header\"] || \"\";\n\t\t}\n\t};\n\n\tscheduler.templates[obj.name+\"_tooltip\"] = function(a,b,e){ return e.text; };\n\tscheduler.templates[obj.name+\"_date\"] = function(datea, dateb){\n\t\tif ( (datea.getDay()==dateb.getDay() && dateb-datea < (24*60*60*1000)) ||\n\t\t\t+datea == +scheduler.date.date_part(new Date(dateb)) ||\n\t\t\t(+scheduler.date.add(datea, 1, \"day\") == +dateb && dateb.getHours() === 0 && dateb.getMinutes() === 0) )\n\t\t\treturn scheduler.templates.day_date(datea);\n\t\tif ( (datea.getDay() != dateb.getDay() && dateb-datea < (24*60*60*1000)) ) {\n\t\t\treturn scheduler.templates.day_date(datea)+\" – \"+scheduler.templates.day_date(dateb);\n\t\t}\n\t\treturn scheduler.templates.week_date(datea, dateb);\n\t};\n\n\tlet defautDateFormat = obj.x_date || scheduler.config.hour_date;\n\tlet defaultFormatter = null;\n\tscheduler.templates[obj.name + \"_scale_date\"] = function(date) {\n\t\tif (defautDateFormat !== (obj.x_date || scheduler.config.hour_date) || !defaultFormatter) {\n\t\t\tdefautDateFormat = obj.x_date || scheduler.config.hour_date;\n\t\t\tdefaultFormatter = scheduler.date.date_to_str(defautDateFormat );\n\t\t}\n\t\treturn defaultFormatter(date);\n\t};\n\tlet SecondScaleDateFormat = obj.second_scale && obj.second_scale.x_date ? obj.second_scale.x_date : scheduler.config.hour_date;\n\tlet defautSecondScaleFormatter = null;\n\tscheduler.templates[obj.name + \"_second_scale_date\"] = function(date) {\n\t\tif (SecondScaleDateFormat !== (obj.second_scale.x_date || scheduler.config.hour_date) || !defautSecondScaleFormatter) {\n\t\t\tSecondScaleDateFormat = (obj.second_scale && obj.second_scale.x_date)?obj.second_scale.x_date:scheduler.config.hour_date;\n\t\t\tdefautSecondScaleFormatter = scheduler.date.date_to_str(SecondScaleDateFormat );\n\t\t}\n\t\treturn defautSecondScaleFormatter(date);\n\t};\n\n\tscheduler.date[\"add_\" + obj.name + \"_private\"]= function(date, step){\n\t\tvar shift = step;\n\t\tvar unit = obj.x_unit;\n\n\t\tif(obj.x_unit == \"minute\" || obj.x_unit == \"hour\"){\n\n\t\t\tvar scroll_step = shift;\n\t\t\tif(obj.x_unit == \"hour\")\n\t\t\t\tscroll_step *= 60;\n\t\t\t// if scroll days\n\t\t\tif(!(scroll_step % (24 * 60))){\n\t\t\t\t// use timezone-safer day operations instead of hour and minutes which are affected by daylight saving time shifts\n\t\t\t\tshift = scroll_step / (24 * 60);\n\t\t\t\tunit = 'day';\n\t\t\t}\n\t\t}\n\n\t\treturn scheduler.date.add(date, shift, unit);\n\t};\n\n\tscheduler.date[\"add_\" + obj.name] = function(date, step, c) {\n\t\tvar resulting_date = scheduler.date[\"add_\" + obj.name + \"_private\"](date, (obj.x_length || obj.x_size) * obj.x_step * step);\n\n\t\tif (obj.x_unit == \"minute\" || obj.x_unit == \"hour\") {\n\t\t\tvar size = (obj.x_length || obj.x_size);\n\t\t\tvar converted_step = (obj.x_unit == \"hour\") ? obj.x_step*60 : obj.x_step;\n\t\t\tif((converted_step * size) % (24 * 60)){\n\t\t\t\t//if scroll hours within the day\n\t\t\t\tif ( +scheduler.date.date_part(new Date(date)) == +scheduler.date.date_part(new Date(resulting_date )) ) {\n\t\t\t\t\tobj.x_start += step*size;\n\t\t\t\t} else {\n\t\t\t\t\t// total steps starting from 0\n\t\t\t\t\tvar total_steps = ( (24 * 60) / (size * converted_step) ) - 1;\n\t\t\t\t\tvar steps_offset = Math.round(total_steps * size);\n\n\t\t\t\t\tif (step > 0) {\n\t\t\t\t\t\tobj.x_start = obj.x_start - steps_offset;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj.x_start = steps_offset + obj.x_start;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn resulting_date;\n\t};\n\tscheduler.date[obj.name+\"_start\"] = function(date) {\n\t\tvar func = scheduler.date[obj.x_unit+\"_start\"] || scheduler.date.day_start;\n\t\tvar start_date = func.call(scheduler.date, date);\n\t\tvar start_offset = start_date.getTimezoneOffset();\n\t\tstart_date = scheduler.date.add(start_date, obj.x_step*obj.x_start, obj.x_unit);\n\t\tvar new_offset = start_date.getTimezoneOffset();\n\t\tif(start_offset != new_offset) {\n\t\t\tstart_date.setTime(start_date.getTime() + (new_offset - start_offset) * 60000);\n\t\t}\n\n\t\treturn start_date;\n\t};\n\n\tobj._smartRenderingEnabled = function(){\n\t\tvar viewPort = null;\n\t\tif(this.scrollable || this.smart_rendering){\n\t\t\tviewPort = scheduler._timeline_smart_render.getViewPort(this.scrollHelper, this._sch_height);\n\t\t}\n\t\n\t\tvar scrollableDataContainer = !!viewPort;\n\t\n\t\tvar smartRender;\n\t\tif(!this.scrollable){\n\t\t\t// smart rendering is disabled by default in non-scrollable timelines\n\t\t\tsmartRender = !!this.smart_rendering && scrollableDataContainer;\n\t\t}else{\n\t\t\t// and enabled by default in scrollable timelines\n\t\t\tif(this.smart_rendering === false){\n\t\t\t\tsmartRender = false;\n\t\t\t}else{\n\t\t\t\tsmartRender = !!scrollableDataContainer;\n\t\t\t}\n\t\t}\n\n\t\treturn !!smartRender;\n\t};\n\n\tobj.scrollTo = obj.scrollTo || scheduler.ext.timeline.scrollTo.bind(obj);\n\n\tobj.getScrollPosition = obj.getScrollPosition || scheduler.ext.timeline.getScrollPosition.bind(obj);\n\n\tobj.posFromDate = obj.posFromDate || scheduler.ext.timeline.posFromDate.bind(obj);\n\t\n\tobj.dateFromPos = obj.dateFromPos || scheduler.ext.timeline.dateFromPos.bind(obj);\n\n\tobj.sectionFromPos = obj.sectionFromPos || scheduler.ext.timeline.sectionFromPos.bind(obj);\n\n\tobj.resolvePosition = obj.resolvePosition || scheduler.ext.timeline.resolvePosition.bind(obj);\n\n\tobj.getSectionHeight = obj.getSectionHeight || scheduler.ext.timeline.getSectionHeight.bind(obj);\n\n\tobj.getSectionTop = obj.getSectionTop || scheduler.ext.timeline.getSectionTop.bind(obj);\n\n\tobj.getEventTop = obj.getEventTop || scheduler.ext.timeline.getEventTop.bind(obj);\n\n\tobj.getEventHeight = obj.getEventHeight || scheduler.ext.timeline.getEventHeight.bind(obj);\n\n\tobj.selectEvents = scheduler.bind(function (config) {\n\t\tvar sectionId = config.section,\n\t\t\tdate = config.date,\n\t\t\tselectSubsections = config.selectNested;\n\n\t\tif (date) {\n\t\t\treturn selectByDate(sectionId, date, selectSubsections, this);\n\t\t} else if(sectionId) {\n\t\t\treturn selectBySection(sectionId, selectSubsections, this);\n\t\t}\n\t}, obj);\n\n\tfunction selectBySection(sectionId, selectSubsections, timeline) {\n\t\tvar evs = scheduler._timeline_smart_render.getPreparedEvents(timeline);\n\t\tvar sectionIndex = timeline.order[sectionId];\n\t\tvar section = timeline.y_unit[sectionIndex];\n\t\tif (!section) {\n\t\t\treturn [];\n\t\t}\n\t\tvar subsections = [sectionId];\n\n\t\tif (selectSubsections) {\n\t\t\tgetChildrenIds(section, subsections);\n\t\t}\n\n\t\tvar sectionEvents = [];\n\t\tfor (var i = 0; i < subsections.length; i++){\n\t\t\tvar sectionIndex = timeline.order[subsections[i]];\n\t\t\tif (sectionIndex !== undefined && evs[sectionIndex]) {\n\t\t\t\tsectionEvents = sectionEvents.concat(evs[sectionIndex]);\n\t\t\t} else if (evs.undefined) {\n\t\t\t\tfor (var j = 0; j < evs.undefined.length; j++){\n\t\t\t\t\tvar event = evs.undefined[j];\n\t\t\t\t\tif (event[timeline.y_property] == subsections[i]) {\n\t\t\t\t\t\tsectionEvents.push(event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn sectionEvents;\n\t}\n\n\tfunction selectByDate(sectionId, date, selectSubsections, timeline) {\n\t\tvar evs = scheduler._timeline_smart_render.getPreparedEvents(timeline);\n\n\t\tvar columnEvents = [];\n\t\tvar nestedEvents = [];\n\n\t\tvar sectionIndex = timeline.order[sectionId];\n\t\tvar section = timeline.y_unit[sectionIndex];\n\t\tif (!section) {\n\t\t\treturn [];\n\t\t}\n\t\tvar cellIndex = scheduler._get_date_index(timeline, date);\n\t\tif(evs.$matrix){\n\t\t\tcolumnEvents = evs.$matrix[sectionIndex][cellIndex]|| [];\n\t\t\tif(selectSubsections && evs.$matrix.$tree && evs.$matrix.$tree[section.key]){\n\t\t\t\tnestedEvents = evs.$matrix.$tree[section.key][cellIndex] || [];\n\t\t\t}\n\t\t\treturn columnEvents.concat(nestedEvents);\n\t\t}else{\n\t\t\treturn evs[sectionIndex] || [];\n\t\t}\n\t}\n\n\n\tfunction calculateUnits(from, to, timeline){\n\t\tvar scaleStartDate = scheduler.date[timeline.name + '_start'](new Date(from));\n\n\t\t// count the required value of timeline.x_size to display the required range.\n\t\tvar units = 0;\n\t\tvar currentDate = scaleStartDate;\n\t\tvar x_step = timeline.x_step;\n\t\tvar x_unit = timeline.x_unit;\n\t\twhile(currentDate < to){\n\t\t\tunits++;\n\t\t\tcurrentDate = scheduler.date.add(currentDate, x_step, x_unit);\n\t\t}\n\t\t// and modify timeline settings with the calculated number of steps\n\t\treturn units;\n\t}\n\n\tobj.setRange = scheduler.bind(function(from, to){\n\t\t// calculating the start of the timeline - `startDate`, provided with arguments is to be rounded via date start function:\n\t\tvar scaleStartDate = scheduler.date[this.name + '_start'](new Date(from));\n\t\t// count the required value of timeline.x_size to display the required range.\n\t\tvar units = calculateUnits(from, to, this);\n\n\t\t// and modify timeline settings with the calculated number of steps\n\t\tthis.x_size = units;\n\n\t\t// when settings are updated - tell scheduler to display a requested start date,\n\t\t// the time scale should contain range from startDate to endDate\n\t\tscheduler.setCurrentView(scaleStartDate, this.name);\n\t}, obj);\n\n\tscheduler.callEvent(\"onOptionsLoad\",[obj]);\n\n\t//init custom wrappers\n\tscheduler[obj.name+\"_view\"]=function(enable){\n\t\tif(enable){\n\t\t\tscheduler._set_timeline_dates(obj);\n\t\t\t//_renderMatrix will be called by render_data immediately after\n\t\t}else{\n\t\t\tscheduler._renderMatrix.apply(obj, arguments);\n\t\t}\n\t};\n\n\t//enable drag for non-cell modes\n\t//var temp_date = new Date();\n\t// var step_diff = (scheduler.date.add(temp_date, obj.x_step, obj.x_unit).valueOf() - temp_date.valueOf()); // \"minute\" + step in ms\n\tscheduler[\"mouse_\"+obj.name]=function(pos){ //mouse_coord handler\n\t\t//get event object\n\t\tvar ev = this._drag_event;\n\t\tif (this._drag_id){\n\t\t\tev = this.getEvent(this._drag_id);\n\t\t}\n\t\tif (obj.scrollable && !pos.converted) {\n\t\t\tpos.converted = 1;\n\t\t\tpos.x += -obj.dx + obj._x_scroll;\n\t\t\tif (scheduler.config.rtl) {\n\t\t\t\tvar labelWrapperHeight = +scheduler.$container.querySelector(\".dhx_timeline_label_wrapper\").style.height.replace(\"px\", \"\");\n\t\t\t\tvar scalesHeight = obj._section_height[obj.y_unit.length] + obj._label_rows[obj._label_rows.length - 1].top;\n\t\t\t\tpos.x += scheduler.xy.scale_width;\n\t\t\t\tif (obj.scrollHelper.getMode() == obj.scrollHelper.modes.minMax && (scalesHeight > labelWrapperHeight || obj.render == \"tree\")) pos.x += getScrollbarwidth();\n\t\t\t}\n\t\t\tpos.y += obj._y_scroll;\n\t\t} else if (!scheduler.config.rtl){\n\t\t\tpos.x -= obj.dx;\n\t\t} else {\n\t\t\tpos.x -= (obj.dx-scheduler.xy.scale_width);\n\t\t}\n\t\tvar end_date = scheduler._timeline_drag_date(obj, pos.x);\n\n\t\tpos.x = 0;\n\t\tpos.force_redraw = true;\n\t\tpos.custom = true;\n\n\t\t// as we can simply be calling _locate_cell_timeline\n\t\tif (this._drag_mode == \"move\" && this._drag_id && this._drag_event) {\n\t\t\tvar ev = this.getEvent(this._drag_id);\n\t\t\tvar drag_event = this._drag_event;\n\n\t\t\tpos._ignores = (this._ignores_detected || obj._start_correction || obj._end_correction);\n\t\t\tif (drag_event._move_delta === undefined) {\n\t\t\t\tdrag_event._move_delta = (ev.start_date-end_date)/60000;\n\t\t\t\tif (this.config.preserve_length && pos._ignores){\n\t\t\t\t\tdrag_event._move_delta = this._get_real_event_length(ev.start_date,end_date, obj);\n\t\t\t\t\tdrag_event._event_length = this._get_real_event_length(ev.start_date,ev.end_date, obj);\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t//preserve visible size of event\n\t\t\tif (this.config.preserve_length && pos._ignores){\n\t\t\t\t//var ev_length = drag_event._event_length;//this._get_real_event_length(ev.start_date, ev.end_date, obj);\n\t\t\t\tvar current_back_shift = this._get_fictional_event_length(end_date, drag_event._move_delta, obj, true);\n\t\t\t\tend_date = new Date(end_date - current_back_shift);\n\t\t\t} else {\n\t\t\t\t// converting basically to start_date\n\t\t\t\tend_date = scheduler.date.add(end_date, drag_event._move_delta, \"minute\");\n\t\t\t}\n\t\t}\n\n\t\tif (this._drag_mode == \"resize\" && ev){\n\t\t\tif(this.config.timeline_swap_resize && this._drag_id){\n\t\t\t\tif(this._drag_from_start && +end_date> +ev.end_date){\n\t\t\t\t\tthis._drag_from_start = false;\n\t\t\t\t}else if(!this._drag_from_start && +end_date < +ev.start_date){\n\t\t\t\t\tthis._drag_from_start = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tpos.resize_from_start = this._drag_from_start;\n\t\t\tif(!this.config.timeline_swap_resize && this._drag_id){\n\t\t\t\tif(this._drag_from_start && +end_date >= +scheduler.date.add(ev.end_date, -scheduler.config.time_step, \"minute\")){\n\t\t\t\t\tend_date = scheduler.date.add(ev.end_date, -scheduler.config.time_step, \"minute\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (obj.round_position) {\n\t\t\tswitch(this._drag_mode) {\n\t\t\t\tcase \"move\":\n\t\t\t\t\tif (!this.config.preserve_length){\n\t\t\t\t\t\tend_date = scheduler._timeline_get_rounded_date.call(obj, end_date, false);\n\t\t\t\t\t\t// to preserve original start and end dates\n\t\t\t\t\t\tif(obj.x_unit == \"day\")//only make sense for whole-day cells\n\t\t\t\t\t\t\tpos.custom = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"resize\":\n\t\t\t\t\tif(this._drag_event){\n\t\t\t\t\t\t// will save and use resize position only once\n\t\t\t\t\t\tif (this._drag_event._resize_from_start === null || this._drag_event._resize_from_start === undefined) {\n\t\t\t\t\t\t\tthis._drag_event._resize_from_start = pos.resize_from_start;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpos.resize_from_start = this._drag_event._resize_from_start;\n\t\t\t\t\t\tend_date = scheduler._timeline_get_rounded_date.call(obj, end_date, !this._drag_event._resize_from_start);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._resolve_timeline_section(obj, pos);\n\t\tif(pos.section){\n\t\t\t// update draggable event with current section\n\t\t\tthis._update_timeline_section({pos:pos, event:this.getEvent(this._drag_id), view:obj});\n\t\t}\n\t\tpos.y = Math.round((this._correct_shift(end_date,1)-this._min_date)/(1000*60*this.config.time_step));\n\t\tpos.shift = this.config.time_step; //step_diff;\n\n\t\tif (obj.round_position && this._drag_mode == \"new-size\") {\n\t\t\tif(end_date <= this._drag_start){\n\t\t\t\tpos.shift = scheduler.date.add(this._drag_start, obj.x_step, obj.x_unit) - this._drag_start;\n\t\t\t}\n\t\t}\n\n\t\tvar pos_changed = this._is_pos_changed(this._drag_pos, pos);\n\t\tif(this._drag_pos && pos_changed){\n\t\t\tthis._drag_event._dhx_changed = true;\n\t\t}\n\t\tif(!pos_changed && !this._drag_pos.has_moved)\n\t\t\tpos.force_redraw = false;\n\n\t\treturn pos;\n\t};\n};\n\nscheduler._prepare_timeline_events = function(timeline){\n\tvar evs = [];\n\tif (timeline.render == \"cell\"){\n\t\tevs = scheduler._timeline_trace_events.call(timeline);\n\t} else {\n\n\t\tvar tevs = scheduler.get_visible_events();\n\t\tvar order = timeline.order;\n\n\t\tfor (var j = 0; j < tevs.length; j++) {\n\t\t\tvar tev = tevs[j];\n\t\t\tvar tev_section = tev[timeline.y_property];\n\t\t\tvar index = timeline.order[ tev_section ];\n\t\t//\tvar sectionObject = timeline.y_unit[index];\n\n\t\t\tif (timeline.show_unassigned && !tev_section) {\n\t\t\t\tfor (var key in order) {\n\t\t\t\t\tif (order.hasOwnProperty(key)) {\n\t\t\t\t\t\tindex = order[key];\n\t\t\t\t\t\tif (!evs[index]) evs[index] = [];\n\t\t\t\t\t\tvar clone = scheduler._lame_copy({}, tev);\n\t\t\t\t\t\tclone[timeline.y_property] = key;\n\t\t\t\t\t\tevs[index].push(clone);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// required as we could have index of not displayed section or \"undefined\"\n\t\t\t\tif (!evs[index]) evs[index] = [];\n\t\t\t\tevs[index].push(tev);\n\t\t\t}\n\t\t}\n\n\t\t//if(timeline.cell_template){\n\t\tevs.$matrix = scheduler._timeline_trace_events.call(timeline);\n\t\t//}\n\n\n\t}\n\treturn evs;\n};\n\nscheduler._populate_timeline_rendered = function(container){\n\tscheduler._rendered = [];\n\tconst dataContainer = container.querySelector(\".dhx_timeline_data_col\");\n\tconst rows = Array.prototype.slice.call(dataContainer.children);\n\n\tif (scheduler._timeline_smart_render && scheduler._timeline_smart_render._rendered_events_cache) {\n\t\tscheduler._timeline_smart_render._rendered_events_cache = [];\n\t}\n\trows.forEach(function(row){\n\t\tconst rowIndex = Number(row.getAttribute(\"data-section-index\"));\n\t\tconst rowChildren = Array.prototype.slice.call(row.children);\n\t\trowChildren.forEach(function(child){\n\t\t\tconst eventId = child.getAttribute(scheduler.config.event_attribute);\n\t\t\tif(eventId){\n\t\t\t\tscheduler._rendered.push(child);\n\t\t\t\tif (scheduler._timeline_smart_render && scheduler._timeline_smart_render._rendered_events_cache) {\n\t\t\t\t\t// save to cache\n\t\t\t\t\tconst smartRenderCache = scheduler._timeline_smart_render._rendered_events_cache;\n\t\t\t\t\tif (!smartRenderCache[rowIndex])\n\t\t\t\t\t\tsmartRenderCache[rowIndex] = [];\n\t\t\t\t\tsmartRenderCache[rowIndex].push(eventId);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\treturn;\n};\n\nscheduler.render_timeline_event = function(ev, attach){\n\tvar section = ev[this.y_property]; // section id\n\tif (!section)\n\t\treturn \"\"; // as we may await html\n\n\tvar sorder = ev._sorder;\n\n\tvar x_start = scheduler._timeline_getX(ev, false, this);\n\tvar x_end = scheduler._timeline_getX(ev, true, this);\n\n//\tvar event_height = scheduler._get_timeline_event_height(ev, this);\n\n\tvar event_height = scheduler._get_timeline_event_height ? scheduler._get_timeline_event_height(ev, this) : this.getEventHeight(ev);\n\tvar hb = event_height - 2;// takes into account css sizes (border/padding)\n\tif (!ev._inner && this.event_dy == \"full\") {\n\t\tvar coefficient = ev._count - sorder; //number that shows the difference between the current outer event and the maximum number of events\n\t\tif (coefficient == 0) {\n\t\t\tcoefficient = 1;\n\t\t}\n\t\thb=(hb+1)*(coefficient) - 2; // height for outer full events\n\t}\n\n\t///*hb += 3*/;// correction for border-box sizing\n\n\tvar y = scheduler._get_timeline_event_y ? scheduler._get_timeline_event_y(ev._sorder, event_height) : this.getEventTop(ev);\n\n\tvar section_height = event_height+y+2;\n\tif(!this._events_height[section] || (this._events_height[section] < section_height)){\n\t\tthis._events_height[section] = section_height;\n\t}\n\n\tvar cs = scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\n\tcs = \"dhx_cal_event_line \"+(cs||\"\");\n\n\tif(scheduler.getState().select_id == ev.id){\n\t\tcs += \" dhx_cal_event_selected\";\n\t}\n\n\tif(ev._no_drag_move){\n\t\tcs += \" no_drag_move\";\n\t}\n\n\tvar bg_color = (ev.color?(\"--dhx-scheduler-event-background:\"+ev.color+\";\"):\"\");\n\tvar color = (ev.textColor?(\"--dhx-scheduler-event-color:\"+ev.textColor+\";\"):\"\");\n\tvar text = scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev);\n\n\tconst width = Math.max(0,x_end-x_start);\n\tif(width < 70) {\n\t\tcs += \" dhx_cal_event--small\";\n\t}\n\tif(width < 40) {\n\t\tcs += \" dhx_cal_event--xsmall\";\n\t}\n\n\tvar html=\"
\";\n\tif (scheduler.config.drag_resize && !scheduler.config.readonly) {\n\t\tvar dhx_event_resize = 'dhx_event_resize';\n\n\t\tvar hb_local = hb + 1; // corrected hb after changing table to divs, position of resize markers were rendered wrong\n\t\tvar resize_start = \"
\";\n\t\tvar resize_end = \"
\";\n\t\thtml += (!ev._no_resize_start ? resize_start : \"\") + (!ev._no_resize_end ? resize_end : \"\");\n\t}\n\thtml += (text+'
');\n\n\tif (!attach)\n\t\treturn html;\n\telse {\n\n\t\tvar d = document.createElement(\"div\");\n\t\td.innerHTML = html;\n\n\t\tvar parentSection = this._scales[section];\n\t\tif (parentSection){\n\t\t\tscheduler._rendered.push(d.firstChild);\n\t\t\tparentSection.appendChild(d.firstChild);\n\t\t}\n\t}\n};\n\nfunction getChildrenIds(root, result){\n\tresult = result || [];\n\tif(root.children){\n\t\tfor(var i = 0; i < root.children.length; i++){\n\t\t\tresult.push(root.children[i].key);\n\t\t\tgetChildrenIds(root.children[i], result);\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction getSectionIndex(sectionId, timeline){\n\tvar sectionIndex = timeline.order[sectionId];\n\tif(sectionIndex === undefined){\n\t\t// row inside a collapsed branch\n\t\tsectionIndex = \"$_\" + sectionId;\n\t}\n\treturn sectionIndex;\n}\n\nfunction iterateSectionsTree(root, result){\n\tresult[root.key] = root;\n\tif(root.children){\n\t\tfor(var i = 0; i < root.children.length; i++){\n\t\t\titerateSectionsTree(root.children[i], result);\n\t\t}\n\t}\n}\n\nfunction buildSectionsHash(timeline){\n\tvar result = {};\n\tvar units = timeline.y_unit_original || timeline.y_unit;\n\tfor(var i = 0; i < units.length; i++){\n\t\titerateSectionsTree(units[i], result);\n\n\t}\n\treturn result;\n\n}\n\nfunction prepareCellMatrix(events, timeline){\n\tvar matrix =[];\n\tfor (var i=0; i < timeline.y_unit.length; i++){\n\t\tmatrix[i]=[];\n\t}\n\n\t//next code defines row for undefined key\n\t//most possible it is an artifact of incorrect configuration\n\tvar sectionIndex;\n\tif (!matrix[sectionIndex]){\n\t\tmatrix[sectionIndex]=[];\n\t}\n\n\tvar sectionsSearch = buildSectionsHash(timeline);\n\n\tvar fillFolders = timeline.render == \"tree\";\n\tif(fillFolders){\n\t\tmatrix.$tree = {};\n\t}\n\n\tfunction fillXArray(matrix, sectionIndex, xFrom, xTo){\n\t\tif(!matrix[sectionIndex]){\n\t\t\tmatrix[sectionIndex]=[];\n\t\t}\n\t\tfor(var x = xFrom; x <= xTo; x++){\n\t\t\tif (!matrix[sectionIndex][x]) matrix[sectionIndex][x]=[];\n\t\t\tmatrix[sectionIndex][x].push(event);\n\t\t}\n\t}\n\n\tvar sectionProperty = timeline.y_property;\n\tfor (var i=0; i < events.length; i++) {\n\t\tvar event = events[i];\n\t\tvar sectionKey = event[sectionProperty];\n\t\tsectionIndex = getSectionIndex(sectionKey, timeline);\n\t\tvar scaleIndexStart = scheduler._get_date_index(timeline, event.start_date);\n\t\tvar scaleIndexEnd = scheduler._get_date_index(timeline, event.end_date);\n\t\tif(event.end_date.valueOf() == timeline._trace_x[scaleIndexEnd].valueOf()){\n\t\t\tscaleIndexEnd -= 1;\n\t\t}\n\n\t\tif(!matrix[sectionIndex]){\n\t\t\tmatrix[sectionIndex]=[];\n\t\t}\n\n\t\tfillXArray(matrix, sectionIndex, scaleIndexStart, scaleIndexEnd);\n\n\t\tvar current = sectionsSearch[sectionKey];\n\t\tif(fillFolders && current && current.$parent){\n\t\t\tvar traversed = {};\n\t\t\t\n\t\t\twhile(current.$parent){\n\t\t\t\tif(traversed[current.key]) {\n\t\t\t\t\tthrow new Error(\"Invalid sections tree. Section `{key:'\" + current.key + \"', label:'\"+current.label+\"'}` \" +\n\t\t\t\t\t\"has the same key as one of its parents. Make sure all sections have unique keys\");\n\t\t\t\t}\n\t\t\t\ttraversed[current.key] = true;\n\n\t\t\t\tvar parent = sectionsSearch[current.$parent];\n\t\t\t\tfillXArray(matrix.$tree, parent.key, scaleIndexStart, scaleIndexEnd);\n\t\t\t\tcurrent = parent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn matrix;\n}\n\nvar escapeForAttribute = function(rawValue){\n\tvar value = String(rawValue);\n\treturn value.replace(/'/g, \"'\").replace(/\"/g, '"');\n};\n\nscheduler._timeline_trace_events = function trace_events(){\n\t//minimize event set\n\tvar evs = scheduler.get_visible_events();\n\tvar matrix = prepareCellMatrix(evs, this);\n\t//if(this.render == \"tree\"){\n\t//\tfillFolderEvents(matrix, this);\n\t//}\n\treturn matrix;\n};\n\n// function used to get X (both start and end) coordinates for timeline bar view\nscheduler._timeline_getX = function _getX(ev, isEndPoint, config) {\n\tvar x = 0;\n\tvar step = config._step;\n\tvar round_position = config.round_position;\n\n\tvar column_offset = 0;\n\tvar date = (isEndPoint) ? ev.end_date : ev.start_date;\n\n\tif(date.valueOf()>scheduler._max_date.valueOf())\n\t\tdate = scheduler._max_date;\n\tvar delta = date - scheduler._min_date_timeline;\n\n\tif (delta > 0){\n\t\tvar index = scheduler._get_date_index(config, date);\n\t\tif (scheduler._ignores[index])\n\t\t\tround_position=true;\n\n\t\tfor (var i = 0; i < index; i++) {\n\t\t\tx += scheduler._cols[i];\n\t\t}\n\n\t\tvar column_date = scheduler._timeline_get_rounded_date.apply(config, [date, false]);\n\t\t//var column_date = scheduler.date.add(scheduler._min_date_timeline, scheduler.matrix[scheduler._mode].x_step*index, scheduler.matrix[scheduler._mode].x_unit);\n\t\tif (!round_position) {\n\t\t\tdelta = date - column_date;\n\t\t\tif (config.first_hour || config.last_hour){\n\t\t\t\tdelta = delta - config._start_correction;\n\t\t\t\tif (delta < 0) delta = 0;\n\t\t\t\tcolumn_offset = Math.round(delta/step);\n\t\t\t\tif (column_offset > scheduler._cols[index])\n\t\t\t\t\tcolumn_offset = scheduler._cols[index];\n\t\t\t} else {\n\t\t\t\tcolumn_offset = Math.round(delta/step);\n\t\t\t}\n\t\t} else {\n\t\t\tif (+date > +column_date && isEndPoint) {\n\t\t\t\tcolumn_offset = scheduler._cols[index];\n\t\t\t}\n\t\t}\n\t}\n\n\t//var borderBox = scheduler._border_box_events();\n\n\tif (isEndPoint) {\n\t\t// special handling for \"round\" dates which match columns and usual ones\n\t\tif (delta !== 0 && !round_position) {\n\t\t\tx += column_offset;\n\t\t} else {\n\t\t\tx += column_offset - 1;\n\t\t}\n\t} else {\n\t\tx += column_offset;\n\t}\n\treturn x;\n};\n\nscheduler._timeline_get_rounded_date = function get_rounded_date(date, isEndDate) {\n\tvar index = scheduler._get_date_index(this, date);\n\tvar rounded_date = this._trace_x[index];\n\tif (isEndDate && (+date != +this._trace_x[index])) {\n\t\trounded_date = (this._trace_x[index+1]) ? this._trace_x[index+1] : scheduler.date.add(this._trace_x[index], this.x_step, this.x_unit);\n\t}\n\treturn new Date(rounded_date);\n};\n\nscheduler._timeline_skip_ignored = function skip_ignored(evs){\n\n\tif(scheduler._ignores_detected){\n\t\tvar from,\n\t\t\tto,\n\t\t\tvisible,\n\t\t\tev;\n\n\t\tfor(var i = 0; i < evs.length; i++){\n\t\t\tev = evs[i];\n\t\t\tvisible = false;\n\t\t\tfrom = scheduler._get_date_index(this, ev.start_date);\n\t\t\tto = scheduler._get_date_index(this, ev.end_date);\n\n\t\t\twhile(from < to){\n\t\t\t\tif(!scheduler._ignores[from]){\n\t\t\t\t\tvisible = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tfrom++;\n\t\t\t}\n\t\t\tif(!visible && from == to && !scheduler._ignores[to]){\n\t\t\t\tif(+ev.end_date > +this._trace_x[to]){\n\t\t\t\t\tvisible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!visible){\n\t\t\t\tevs.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// calculates timeline event sorder and update timeline section heights\nscheduler._timeline_calculate_event_positions = function(evs){\n\tif (evs && this.render != \"cell\"){\n\n\t\tscheduler._timeline_skip_ignored.call(this, evs);\n\n\t\tevs.sort(this.sort || function(a,b){\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\n\t\t\t\treturn a.end_date.valueOf() > b.end_date.valueOf() ? -1 : 1;\n\t\t\treturn a.start_date > b.start_date ? 1 : -1;\n\t\t});\n\t\tvar stack=[];\n\t\tvar evs_length = evs.length;\n\t\tvar maxOrder = -1, maxOrderEvent = null;\n\n\t\t// prepare events for render\n\t\tfor (var j=0; j first event side\n\t\t\twhile (stack.length) {\n\t\t\t\tvar stack_ev = stack[stack.length-1];\n\t\t\t\tif (stack_ev.end_date.valueOf() <= ev_start_date.valueOf()) {\n\t\t\t\t\tstack.splice(stack.length-1,1);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// cutting stack from the first -> last event side\n\t\t\tvar sorderSet = false;\n\t\t\tfor(var p=0; p _max_sorder)\n\t\t\t\t\t\t\t\t_max_sorder = stack[w]._sorder;\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\n\t\t\t\t\t\tif(maxOrder < ev._sorder){\n\t\t\t\t\t\t\tmaxOrder = ev._sorder;\n\t\t\t\t\t\t\tmaxOrderEvent = ev;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tev._inner = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tev._sorder = 0;\n\t\t\t}\n\n\t\t\tstack.push(ev);\n\n\t\t\tif (stack.length>(stack.max_count||0)) {\n\t\t\t\tstack.max_count=stack.length;\n\t\t\t\tev._count=stack.length;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tev._count=(ev._count)?ev._count:1;\n\t\t\t}\n\t\t}\n\t\t// fix _count for every event\n\t\tfor (var m=0; m < evs.length; m++) {\n\t\t\tevs[m]._count = stack.max_count;\n\t\t\t// if multisection events are enabled - store a copy to be rendered in order to have access to dynamic _count/_index properties\n\t\t\tif(scheduler._register_copy){\n\t\t\t\tscheduler._register_copy(evs[m]);\n\t\t\t}\n\t\t}\n\n\t\tif(maxOrderEvent || evs[0]){\n\t\t\tscheduler.render_timeline_event.call(this, maxOrderEvent || evs[0], false);\n\t\t}\n\t}\n};\n\nscheduler._timeline_get_events_html = function get_events_html(evs) {\n\tvar html = \"\";\n\tif (evs && this.render != \"cell\"){\n\t\t// render events\n\t\tfor (var v=0; v 0) {\n\t\t\tstats.height = Math.max(stats.height, Math.floor((heightWithoutScroll - 1 - rowBaseSizes.totalCustomHeight) / rowBaseSizes.rowsWithDefaultHeight));\n\t\t}\n\t}\n\n\tif(sectionHasCustomHeight(section)){\n\t\tstats.height = Number(section.height);\n\t}\n\n\tview._section_height[section.key] = stats.height;\n\n\tif(!stats.td_className){\n\t\tstats.td_className = \"dhx_matrix_scell\";\n\t\t\n\t\tvar cssTemplate = scheduler.templates[view.name+\"_scaley_class\"](view.y_unit[i].key, view.y_unit[i].label, view.y_unit[i]);\n\t\tif(cssTemplate){\n\t\t\tstats.td_className += \" \" + cssTemplate;\n\t\t}\n\t\t\n\t\tif(view.columns){\n\t\t\tstats.td_className += \" dhx_matrix_scell_columns\";\n\t\t}\n\t}\n\tif(!stats.td_content){\n\t\tstats.td_content = scheduler.templates[view.name+'_scale_label'](view.y_unit[i].key, view.y_unit[i].label, view.y_unit[i]);\n\t}\n\tscheduler._merge(stats, {\n\t\t//section 1\n\t\ttr_className: \"\",\n\t\tstyle_height: \"height:\"+stats.height+\"px;\",\n\t\tstyle_width: \"width:\"+(view.dx)+\"px;\",\n\t\t//section 2\n\t\tsumm_width: \"width:\"+view._summ+\"px;\",\n\t\t//section 3\n\t\ttable_className: ''\n\t});\n\n\treturn stats;\n};\n\nfunction getRowSizes(timeline, eventsBySections){\n\tvar rowStats = [];\n\tvar rowStatsByKey = {};\n\tvar totalRowsHeight = 0;\n\tfor (var rowIndex=0; rowIndexstats.height)?rendered_height:stats.height;\n\t\tstats.style_height = \"height:\"+stats.height+\"px;\";\n\t\tstats.style_line_height = \"line-height:\" + (stats.height - 1) + \"px;\";\n\t\tview._section_height[view.y_unit[i].key] = stats.height;\n\t}\n\tstats.style_height = \"height:\"+stats.height+\"px;\";\n\tstats.style_line_height = \"line-height:\" + (stats.height - 1) + \"px;\";\n\tview._section_height[view.y_unit[i].key] = stats.height;\n\n\treturn stats;\n};\n\n/* scroll */\n// set scroll positions that were saved previously\nscheduler._timeline_set_scroll_pos = function(d, view) {\n\tvar dataWrapperDiv = d.querySelector('.dhx_timeline_data_wrapper');\n\tdataWrapperDiv.scrollTop = view._y_scroll || 0;\n\tview.scrollHelper.setScrollValue(dataWrapperDiv, view._x_scroll || 0);\n\tif (view.scrollHelper.getMode() != view.scrollHelper.modes.maxMin && dataWrapperDiv.scrollLeft == view._summ - dataWrapperDiv.offsetWidth + view.dx) dataWrapperDiv.scrollLeft += getScrollbarwidth();\n};\n\n// save current scroll positions\nscheduler._timeline_save_scroll_pos = function(view, scrollTop, scrollLeft, scrollWidth) {\n\tview._y_scroll = scrollTop || 0;\n\tview._x_scroll = scrollLeft || 0;\n};\n/* scroll end */\n\n/* get html section */\n// cell mode\n\nscheduler._timeline_get_html_for_cell_data_row = function(i, stats, top_pos, rowId, templateParams) {\n\tvar css = \"\";\n\tif(templateParams.template){\n\t\tcss += \" \" + (templateParams.template(templateParams.section, templateParams.view)||\"\");\n\t}\n\n\treturn \"
\";\n};\n\nscheduler._timeline_get_html_for_cell_ignores = function(stats) {\n\treturn '
';\n};\n\nscheduler._timeline_get_html_for_cell = function(x_ind, y_ind, view, ev, stats, cellLeftPos) {\n\tvar cellDate = view._trace_x[x_ind];\n\tvar cellSection = view.y_unit[y_ind];\n\tvar cellWidth = scheduler._cols[x_ind];\n\n\tvar cellDateString = timelineCellDateAttribute(cellDate);\n\n\tvar content = scheduler.templates[view.name + \"_cell_value\"](ev, cellDate, cellSection);\n\treturn \"
\" +\n\t\t\"
\" + content + \"
\";\n};\n\n// bar mode\nscheduler._timeline_get_html_for_bar_matrix_line = function(i, stats, top_pos, rowId) {\n\treturn \"
\";\n};\n\nscheduler._timeline_get_html_for_bar_data_row = function(stats, templateParams) {\n\tvar css = stats.table_className;\n\tif(templateParams.template){\n\t\tcss += \" \" + (templateParams.template(templateParams.section, templateParams.view)||\"\");\n\t}\n\treturn \"
\";\n};\n\nscheduler._timeline_get_html_for_bar_ignores = function() {\n\treturn \"\";// \"
\";\n};\n\nfunction timelineCellDateAttribute (cellDate){\n\treturn scheduler._helpers.formatDate(cellDate);\n}\n\nscheduler._timeline_get_html_for_bar = function(x_ind, y_ind, view, ev, cellLeftPos, nestedEvents) {\n\n\tvar cellDate = timelineCellDateAttribute(view._trace_x[x_ind]);\n\tvar cellSection = view.y_unit[y_ind];\n\n\tvar content = \"\";\n\tif(view.cell_template){\n\t\tcontent = scheduler.templates[view.name + \"_cell_value\"](ev, view._trace_x[x_ind], cellSection, nestedEvents);\n\t}\n\n\tvar lineHeight = \"line-height:\" + view._section_height[cellSection.key] + \"px;\";\n\n\tlet cellInner = \"\";\n\tif(content){\n\t\tcellInner = \"
\" + content + \"
\";\n\t}\n\n\treturn \"
\"+\n\t\tcellInner + \"
\";\n};\n/* get html section end */\n\n\n\nscheduler._timeline_render_scale_header = function(view, show){\n\tvar element = scheduler.$container.querySelector(\".dhx_timeline_scale_header\");\n\tif(element){\n\t\telement.remove();\n\t}\n\tif(!show){\n\t\treturn;\n\t}\n\n\telement = document.createElement(\"div\");\n\tvar headerAreaClass = \"dhx_timeline_scale_header\";\n\tif(view.second_scale){\n\t\theaderAreaClass += \" dhx_timeline_second_scale\";\n\t}\n\n\tvar headerHeight = scheduler.xy.scale_height;\n\telement.className = headerAreaClass;\n\telement.style.cssText = [\n\t\t\"width:\" + (view.dx) + \"px\",\n\t\t\"height:\" + (headerHeight) + \"px\",\n\t\t\"line-height:\" + (headerHeight) + \"px\",\n\t\t\"top:\" + \"0px\",\n\t\t(scheduler.config.rtl ? \"right:0px\" : \"left:0px\")\n\t].join(\";\");\n\t//element.innerHTML = scheduler.locale.labels[view.name+\"_scale_header\"] || '';\n\telement.innerHTML = scheduler.templates[view.name + \"_scale_header\"](view);\n\n\tconst header = scheduler.$container.querySelector(\".dhx_cal_header\");\n\telement.style.top = `${header.offsetTop}px`;\n\telement.style.height = `${header.offsetHeight}px`;\n\tscheduler.$container.appendChild(element);\n\t// scheduler.$container.querySelector(\".dhx_cal_header\").appendChild(element);\n};\n\nfunction getScrollableContainer(root, view){\n\tvar dataWrapperDiv = root.querySelector('.dhx_timeline_data_wrapper');\n\tif (!view.scrollable){\n\t\tdataWrapperDiv = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t}\n\treturn dataWrapperDiv;\n}\n\nfunction getLabelContainer(root){\n\treturn root.querySelector('.dhx_timeline_label_wrapper');\n}\n\nfunction getColumnLabelContainer(){\n\treturn scheduler.$container.querySelector(\".dhx_cal_data .dhx_timeline_label_col\");\n}\n\n// define timeline scroll behavior and attach onscroll event\n// define timeline scroll behavior and attach onscroll event\nfunction initScroll(d, view, heights) {\n\n\tscheduler.attachEvent(\"onOptionsLoad\", function(){\n\t\tif(scheduler.getState().mode === view.name){\n\t\t\theights = scheduler._colsS.heights;\n\t\t}\n\t});\n\tscheduler.attachEvent(\"onViewChange\", function(){\n\t\tif(scheduler.getState().mode === view.name){\n\t\t\theights = scheduler._colsS.heights;\n\t\t}\n\t});\n\t\n\tview._is_ev_creating = false;\n\n\tvar dataWrapperDiv = getScrollableContainer(d, view);\n\t// attach scroll events for dhx_cal_header - horizontal\n\t// and dhx_timeline_label_col div - vertical\n\tvar header = scheduler._els[\"dhx_cal_header\"][0];\n\n\t// add ability to scroll over timeline_label_wrapper\n\tvar labelWrapperDiv = getLabelContainer(d);\n\tif(labelWrapperDiv){ // only for vertical scrolling\n\n\t\tif (!labelWrapperDiv.$eventsAttached) {\n\t\t\tlabelWrapperDiv.$eventsAttached = true;\n\t\t\tvar prevLabelAction = { pageX: 0, pageY: 0 };\n\t\t\tscheduler.event(labelWrapperDiv, \"touchstart\", function (e) {\n\t\t\t\tvar touch = e;\n\t\t\t\tif (e.touches) {\n\t\t\t\t\ttouch = e.touches[0];\n\t\t\t\t}\n\t\t\t\tprevLabelAction = { pageX: touch.pageX, pageY: touch.pageY };\n\t\t\t}, {passive: false});\n\t\t\tscheduler.event(labelWrapperDiv, \"touchmove\", function (e) {\n\t\t\t\tvar touch = e;\n\t\t\t\tif (e.touches) {\n\t\t\t\t\ttouch = e.touches[0];\n\t\t\t\t}\n\t\t\t\tvar dy = prevLabelAction.pageY - touch.pageY;\n\t\t\t\tprevLabelAction = { pageX: touch.pageX, pageY: touch.pageY };\n\t\t\t\tif (dy) {\n\t\t\t\t\tdataWrapperDiv.scrollTop += dy;\n\t\t\t\t}\n\t\t\t\tif (e && e.preventDefault)\n\t\t\t\t\te.preventDefault();\n\t\t\t}, {passive: false});\n\t\t}\n\t}\n\n\t// rerender view\n\tvar frameRequest;\n\tif (!dataWrapperDiv.$eventsAttached) {\n\t\tdataWrapperDiv.$eventsAttached = true;\n\n\t\tlet prevScrollLeft;\n\t\tlet prevScrollTop;\n\n\t\t//eslint-disable-next-line no-inner-declarations\n\t\tfunction onMouseWheel(e) {\n\t\t\tlet scrollPositionChanged = true;\n\t\t\tvar ff = scheduler.env.isFF;\n\t\t\tvar deltaX = ff ? (e.deltaX) : e.wheelDeltaX;\n\t\t\tvar deltaY = ff ? (e.deltaY) : e.wheelDelta;\n\t\n\t\t\tvar multiplier = -20;\n\t\t\tif (ff) {\n\t\t\t\tif (e.deltaMode !== 0) {\n\t\t\t\t\tmultiplier = -40;\n\t\t\t\t} else {\n\t\t\t\t\tmultiplier = -10;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar wheelSpeed = {x: 1, y: 1};\n\t\t\tvar wx = ff ? (deltaX * multiplier * wheelSpeed.x) : deltaX * 2 * wheelSpeed.x;\n\t\t\tvar wy = ff ? (deltaY * multiplier * wheelSpeed.y) : deltaY * wheelSpeed.y;\n\n\t\t\tif (wx && Math.abs(wx) > Math.abs(wy)){\n\t\t\t\t\n\t\t\t\tvar dir = wx/-40;\n\t\t\t\tdataWrapperDiv.scrollLeft += dir*30;\n\t\t\t\tif(dataWrapperDiv.scrollLeft === prevScrollLeft){\n\t\t\t\t\tscrollPositionChanged = false;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tvar dir = wy/-40;\n\t\t\t\tif (typeof wy == \"undefined\")\n\t\t\t\t\tdir = e.detail;\n\t\n\t\t\t\tdataWrapperDiv.scrollTop += dir*30;\n\t\t\t\tif(dataWrapperDiv.scrollTop === prevScrollTop){\n\t\t\t\t\tscrollPositionChanged = false;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif(scrollPositionChanged){\n\t\t\t\te.preventDefault();\n\t\t\t\te.cancelBubble=true;\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t}\n\n\t\tscheduler.event(dataWrapperDiv, \"mousewheel\", onMouseWheel, {passive: false});\n\t\tscheduler.event(labelWrapperDiv, \"mousewheel\", onMouseWheel, {passive: false});\n\n\n\tconst dataWrapperDivOnScroll = function (e) {\n\t\tif(scheduler.getState().mode !== view.name){\n\t\t\treturn;\n\t\t}\n\t\theights = scheduler._colsS.heights;\n\t\tvar element = getScrollableContainer(d, view);\n\t\te.preventDefault();\n\t\tvar scrollTop = element.scrollTop;\n\t\tvar scrollLeft = view.scrollHelper.getScrollValue(element);\n\t\tprevScrollLeft = scrollLeft;\n\t\tprevScrollTop = scrollTop;\n\t\tvar scrollWidth = view._summ - scheduler.$container.querySelector('.dhx_cal_data').offsetWidth + view.dx + view.custom_scroll_width;\n\t\tvar viewPort = scheduler._timeline_smart_render.getViewPort(view.scrollHelper, 0, scrollLeft, scrollTop);\n\t\tvar colLabelDiv = getColumnLabelContainer();\n\t\tif(view.scrollable){\n\t\t\tcolLabelDiv.style.top = (-scrollTop) + 'px';\n\t\t}\n\n\t\tif(view._smartRenderingEnabled()){\n\t\t\tif (scrollLeft !== view._x_scroll || view._is_ev_creating) {\n\t\t\t\tif (view.second_scale)\n\t\t\t\t\tscheduler._timeline_smart_render.updateHeader(view, viewPort, header.children[1]);\n\t\t\t\telse\n\t\t\t\t\tscheduler._timeline_smart_render.updateHeader(view, viewPort, header.children[0]);\n\t\t\t}\n\t\t}\n\n\t\tif (scheduler.config.rtl){\n\t\t\tvar labelWrapperHeight = +scheduler.$container.querySelector(\".dhx_timeline_label_wrapper\").style.height.replace(\"px\", \"\");\n\t\t\tvar scalesHeight = view._section_height[view.y_unit.length] + view._label_rows[view._label_rows.length - 1].top;\n\n\t\t\tif (view.scrollHelper.getMode() == view.scrollHelper.modes.minMax && (scalesHeight > labelWrapperHeight || view.render == \"tree\")) {\n\t\t\t\theader.style.right = (-1 - scrollLeft - getScrollbarwidth()) + 'px';\n\t\t\t}\n\t\t\telse header.style.right = (-1 - scrollLeft) + 'px';\n\n\t\t\theader.style.left = 'unset';\n\t\t} else {\n\t\t\theader.style.left = (-1 - scrollLeft) + 'px';\n\t\t}\n\n\t\tif(!view._smartRenderingEnabled()){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (view._options_changed || scrollTop !== view._y_scroll || view._is_ev_creating) {\n\t\t\tscheduler._timeline_smart_render.updateLabels(view, viewPort, colLabelDiv);\n\t\t}\n\n\n\n\t\tview._is_ev_creating = false;\n\n\t\tscheduler._timeline_smart_render.updateGridCols(view, viewPort);\n\t\tscheduler._timeline_smart_render.updateGridRows(view, viewPort);\n\n\t\tvar asyncScroll = false;\n\t\tif (view.render != 'cell') {\n\t\t\t//asyncScroll = true;\n\t\t\t////if (frameRequest) {\n\t\t\t\tcancelAnimationFrame(frameRequest);\n\t\t\t//}\n\n\t\t\t//frameRequest = requestAnimationFrame(function () {\n\t\t\t\tif(view.name !== scheduler.getState().mode){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tscheduler._timeline_smart_render.updateEvents(view, viewPort);\n\t\t\t//\tframeRequest = 0;\n\t\t\t//\tview.callEvent(\"onScroll\", [view.scrollHelper.getScrollValue(dataWrapperDiv), dataWrapperDiv.scrollTop]);\n\t\t\t//});\n\t\t}\n\n\t\tvar dataColHeight = 0;\n\t\tview._scales = {};\n\t\tvar rows;\n\n\t\tif (view.render === 'cell')\n\t\t\trows = element.querySelectorAll('.dhx_timeline_data_col .dhx_timeline_data_row');\n\t\telse\n\t\t\trows = element.querySelectorAll('.dhx_timeline_data_col .dhx_matrix_line');\n\n\t\tvar render_stats = view._render_stats;\n\t\tfor (var i= 0, len = rows.length; i < len; i++) {\n\t\t\tvar unit_key = rows[i].getAttribute(\"data-section-id\");\n\t\t\tvar rowIndex = view.order[unit_key];\n\n\t\t\theights[rowIndex] = render_stats[rowIndex].height;\n\t\t\tview._scales[unit_key] = rows[i];\n\t\t}\n\n\t\tfor (var i= 0, len = heights.length; i < len; i++) {\n\t\t\tdataColHeight+= heights[i];\n\t\t}\n\n\t\tvar scrDiv = scheduler.$container.querySelector('.dhx_timeline_data_col');\n\t\tscrDiv.style.height = dataColHeight + \"px\";\n\t//\tvar newTop = element.scrollTop;\n\t//\tvar newLeft = view.scrollHelper.getScrollValue(element);\n\t\n\tvar newTop = scrollTop;\n\tvar newLeft = scrollLeft;\n\n\t\t//var scrollWidth = view._summ - scheduler.$container.querySelector('.dhx_cal_data').offsetWidth + view.dx + view.custom_scroll_width;\n\t\tscheduler._timeline_save_scroll_pos(view, newTop, newLeft, scrollWidth);\n\t\tif (!asyncScroll) {\n\t\t\tview.callEvent(\"onScroll\", [newLeft, newTop]);\n\t\t}\n\t\t//scheduler._timeline_smart_render.updateEvents(view, viewPort);\n\t\t//\tframeRequest = 0;\n\t\t//view.callEvent(\"onScroll\", [view.scrollHelper.getScrollValue(dataWrapperDiv), dataWrapperDiv.scrollTop]);\n\n\t\tview._is_new_view = false;\n\t};\n\n\tscheduler.event(dataWrapperDiv, \"scroll\", dataWrapperDivOnScroll, {passive: false});\n\n\t\tvar prevAction = { pageX: 0, pageY: 0 };\n\t\tscheduler.event(dataWrapperDiv, \"touchstart\", function (e) {\n\t\t\tvar touch = e;\n\t\t\tif (e.touches) {\n\t\t\t\ttouch = e.touches[0];\n\t\t\t}\n\t\t\tprevAction = { pageX: touch.pageX, pageY: touch.pageY };\n\t\t}, {passive: false});\n\t\tscheduler.event(dataWrapperDiv, \"touchmove\", function (e) {\n\t\t\tvar touch = e;\n\t\t\tif (e.touches) {\n\t\t\t\ttouch = e.touches[0];\n\t\t\t}\n\t\t\tvar colLabelDiv = getColumnLabelContainer();\n\t\t\tvar dx = prevAction.pageX - touch.pageX;\n\t\t\tvar dy = prevAction.pageY - touch.pageY;\n\t\t\tprevAction = { pageX: touch.pageX, pageY: touch.pageY };\n\n\t\t\tif ((dx || dy) && !scheduler.getState().drag_id) {\n\t\t\t\t// add a threshold for secondary axis movement\n\t\t\t\tvar absoluteDx = Math.abs(dx);\n\t\t\t\tvar absoluteDy = Math.abs(dy);\n\t\t\t\tvar totalDistance = Math.sqrt(dx*dx + dy*dy);\n\t\t\t\tvar horizontalComponent = absoluteDx / totalDistance;//sin\n\t\t\t\tvar verticalComponent = absoluteDy / totalDistance;//cos\n\t\t\t\tif (horizontalComponent < 0.42) {// < 25 degree angle\n\t\t\t\t\tdx = 0;\n\t\t\t\t} else if (verticalComponent < 0.42) {// < 65 degree angle\n\t\t\t\t\tdy = 0;\n\t\t\t\t}\n\t\t\t\t// GS-2457: due to opposite direction in timeline with rtl mode, \n\t\t\t\t// need to change the direction of scrolling when rtl is enabled\n\t\t\t\tif (scheduler.config.rtl){\n\t\t\t\t\tdx = -dx;\n\t\t\t\t} \n\n\t\t\t\tview.scrollHelper.setScrollValue( dataWrapperDiv, view.scrollHelper.getScrollValue(dataWrapperDiv) + dx);\n\n\t\t\t\tdataWrapperDiv.scrollTop += dy;\n\n\t\t\t\tif (view.scrollable && dy) {\n\t\t\t\t\tcolLabelDiv.style.top = (-dataWrapperDiv.scrollTop) + 'px';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (e && e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\treturn false;\n\t\t}, {passive: false});\n\t}\n\n\tif (view.scroll_position && view._is_new_view) {\n\t\t// set scroll position once on scheduler init and save it to timeline obj\n\t\tview.scrollTo(view.scroll_position);\n\t} else {\n\t\tscheduler._timeline_set_scroll_pos(d, view);\n\t}\n\n\tview._is_ev_creating = true;\n}\n\n\n\nscheduler._timeline_y_scale = function y_scale(d) {\n\t// main code for _timeline_y_scale starts here\n\tvar block_stats = scheduler._timeline_get_block_stats(d, this);\n\n\t// _section_autowidth works for scrollable=true and defines is scroll or autosize (width) needed\n\tvar scrollableData = !this.scrollable ? '' : ' dhx_timeline_scrollable_data';\n\n\tvar html = \"
\" ;\n\tvar labelWrapper = \"
\" +\n\t\t\"
\";\n\tvar dataWrapper = \"
\" +\n\t\t\"
\";\n\n\tif(scheduler._load_mode)\n\t\tscheduler._load();\n\n\tscheduler._timeline_smart_render.clearPreparedEventsCache(evs);\n\tvar evs = scheduler._timeline_smart_render.getPreparedEvents(this);\n\tscheduler._timeline_smart_render.cachePreparedEvents(evs);\n\n\tvar summ = 0;\n\tfor (var i=0; i < scheduler._cols.length; i++)\n\t\tsumm+=scheduler._cols[i];\n\n\tvar step = new Date();\n\tvar realcount = scheduler._cols.length-scheduler._ignores_detected;\n\tstep = ((scheduler.date.add(step, this.x_step*realcount, this.x_unit)-step)-(this._start_correction + this._end_correction)*realcount)/summ;\n\tthis._step = step;\n\tthis._summ = summ;\n\n\tvar heights = scheduler._colsS.heights=[];\n\tvar render_stats = [];\n\n\tthis._render_stats = render_stats;\n\tthis._events_height = {};\n\tthis._section_height = {};\n\tthis._label_rows = [];\n\n\tvar skipRenderCells = false;\n\t//var cellTopPos = 0;\n\tvar viewPort = null;\n\tif(this._smartRenderingEnabled()){\n\t\tviewPort = scheduler._timeline_smart_render.getViewPort(this.scrollHelper, this._sch_height);\n\t}\n\n\tscheduler._timeline_smart_render._rendered_labels_cache = [];\n\tscheduler._timeline_smart_render._rendered_events_cache = [];\n\n\tvar scrollableDataContainer = !!viewPort;\n\n\tvar smartRender = this._smartRenderingEnabled();\n\n\tvar sectionsInfo = getRowSizes(this, evs);\n\n\t// if sections were changed viewport should be shifted upwards\n\tif(viewPort && sectionsInfo.totalHeight < viewPort.scrollTop){\n\t\tviewPort.scrollTop = Math.max(0, sectionsInfo.totalHeight - viewPort.height);\n\t}\n\n\tthis._rowStats = sectionsInfo.rowStatsByKey;\n\n\tfor (var rowIndex=0; rowIndex\" +\n\t\t\t\"
\"+stats.td_content+\"
\";\n\n\t\tif (smartRender)\n\t\t\tthis._label_rows.push({div: labelRow, top: cellTopPos, section: row});\n\n\t\t// check vertical direction\n\t\tif (smartRender){\n\t\t\tif (!scheduler._timeline_smart_render.isInYViewPort({top: cellTopPos, bottom: cellTopPos + stats.height}, viewPort)) {\n\t\t\t\tskipRenderCells = true;\n\t\t\t}\n\t\t}\n\t//\tcellTopPos += stats.height;\n\n\t\tif (skipRenderCells) {\n\t\t\tskipRenderCells = false;\n\t\t} else {\n\t\t\t// add label row if wasn't skipped render cells\n\t\t\tlabelWrapper += labelRow;\n\n\t\t\t// save label to cache on first time render\n\t\t\tif (smartRender){\n\t\t\t\tscheduler._timeline_smart_render._rendered_labels_cache.push(rowIndex);\n\t\t\t}\n\n\t\t\tvar template = scheduler.templates[this.name + \"_row_class\"];\n\t\t\tvar templateParams = { view: this, section: row, template: template};\n\n\t\t\t// check horizontal direction\n\t\t\tvar cellLeftPos = 0;\n\t\t\tif (this.render == \"cell\") {\n\t\t\t\tdataWrapper +=scheduler._timeline_get_html_for_cell_data_row(rowIndex, stats, stats.top, row.key, templateParams);\n\t\t\t\tfor (var colIndex = 0; colIndex < scheduler._cols.length; colIndex++) {\n\t\t\t\t\tif (scheduler._ignores[colIndex] && !smartRender)\n\t\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_cell_ignores(stats);\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (smartRender && scrollableDataContainer) {\n\t\t\t\t\t\t\tif (scheduler._timeline_smart_render.isInXViewPort({left: cellLeftPos, right: cellLeftPos + scheduler._cols[colIndex]}, viewPort)) {\n\t\t\t\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_cell(colIndex, rowIndex, this, evs[rowIndex][colIndex], stats, cellLeftPos);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_cell(colIndex, rowIndex, this, evs[rowIndex][colIndex], stats, cellLeftPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcellLeftPos += scheduler._cols[colIndex];\n\n\t\t\t\t}\n\t\t\t\tdataWrapper += '
';\n\t\t\t} else {\n\t\t\t\t//section 2\n\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar_matrix_line(rowIndex, stats, stats.top, row.key);\n\n\t\t\t\tvar printableEvents = evs[rowIndex];\n\t\t\t\t// get events only in viewport\n\t\t\t\tif (smartRender && scrollableDataContainer) {\n\t\t\t\t\tprintableEvents = scheduler._timeline_smart_render.getVisibleEventsForRow(this, viewPort, evs, rowIndex);\n\n\t\t\t\t}\n\t\t\t\tvar events_html = scheduler._timeline_get_events_html.call(this, printableEvents);\n\n\n\t\t\t\t// adding events\n\t\t\t\tdataWrapper += events_html;\n\n\t\t\t\t// section 3\n\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar_data_row(stats, templateParams);\n\n\t\t\t\tfor (var colIndex = 0; colIndex < scheduler._cols.length; colIndex++) {\n\t\t\t\t\tif (scheduler._ignores[colIndex])\n\t\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar_ignores();\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (smartRender && scrollableDataContainer) {\n\t\t\t\t\t\t\tif (scheduler._timeline_smart_render.isInXViewPort({left: cellLeftPos, right: cellLeftPos + scheduler._cols[colIndex]}, viewPort)) {\n\t\t\t\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar(colIndex, rowIndex, this, evs[rowIndex], cellLeftPos);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar(colIndex, rowIndex, this, evs[rowIndex], cellLeftPos);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcellLeftPos += scheduler._cols[colIndex];\n\t\t\t\t}\n\t\t\t\tdataWrapper += \"
\";\n\t\t\t}\n\t\t}\n\t\tstats.sectionKey = row.key;\n\t\trender_stats.push(stats);\n\t}\n\n\thtml += labelWrapper + \"
\";\n\thtml += dataWrapper + \"
\";\n\thtml += \"\";\n\n\tthis._matrix = evs;\n\n\t//d.scrollTop = 0; //fix flickering in FF; disabled as it was impossible to create dnd event if scroll was used (window jumped to the top)\n\td.innerHTML = html;\n\tif (smartRender) {\n\t\tif (scheduler._timeline_smart_render) {\n\t\t\tscheduler._timeline_smart_render._rendered_events_cache = [];\n\t\t}\n\t}\n\tscheduler._populate_timeline_rendered(d);\n\t// set height for absolute positioned scrollable div\n\n\tconst sectionRows = d.querySelectorAll(\"[data-section-id]\");\n\tconst divBySectionId = {};\n\tsectionRows.forEach(function(row){\n\t\tdivBySectionId[row.getAttribute(\"data-section-id\")] = row;\n\t});\n\tthis._divBySectionId = divBySectionId;\n\tif (smartRender) {\n\t\tvar scrDiv = scheduler.$container.querySelector('.dhx_timeline_data_col');\n\t\tscrDiv.style.height = sectionsInfo.totalHeight + \"px\";\n\t}\n\n\tthis._scales = {};\n\n\tfor (var i= 0, len = render_stats.length; i < len; i++) {\n\t\theights.push(render_stats[i].height);\n\n\t\tvar unit_key = render_stats[i].sectionKey;\n\t\tscheduler._timeline_finalize_section_add(this, unit_key, this._divBySectionId[unit_key]);\n\t}\n\n\n\tif (smartRender || this.scrollable){\n\t\tinitScroll(d, this, heights);\n\t}\n};\n\nscheduler._timeline_finalize_section_add = function(timeline, sectionKey, sectionDiv){\n\tif(sectionDiv){\n\t\ttimeline._scales[sectionKey] = sectionDiv;\n\t\tscheduler.callEvent(\"onScaleAdd\", [sectionDiv, sectionKey]);\n\t}\n};\n\nscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode,old_date,mode,date) {\n\t// set scroll position for previous when dates are switched (not modes)\n\tif (scheduler.matrix[mode]) {\n\t\tvar view = scheduler.matrix[mode];\n\n\t\tif (view.scrollable || view.smart_rendering) {\n\t\t\tif (view.render == \"tree\") {\n\t\t\t\tif (old_mode === mode && old_date === date) {\n\t\t\t\t\t// do not set scroll pos to 0 if it is click on folder\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(( old_mode !== mode || +old_date !== +date) && scheduler.$container.querySelector('.dhx_timeline_scrollable_data')){\n\t\t\t\tview._x_scroll = view._y_scroll = 0;\n\n\t\t\t\tif (scheduler.$container.querySelector('.dhx_timeline_scrollable_data')) {\n\t\t\t\t\tscheduler._timeline_set_scroll_pos(scheduler._els[\"dhx_cal_data\"][0], view);\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t}\n\t}\n\n\treturn true;\n});\n\nscheduler._timeline_x_dates = function x_dates(preserve){\n\tvar start = scheduler._min_date;\n\tvar end = scheduler._max_date;\n\n\tscheduler._process_ignores(start, this.x_size, this.x_unit, this.x_step, preserve);\n\t// var size = this.x_size + (preserve ? scheduler._ignores_detected : 0);\n\n\tif(scheduler.date[this.x_unit + \"_start\"]){\n\t\tstart = scheduler.date[this.x_unit + \"_start\"](start);\n\t}\n\tvar display_count = 0,\n\t\ttotal_count = 0;\n\twhile(+start < +end){\n\t\t// dates calculation\n\t\t\n\t\tthis._trace_x[total_count]=new Date(start);\n\t\tif(this.x_unit == \"month\" && scheduler.date[this.x_unit + \"_start\"]){\n\t\t\tstart = scheduler.date[this.x_unit + \"_start\"](new Date(start));\n\t\t}\n\t\tstart = scheduler.date.add(start, this.x_step, this.x_unit);\n\t\tif(scheduler.date[this.x_unit + \"_start\"]){\n\t\t\tstart = scheduler.date[this.x_unit + \"_start\"](start);\n\t\t}\n\n\t\tif(!scheduler._ignores[total_count])\n\t\t\tdisplay_count++;\n\t\ttotal_count++;\n\n\t\tif(preserve){\n\t\t\tif(display_count < this.x_size && !(+start < +end)){\n\t\t\t\tend = scheduler.date[\"add_\" + this.name + \"_private\"](end, (this.x_length || this.x_size)*this.x_step);\n\t\t\t}else if(display_count >= this.x_size){\n\t\t\t\tscheduler._max_date = start;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn {total: total_count, displayed: display_count};\n};\n\nscheduler._timeline_x_scale = function x_scale(h){\n\tvar timelineContainerWidth = scheduler._x - this.dx - scheduler.xy.scroll_width; //border delta, whole width\n\tvar start = scheduler._min_date;\n\t//var end = scheduler._max_date;\n\t\t\n\tvar current_sh = scheduler.xy.scale_height;\n\tvar original_sh = this._header_resized||scheduler.xy.scale_height;\n\tscheduler._cols=[];\t//store for data section, each column width // scale.width\n\tscheduler._colsS={height:0}; // heights of the y sections\n\tthis._trace_x =[]; // list of dates per cells // scale.trace_x\n\n\n\tvar preserve = scheduler.config.preserve_scale_length;\n\tvar dates = scheduler._timeline_x_dates.call(this, preserve);\n\n\n\t// calculate width for scrollable, define is autowidth needed or not\n\tif (this.scrollable && this.column_width > 0) {\n\n\t\tvar summ_fixed = this.column_width * dates.displayed;\n\n\t\tif (summ_fixed > timelineContainerWidth) {\n\t\t\ttimelineContainerWidth = summ_fixed;\n\t\t\tthis._section_autowidth = false; // default === true\n\t\t}\n\t}\n\n\tvar left = [this.dx]; // left margins, initial left margin\n\tvar header = scheduler._els['dhx_cal_header'][0];\n\theader.style.width = (left[0]+timelineContainerWidth + 1)+'px';\n\n\tvar start = scheduler._min_date_timeline = scheduler._min_date;\n\n\n\tvar realcount = dates.displayed;\n\tvar size = dates.total;\n\n\t// position calculation\n\n\tfor (var k=0; k\";\n\n\tif(this.second_scale){\n\t\t// additional calculations\n\t\tvar mode = this.second_scale.x_unit;\n\t\tvar control_dates = [this._trace_x[0]]; // first control date\n\t\tvar second_cols = []; // each column width of the secondary row\n\t\tvar second_left = [this.dx, this.dx]; // left margins of the secondary row\n\t\tvar t_index = 0; // temp index\n\t\tfor (var l = 0; l < this._trace_x.length; l++) {\n\t\t\tvar date = this._trace_x[l];\n\t\t\tvar res = scheduler._timeline_is_new_interval(mode, date, control_dates[t_index]);\n\n\t\t\tif(res) { // new interval\n\t\t\t\t++t_index; // starting new interval\n\t\t\t\tcontrol_dates[t_index] = date; // updating control date as we moved to the new interval\n\t\t\t\tsecond_left[t_index+1] = second_left[t_index];\n\t\t\t}\n\t\t\tvar t = t_index+1;\n\t\t\tsecond_cols[t_index] = scheduler._cols[l] + (second_cols[t_index]||0);\n\t\t\tsecond_left[t] += scheduler._cols[l];\n\t\t}\n\n\t\th.innerHTML = \"
\";\n\t\tvar top = h.firstChild;\n\t\ttop.style.height = (original_sh)+'px'; // actually bottom header takes 21px\n\t\tvar bottom = h.lastChild;\n\t\tbottom.style.position = \"relative\";\n\t\tbottom.className = \"dhx_bottom_scale_container\";\n\t\tfor (var m = 0; m < control_dates.length; m++) {\n\t\t\tvar tdate = control_dates[m];\n\t\t\tvar scs = scheduler.templates[this.name+\"_second_scalex_class\"](tdate);\n\t\t\tvar head = document.createElement(\"div\"); \n\t\t\thead.className=\"dhx_scale_bar dhx_second_scale_bar\"+((scs)?(\" \"+scs):\"\");\n\t\t\tscheduler.set_xy(head, second_cols[m], original_sh, second_left[m], 0);\n\t\t\thead.innerHTML = scheduler.templates[this.name+\"_second_scale_date\"](tdate);\n\t\t\ttop.appendChild(head);\n\t\t}\n\t}\n\n\tscheduler.xy.scale_height = original_sh; // fix for _render_x_header which uses current scale_height value\n\th = h.lastChild; // h - original scale\n\n\tthis._h_cols = {};\n\n\tfor (var i=0; ib.start_date?1:-1; });\n\n\tif (scheduler._tooltip){\n\t\tif (scheduler._tooltip.date == mark) return;\n\t\tscheduler._tooltip.innerHTML=\"\";\n\t} else {\n\t\tvar t = scheduler._tooltip = document.createElement(\"div\");\n\t\tt.className = \"dhx_year_tooltip\";\n\t\tif (scheduler.config.rtl) t.className += \" dhx_tooltip_rtl\";\n\t\tdocument.body.appendChild(t);\n\t\tscheduler.event(t, \"click\", scheduler._click.dhx_cal_data);\n\t}\n\n\tvar html = \"\";\n\n\tfor (var i=0; i\";\n\t\thtml+=\"
\"+(evs[i]._timed?scheduler.templates.event_date(evs[i].start_date):\"\")+\"
\";\n\t\thtml+=\"
 
\";\n\t\thtml+=scheduler.templates[obj.name+\"_tooltip\"](evs[i].start_date, evs[i].end_date,evs[i])+\"\";\n\t}\n\n\tscheduler._tooltip.style.display=\"\";\n\tscheduler._tooltip.style.top = \"0px\";\n\n\tif ((scheduler.config.rtl && offset.left-scheduler._tooltip.offsetWidth >= 0) || document.body.offsetWidth-pos.src.offsetWidth-offset.left-scheduler._tooltip.offsetWidth < 0) {\n\t\tscheduler._tooltip.style.left = offset.left-scheduler._tooltip.offsetWidth+\"px\";\n\t}\n\telse {\n\t\tscheduler._tooltip.style.left = offset.left+pos.src.offsetWidth+\"px\";\n\t}\n\n\tscheduler._tooltip.date = mark;\n\tscheduler._tooltip.innerHTML = html;\n\n\tif (document.body.offsetHeight-offset.top-scheduler._tooltip.offsetHeight < 0)\n\t\tscheduler._tooltip.style.top= offset.top-scheduler._tooltip.offsetHeight+pos.src.offsetHeight+\"px\";\n\telse\n\t\tscheduler._tooltip.style.top= offset.top+\"px\";\n};\n\nscheduler._matrix_tooltip_handler = function(e){\n\tvar obj = scheduler.matrix[scheduler._mode];\n\tif (!obj || obj.render != \"cell\")\n\t\treturn;\n\tif (obj){\n\t\tvar pos = scheduler._locate_cell_timeline(e);\n\t\tif (pos)\n\t\t\treturn scheduler._timeline_showToolTip(obj,pos,scheduler.$domHelpers.getOffset(pos.src));\n\t}\n\tscheduler._timeline_hideToolTip();\n};\nscheduler._init_matrix_tooltip = function() {\n\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._matrix_tooltip_handler);\n\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._matrix_tooltip_handler);\n};\n\nscheduler._set_timeline_dates = function(view){\n\tscheduler._min_date = scheduler.date[view.name+\"_start\"](new Date(scheduler._date));\n\tscheduler._max_date = scheduler.date[\"add_\" + view.name + \"_private\"](scheduler._min_date, view.x_size*view.x_step);\n\n\tif(scheduler.date[view.x_unit+\"_start\"]){\n\t\tscheduler._max_date = scheduler.date[view.x_unit+\"_start\"](scheduler._max_date);\n\t}\n\tscheduler._table_view = true;\n};\n\n\nscheduler._renderMatrix = function(mode, refresh) {\n\tthis.callEvent(\"onBeforeRender\", []);\n\t\n\tif (!refresh)\n\t\tscheduler._els['dhx_cal_data'][0].scrollTop=0;\n\n\n\n\tscheduler._set_timeline_dates(this);\n\n\tscheduler._timeline_set_full_view.call(this,mode);\n};\n\nscheduler._timeline_html_index = function html_index(el) {\n\tvar p = el.parentNode.childNodes;\n\n\tvar nodeIndex = -1;\n\tfor (var i=0; i < p.length; i++) {\n\t\tif (p[i] == el){\n\t\t\tnodeIndex = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar resIndex = nodeIndex;\n\tif(scheduler._ignores_detected){\n\t\tfor(var colIndex in scheduler._ignores){\n\t\t\tif(scheduler._ignores[colIndex] && colIndex*1 <= resIndex)\n\t\t\t\tresIndex++;\n\t\t}\n\t}\n\n\treturn resIndex;\n};\n\nscheduler._timeline_locate_hcell = function locate_hcell(e){\n\tvar trg = e.target?e.target:e.srcElement;\n\twhile (trg && trg.tagName != \"DIV\")\n\t\ttrg=trg.parentNode;\n\tif (trg && trg.tagName == \"DIV\"){\n\t\tvar cs = scheduler._getClassName(trg).split(\" \")[0];\n\t\tif (cs == \"dhx_scale_bar\")\n\t\t\treturn { x:scheduler._timeline_html_index(trg), y:-1, src:trg, scale:true };\n\t}\n};\n\nfunction closest(element, selector){\n\treturn scheduler.$domHelpers.closest(element, selector);\n}\n\n\nscheduler._locate_cell_timeline = function(e){\n\tvar trg = e.target?e.target:e.srcElement;\n\n\tvar res = {};\n\tvar view = scheduler.matrix[scheduler._mode];\n\tvar pos = scheduler.getActionData(e);\n\tvar ign = scheduler._ignores;\n\n\tvar xNonIgnoredInd = 0;\n\tfor (var xind = 0; xind < view._trace_x.length-1; xind++) {\n\t\t// | 8:00, 8:30 | 8:15 should be checked against 8:30\n\t\t// clicking at the most left part of the cell, say 8:30 should create event in that cell, not previous one\n\t\tif (+pos.date < view._trace_x[xind+1])\n\t\t\tbreak;\n\n\t\tif(!ign[xind]) {\n\t\t\txNonIgnoredInd++;\n\t\t}\n\t}\n\n\tres.x = xNonIgnoredInd === 0 ? 0 : xind;\n\tres.y = view.order[pos.section];\n\t// var diff = scheduler._isRender('cell') ? 1 : 0;\n\n\t// firstCellXind is needed for cell mode when part of cols is rendered only\n\t// and defines correct shift for tooltip xind = xind - firstCellXind\n\t// where xind = current index, firstCellXind = first visible cell index\n\tvar firstCellXind = 0;\n\tif (view.scrollable && view.render === 'cell') {\n\t\t// define xind of first visible cell\n\t\tif (!view._scales[pos.section] || !view._scales[pos.section].querySelector('.dhx_matrix_cell')) return;\n\t\tvar firstCell = view._scales[pos.section].querySelector('.dhx_matrix_cell');\n\t\t\tif (!firstCell) return;\n\t\tvar fc_pos_x = firstCell.offsetLeft;\n\t\tif (fc_pos_x > 0) {\n\t\t\tvar end_date = scheduler._timeline_drag_date(view, fc_pos_x);\n\n\t\t\tfor (var i = 0; i < view._trace_x.length-1; i++) {\n\t\t\t\tif (+end_date < view._trace_x[i+1])\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfirstCellXind = i;\n\t\t}\n\t}\n\tres.src = view._scales[pos.section] ? view._scales[pos.section].querySelectorAll('.dhx_matrix_cell')[xind - firstCellXind] : null;\n\n\tvar isScale = false;\n\n\tvar scaleTarget = closest(trg, \".dhx_matrix_scell\");\n\tif(scaleTarget){\n\t\ttrg = scaleTarget;\n\t\tisScale = true;\n\t}\n\n\tif (isScale) { // Y scale\n\t\tres.x = -1;\n\t\tres.src = trg;\n\t\tres.scale = true;\n\t}\n\telse{\n\t\tres.x = xind;\n\t}\n\n\treturn res;\n};\n\nvar old_click = scheduler._click.dhx_cal_data;\nscheduler._click.dhx_marked_timespan = scheduler._click.dhx_cal_data = function(e){\n\tvar ret = old_click.apply(this,arguments);\n\tvar obj = scheduler.matrix[scheduler._mode];\n\tif (obj){\n\t\tvar pos = scheduler._locate_cell_timeline(e);\n\t\tif (pos){\n\t\t\tif (pos.scale)\n\t\t\t\tscheduler.callEvent(\"onYScaleClick\",[pos.y, obj.y_unit[pos.y], e]);\n\t\t\telse {\n\t\t\t\tscheduler.callEvent(\"onCellClick\", [pos.x, pos.y, obj._trace_x[pos.x], (((obj._matrix[pos.y] || {})[pos.x]) || []), e]);\n\t\t\t\tscheduler._timeline_set_scroll_pos(scheduler._els[\"dhx_cal_data\"][0], obj);\n\t\t\t}\n\t\t}\n\t}\n\treturn ret;\n};\n\nscheduler.dblclick_dhx_matrix_cell = function(e){\n\tvar obj = scheduler.matrix[scheduler._mode];\n\tif (obj){\n\t\tvar pos = scheduler._locate_cell_timeline(e);\n\t\tif (pos){\n\t\t\tif (pos.scale)\n\t\t\t\tscheduler.callEvent(\"onYScaleDblClick\",[pos.y, obj.y_unit[pos.y], e]);\n\t\t\telse\n\t\t\t\tscheduler.callEvent(\"onCellDblClick\",[pos.x, pos.y, obj._trace_x[pos.x], (((obj._matrix[pos.y]||{})[pos.x])||[]), e]);\n\t\t}\n\t}\n};\n\nvar old_dblclick_marked_timespan = scheduler.dblclick_dhx_marked_timespan || function(){};\nscheduler.dblclick_dhx_marked_timespan = function(e){\n\tvar obj = scheduler.matrix[scheduler._mode];\n\tif (obj)\n\t\treturn scheduler.dblclick_dhx_matrix_cell(e);\n\telse\n\t\treturn old_dblclick_marked_timespan.apply(this,arguments);\n};\n\nscheduler.dblclick_dhx_matrix_scell = function(e){\n\treturn scheduler.dblclick_dhx_matrix_cell(e);\n};\n\nscheduler._isRender = function(mode){\n\treturn (scheduler.matrix[scheduler._mode] && scheduler.matrix[scheduler._mode].render == mode);\n};\n\nscheduler.attachEvent(\"onCellDblClick\", function (x, y, a, b, event){\n\tif (this.config.readonly|| (event.type == \"dblclick\" && !this.config.dblclick_create)) return;\n\n\tvar obj = scheduler.matrix[scheduler._mode];\n\tvar event_options = {};\n\tevent_options.start_date = obj._trace_x[x];\n\tevent_options.end_date = (obj._trace_x[x+1]) ? obj._trace_x[x+1] : scheduler.date.add(obj._trace_x[x], obj.x_step, obj.x_unit);\n\n\tif (obj._start_correction)\n\t\tevent_options.start_date = new Date(event_options.start_date*1 + obj._start_correction);\n\tif (obj._end_correction)\n\t\tevent_options.end_date = new Date(event_options.end_date - obj._end_correction);\n\n\tevent_options[obj.y_property] = obj.y_unit[y].key;\n\tscheduler.addEventNow(event_options, null, event);\n});\n\nscheduler.attachEvent(\"onBeforeDrag\", function (event_id, mode, native_event_object){\n\treturn !scheduler._isRender(\"cell\");\n});\nscheduler.attachEvent(\"onEventChanged\", function(id, ev) {\n\tev._timed = this.isOneDayEvent(ev);\n});\nscheduler.attachEvent(\"onBeforeEventChanged\", function (ev, e, flag, ev_old) {\n\tif(ev){\n\t\tev._move_delta = undefined;\n\t}\n\tif(ev_old){\n\t\tev_old._move_delta = undefined;\n\t}\n\treturn true;\n});\n\nscheduler._is_column_visible = function(date){\n\tvar mode = scheduler.matrix[scheduler._mode];\n\tvar start_ind = scheduler._get_date_index(mode, date);\n\treturn !scheduler._ignores[start_ind];\n};\nvar old_render_marked_timespan = scheduler._render_marked_timespan;\nscheduler._render_marked_timespan = function(options, area, unit_id, min_date, max_date) {\n\tif (!scheduler.config.display_marked_timespans)\n\t\treturn [];\n\n\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\tif (scheduler._isRender('cell'))\n\t\t\treturn;\n\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\n\t\t//timespans must always use actual position, not rounded\n\t\tview_opts.round_position = false;\n\t\tvar blocks = [];\n\n\t\tvar units = [];\n\t\tvar areas = [];\n\t\tvar section = options.sections ? (options.sections.units || options.sections.timeline) : null;\n\t\tif (!unit_id) { // should draw for every unit...\n\t\t\tvar order = view_opts.order;\n\t\t\tif (section) { // ...or for only section if mentioned in configuration of timespan\n\t\t\t\tif (order.hasOwnProperty(section)) {\n\t\t\t\t\tunits.push(section);\n\t\t\t\t\tareas.push(view_opts._scales[section]);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(view_opts._scales) {\n\t\t\t\t\tfor (var key in order) {\n\t\t\t\t\t\tif (order.hasOwnProperty(key) && view_opts._scales[key]) {\n\t\t\t\t\t\t\tunits.push(key);\n\t\t\t\t\t\t\tareas.push(view_opts._scales[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tareas = [area];\n\t\t\tunits = [unit_id];\n\t\t}\n\n\t\tvar min_date = min_date ? new Date(min_date) : scheduler._min_date;\n\t\tvar max_date = max_date ? new Date(max_date) : scheduler._max_date;\n\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\n\t\t\tmin_date = new Date(scheduler._min_date);\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\n\t\t\tmax_date = new Date(scheduler._max_date);\n\n\t\tif(!view_opts._trace_x) return;\n\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\n\t\t\t\tbreak;\n\t\t}\n\t\tif(i == view_opts._trace_x.length)\n\t\t\treturn;\n\n\t\tvar dates = [];\n\n\t\tif (options.days > 6) {\n\t\t\tvar specific_date = new Date(options.days);\n\t\t\tif (scheduler.date.date_part(new Date(min_date)) <= +specific_date && +max_date >= +specific_date)\n\t\t\t\tdates.push(specific_date);\n\t\t} else {\n\t\t\tdates.push.apply(dates, scheduler._get_dates_by_index(options.days));\n\t\t}\n\n\t\tvar zones = options.zones;\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\n\n\t\tfor (var j=0; j start_date))\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tvar block = scheduler._get_block_by_config(options);\n\t\t\t\t\tblock.className = css_classes;\n\n\t\t\t\t\tvar start_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts)-1;\n\t\t\t\t\tvar end_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts)-1;\n\t\t\t\t\tvar width = Math.max(1, end_pos - start_pos - 1);\n\t\t\t\t\tvar height = ((view_opts._section_height[unit_id]-1) || (view_opts.dy - 1));\n\n\t\t\t\t\tblock.style.cssText = \"height: \"+height+\"px; \" + (scheduler.config.rtl ? \"right: \" :\"left: \")+start_pos+\"px; width: \"+width+\"px; top: 0;\";\n\n\t\t\t\t\tarea.insertBefore(block, area.firstChild);\n\t\t\t\t\tblocks.push(block);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn blocks;\n\n\t} else {\n\t\t\treturn old_render_marked_timespan.apply(scheduler, [options, area, unit_id]);\n\t}\n};\n\nvar old_append_mark_now = scheduler._append_mark_now;\nscheduler._append_mark_now = function(day_index, now) {\n\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\tvar n_date = scheduler._currentDate();\n\t\tvar zone_start = scheduler._get_zone_minutes(n_date);\n\t\tvar options = {\n\t\t\tdays: +scheduler.date.date_part(n_date),\n\t\t\tzones: [zone_start, zone_start+1],\n\t\t\tcss: \"dhx_matrix_now_time\",\n\t\t\ttype: \"dhx_now_time\"\n\t\t};\n\t\treturn scheduler._render_marked_timespan(options);\n\t} else {\n\t\treturn old_append_mark_now.apply(scheduler, [day_index, now]);\n\t}\n};\n\nvar oldTimespans = scheduler._mark_timespans;\nscheduler._mark_timespans = function(){\n\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\n\t\tvar divs = [];\n\n\t\tvar view = scheduler.matrix[scheduler.getState().mode];\n\t\tvar options = view.y_unit;\n\t\tfor(var i = 0; i < options.length; i++){\n\t\t\tvar unit_key = options[i].key;\n\t\t\tvar scale = view._scales[unit_key];\n\n\t\t\tvar r = scheduler._on_scale_add_marker(scale, unit_key);\n\t\t\tdivs.push.apply(divs, r);\n\t\t}\n\n\t\treturn divs;\n\t}else{\n\t\treturn oldTimespans.apply(this, arguments);\n\t}\n};\n\nvar on_scale_marker_add = scheduler._on_scale_add_marker;\nscheduler._on_scale_add_marker = function(scale, unit_key){\n\n\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\tvar divs = [];\n\t\tvar timespans = scheduler._marked_timespans;\n\n\t\tif (timespans && scheduler.matrix && scheduler.matrix[scheduler._mode]) {\n\t\t\tvar mode = scheduler._mode;\n\n\t\t\tvar min_date = scheduler._min_date;\n\t\t\tvar max_date = scheduler._max_date;\n\t\t\tvar global_data = timespans[\"global\"];\n\n\t\t\tfor (var t_date = scheduler.date.date_part(new Date(min_date)); t_date < max_date; t_date = scheduler.date.add(t_date, 1, \"day\")) {\n\t\t\t\tvar day_value = +t_date;\n\t\t\t\tvar day_index = t_date.getDay();\n\t\t\t\tvar r_configs = [];\n\n\t\t\t\tif(scheduler.config.overwrite_marked_timespans){\n\t\t\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\n\t\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\n\t\t\t\t} else {\n\t\t\t\t\tif(global_data[day_value]){\n\t\t\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\n\t\t\t\t\t}\n\t\t\t\t\tif(global_data[day_index]){\n\t\t\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (timespans[mode] && timespans[mode][unit_key]) {\n\t\t\t\t\tvar z_config = [];\n\t\t\t\t\tvar unit_types = scheduler._get_types_to_render(timespans[mode][unit_key][day_index], timespans[mode][unit_key][day_value]);\n\t\t\t\t\tz_config.push.apply(z_config, scheduler._get_configs_to_render(unit_types));\n\t\t\t\t\tif(scheduler.config.overwrite_marked_timespans){\n\t\t\t\t\t\tif(z_config.length){\n\t\t\t\t\t\t\tr_configs = z_config;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tr_configs = r_configs.concat(z_config);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (var i=0; i pos.y)\n\t\t\tbreak;\n\t}\n\n\tif(!view.y_unit[yind]) {\n\t\tyind=view.y_unit.length-1;\n\t}\n\tif(this._drag_event && !this._drag_event._orig_section){\n\t\tthis._drag_event._orig_section = view.y_unit[yind].key;\n\t}\n\n\tpos.fields = {};\n\tif (yind >= 0 && view.y_unit[yind]) {\n\t\tpos.section = pos.fields[view.y_property] = view.y_unit[yind].key;\n\t}\n};\nscheduler._update_timeline_section = function(action){\n\tvar view = action.view,\n\t\tevent = action.event,\n\t\tpos = action.pos;\n\n\tif (event) {\n\t\tif(event[view.y_property] != pos.section){\n\t\t\tvar line_height = this._get_timeline_event_height ? this._get_timeline_event_height(event, view) : view.getEventHeight(event);\n\t\t\tevent._sorder = this._get_dnd_order(event._sorder, line_height, view.getSectionHeight(pos.section));\n\t\t}\n\t\tevent[view.y_property] = pos.section;\n\t}\n};\nscheduler._get_date_index=function(config, date) {\n\tvar trace_x = config._trace_x;\n\n\tvar searchFrom = 0,\n\t\tsearchTo = trace_x.length - 1;\n\n\t// reduce search range with binary search\n\tvar dateValue = date.valueOf();\n\twhile(searchTo - searchFrom > 3){\n\t\tvar middle = searchFrom + Math.floor((searchTo - searchFrom)/2);\n\t\tif(trace_x[middle].valueOf() > dateValue){\n\t\t\tsearchTo = middle;\n\t\t}else{\n\t\t\tsearchFrom = middle;\n\t\t}\n\t}\n\n\tvar index = searchFrom;\n\twhile (index <= searchTo && +date >= +trace_x[index+1]) {\n\t\tindex++;\n\t}\n\treturn index;\n};\n\nscheduler._timeline_drag_date = function(timeline, pos_x){\n\tvar obj = timeline,\n\t\tpos = {x: pos_x};\n\n\tif(!obj._trace_x.length){\n\t\treturn new Date(scheduler.getState().date);\n\t}\n\n\tvar summ = 0, xind = 0;\n\tvar ratio,\n\t\tcolumn_width;\n\tfor (xind; xind <= this._cols.length-1; xind++) {\n\n\t\tcolumn_width = this._cols[xind];\n\t\tsumm += column_width;\n\t\tif (summ>pos.x){ //index of section\n\t\t\tratio = (pos.x-(summ-column_width))/column_width;\n\t\t\tratio = (ratio < 0) ? 0 : ratio;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(obj.round_position){\n\t\t// in case of click, or creating new event, mouse position will be always rounded to start date of the cell\n\t\t// when dragging - position can be rounded to the start date of the next column, in order to improve the usability\n\t\t// edge = 1 - always return start date of current cell\n\t\t// 0.5 - round to next cell if mouse in the right half of cell\n\t\tvar edge = 1;\n\t\tvar mode = scheduler.getState().drag_mode;\n\t\tif(mode && mode != \"move\" && mode != \"create\"){\n\t\t\tedge = 0.5;//rounding for resize\n\t\t}\n\t\tif(ratio >= edge){\n\t\t\txind++;\n\t\t}\n\t\tratio = 0;\n\t}\n\n\t//border cases\n\tif (xind === 0 && this._ignores[0]) {\n\t\txind = 1; ratio = 0;\n\t\twhile (this._ignores[xind]) xind++;\n\t} else if ( xind == this._cols.length && this._ignores[xind-1]) {\n\t\txind = this._cols.length-1; ratio = 0;\n\t\twhile (this._ignores[xind]) xind--;\n\t\txind++;\n\t}\n\n\tvar end_date;\n\t// if our event is at the end of the view\n\tif(xind >= obj._trace_x.length) {\n\t\tend_date = scheduler.date.add(obj._trace_x[obj._trace_x.length-1], obj.x_step, obj.x_unit);\n\t\tif (obj._end_correction)\n\t\t\tend_date = new Date(end_date-obj._end_correction);\n\t} else {\n\t\tvar timestamp_diff = ratio * column_width * obj._step + obj._start_correction;\n\t\tend_date = new Date(+obj._trace_x[xind]+timestamp_diff);\n\t}\n\treturn end_date;\n};\n\nscheduler.attachEvent(\"onBeforeTodayDisplayed\", function() {\n\tfor(var i in scheduler.matrix){\n\t\tvar obj = scheduler.matrix[i];\n\t\tobj.x_start = obj._original_x_start;\n\t}\n\treturn true;\n});\n\nscheduler.attachEvent(\"onOptionsLoad\",function(){\n\tfor(var i in scheduler.matrix){\n\t\tvar obj = scheduler.matrix[i];\n\n\t\tobj.order = {};\n\t\tscheduler.callEvent('onOptionsLoadStart', []);\n\t\tfor(var i=0; i dhx_timeline_scrollable_data\n\nexport default function(scheduler){\n\nfunction contains(section, eventId){\n\tfor(let i = 0; i < section.length; i++){\n\t\tif(section[i].id == eventId){\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nscheduler._timeline_smart_render = {\n\t_prepared_events_cache: null,\n\t_rendered_events_cache: [],\n\t_rendered_header_cache: [],\n\t_rendered_labels_cache: [],\n\t_rows_to_delete: [],\n\t_rows_to_add: [],\n\t_cols_to_delete: [],\n\t_cols_to_add: [],\n\n\tgetViewPort: function(scrollHelper, resizeHeight, scrollLeft, scrollTop){\n\t\t// top/left/height/width of viewport with scroll pos\n\t\tvar scrollBlock = scheduler.$container.querySelector(\".dhx_cal_data\");\n\t\tvar coords = scrollBlock.getBoundingClientRect();\n\n\t\tvar scrollableContainer = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\n\t\tif(scrollableContainer && scrollLeft === undefined){\n\t\t\tscrollLeft = scrollHelper.getScrollValue(scrollableContainer);\n\t\t}\n\t\tif(scrollTop === undefined){\n\t\t\tif(scrollableContainer){\n\t\t\t\tscrollTop = scrollableContainer.scrollTop;\n\t\t\t}else{\n\t\t\t\tscrollTop = scrollBlock.scrollTop;\n\t\t\t}\n\t\t}\n\n\t\tvar copy = {};\n\t\tfor(var i in coords){\n\t\t\tcopy[i] = coords[i];\n\t\t}\n\n\t\tcopy.scrollLeft = scrollLeft || 0;\n\t\tcopy.scrollTop = scrollTop || 0;\n\t\tif (resizeHeight)\n\t\t\tcoords.height = resizeHeight;\n\n\t\treturn copy;\n\t},\n\tisInXViewPort: function (item, viewPort) {\n\t\tvar viewPortLeft = viewPort.scrollLeft;\n\t\tvar viewPortRight = viewPort.width + viewPort.scrollLeft;\n\n\t\t// return true/false for item in/not in viewport on X axis\n\t\treturn (item.left < viewPortRight + 100 && item.right > viewPortLeft - 100); // +100 and -100 spreads viewport width\n\t},\n\tisInYViewPort: function (item, viewPort) {\n\t\tvar viewPortTop = viewPort.scrollTop;\n\t\tvar viewPortBottom = viewPort.height + viewPort.scrollTop;\n\n\t\t// return true/false for item in/not in viewport on Y axis\n\t\treturn (item.top < (viewPortBottom + 80) && item.bottom > viewPortTop - 80); // +30 and -30 spreads viewport height\n\t},\n\n\tgetVisibleHeader: function(view, viewPort) {\n\t\tvar curHeader = '';\n\t\tthis._rendered_header_cache = [];\n\n\t\tfor (var i in view._h_cols) {\n\t\t\tvar col = view._h_cols[i];\n\t\t\tif (this.isInXViewPort({left: col.left, right: col.left + scheduler._cols[i]}, viewPort)) {\n\t\t\t\tvar html = col.div.outerHTML;\n\t\t\t\tcurHeader += html;\n\n\t\t\t\tthis._rendered_header_cache.push(col.div.getAttribute(\"data-col-id\"));\n\t\t\t}\n\t\t}\n\n\t\treturn curHeader;\n\t},\n\n\tupdateHeader: function(view, viewPort, parent) {\n\t\tthis._cols_to_delete = [];\n\t\tthis._cols_to_add = [];\n\n\t\tvar headers = scheduler.$container.querySelectorAll(\".dhx_cal_header > div\");\n\t\tvar cells = headers[headers.length - 1].querySelectorAll(\".dhx_scale_bar\");// take cells of bottom scale\n\n\t\tvar visibleItems = [];\n\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\tvisibleItems.push(cells[i].getAttribute(\"data-col-id\"));\n\t\t}\n\n\t\t// find new elements\n\t\tvar res = this.getVisibleHeader(view, viewPort);\n\t\tif (!res)\n\t\t\treturn;\n\n\t\tvar renderers = this._rendered_header_cache.slice();\n\t\tvar itemsToDel = [];\n\n\t\tfor (var i = 0, len = visibleItems.length; i < len; i++) {\n\t\t\tvar pos = renderers.indexOf(visibleItems[i]);\n\t\t\tif ( pos > -1) {\n\t\t\t\trenderers.splice(pos, 1);\n\t\t\t} else {\n\t\t\t\titemsToDel.push(visibleItems[i]);\n\t\t\t}\n\t\t}\n\n\t\tif (itemsToDel.length) {\n\t\t\tthis._cols_to_delete = itemsToDel.slice();\n\t\t\tthis._deleteHeaderCells(itemsToDel, view, parent);\n\t\t}\n\t\tif (renderers.length) {\n\t\t\tthis._cols_to_add = renderers.slice();\n\t\t\tthis._addHeaderCells(renderers, view, parent);\n\t\t}\n\t},\n\n\t_deleteHeaderCells: function(items, view, parent) {\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\tvar item = parent.querySelector('[data-col-id=\"'+items[i]+'\"]');\n\t\t\tif(item){\n\t\t\t\tparent.removeChild(item);\n\t\t\t}\n\t\t}\n\t},\n\n\t_addHeaderCells: function(items, view, parent) {\n\t\tvar html = '';\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\thtml += view._h_cols[items[i]].div.outerHTML;\n\t\t}\n\n\t\tconst buffer = document.createElement('template');\n\t\tbuffer.innerHTML = html;\n\t\tparent.appendChild(buffer.content);\n\n\t},\n\n\tgetVisibleLabels: function(view, viewPort) {\n\t\tif (!view._label_rows.length) return;\n\n\t\tvar curLabelCol = '';\n\n\t\tthis._rendered_labels_cache = [];\n\t\tfor (var i = 0; i < view._label_rows.length; i++) {\n\t\t\tif (this.isInYViewPort({top: view._label_rows[i].top, bottom: view._label_rows[i].top + view._section_height[view.y_unit[i].key]}, viewPort)) {\n\t\t\t\tvar html = view._label_rows[i].div;\n\t\t\t\tcurLabelCol += html;\n\n\t\t\t\tthis._rendered_labels_cache.push(i);\n\t\t\t}\n\t\t}\n\n\t\treturn curLabelCol;\n\t},\n\n\tupdateLabels: function(view, viewPort, parent) {\n\t\tthis._rows_to_delete = [];\n\t\tthis._rows_to_add = [];\n\n\t\tlet visibleItems = [];\n\t\tconst gridRows = scheduler.$container.querySelectorAll(\".dhx_timeline_label_row\");\n\t\tgridRows.forEach((row) => {\n\t\t\tvisibleItems.push(Number(row.getAttribute(\"data-row-index\")));\n\t\t});\n\n\t\t// is it realy no visible items? check it again\n\t\tif (!visibleItems.length) {\n\t\t\tthis.getVisibleLabels(view, viewPort);\n\t\t\tvisibleItems = this._rendered_labels_cache.slice();\n\t\t}\n\n\t\t// find new elements\n\t\tvar res = this.getVisibleLabels(view, viewPort);\n\t\tif (!res)\n\t\t\treturn;\n\n\t\tvar renderers = this._rendered_labels_cache.slice();\n\n\t\tvar itemsToDel = [];\n\n\t\tfor (var i = 0, len = visibleItems.length; i < len; i++) {\n\t\t\tvar pos = renderers.indexOf(visibleItems[i]);\n\t\t\tif ( pos > -1) {\n\t\t\t\trenderers.splice(pos, 1);\n\t\t\t} else {\n\t\t\t\titemsToDel.push(visibleItems[i]);\n\t\t\t}\n\t\t}\n\n\t\tif (itemsToDel.length) {\n\t\t\tthis._rows_to_delete = itemsToDel.slice();\n\t\t\tthis._deleteLabelCells(itemsToDel, view, parent);\n\t\t}\n\t\tif (renderers.length) {\n\t\t\tthis._rows_to_add = renderers.slice();\n\t\t\tthis._addLabelCells(renderers, view, parent);\n\t\t}\n\t},\n\n\t_deleteLabelCells: function(items, view, parent) {\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\tvar item = parent.querySelector('[data-row-index=\"'+items[i]+'\"]');\n\t\t\tif(item){\n\t\t\t\tparent.removeChild(item);\n\t\t\t}\n\t\t}\n\t},\n\n\t_addLabelCells: function(items, view, parent) {\n\t\tvar html = '';\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\thtml += view._label_rows[items[i]].div;\n\t\t}\n\t\tconst buffer = document.createElement('template');\n\t\tbuffer.innerHTML = html;\n\t\tparent.appendChild(buffer.content);\n\t},\n\n\tclearPreparedEventsCache: function () {\n\t\tthis.cachePreparedEvents(null);\n\t},\n\tcachePreparedEvents: function(events){\n\t\tthis._prepared_events_cache = events;\n\t\tthis._prepared_events_coordinate_cache = events;\n\n\t},\n\n\tgetPreparedEvents: function(view){\n\t\tvar evs;\n\t\tif(this._prepared_events_cache){\n\t\t\tevs = this._prepared_events_cache;\n\n\t\t\tif(scheduler.getState().drag_id){\n\t\t\t\t// events grouped by sections\n\t\t\t\t// the whole structure is not updated during drag and drop\n\t\t\t\t// smart render needs moved event to be under right section here\n\t\t\t\t// manually place event under right section\n\t\t\t\tconst dragId = scheduler.getState().drag_id;\n\t\t\t\tlet stop = false;\n\t\t\t\t\n\n\t\t\t\tlet found = false;\n\n\t\t\t\tevs.forEach((section, index) => {\n\t\t\t\t\tif(stop){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst currentSectionId = view.y_unit[index];\n\t\t\t\t\tfor(let eventIndex = 0; eventIndex < section.length; eventIndex++){\n\t\t\t\t\t\tconst ev = section[eventIndex];\n\n\t\t\t\t\t\tif(ev.id == dragId){\n\n\t\t\t\t\t\t\tif(ev[view.y_property] !== currentSectionId){\n\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\tsection.splice(eventIndex, 1);\n\t\t\t\t\t\t\t\teventIndex--;\n\n\t\t\t\t\t\t\t\tconst actualEventSectionIndex = view.order[ev[view.y_property]];\n\t\t\t\t\t\t\t\tif(evs[actualEventSectionIndex] != section && evs[actualEventSectionIndex] && !contains(evs[actualEventSectionIndex], ev.id)){\n\t\t\t\t\t\t\t\t\tevs[actualEventSectionIndex].push(ev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tif(found){\n\t\t\t\t\t\tstop = true;\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t}\n\t\t}else{\n\t\t\tevs = scheduler._prepare_timeline_events(view);\n\t\t\tevs.$coordinates = {};\n\t\t\tthis.cachePreparedEvents(evs);\n\n\n\n\n\t\t\t//var x_start = scheduler._timeline_getX(evs[i][m], false, view);\n\t\t\t//\t\tvar x_end = scheduler._timeline_getX(evs[i][m], true, view);\n\t\t}\n\t\treturn evs;\n\t},\n\n\tupdateEvents: function(view, viewPort) {\n\t\tvar eventsBySections = this.getPreparedEvents(view);\n\n\t\tvar renderedEvents = this._rendered_events_cache.slice();\n\t\tthis._rendered_events_cache = [];\n\n\t\tvar grid = scheduler.$container.querySelector('.dhx_cal_data .dhx_timeline_data_col');\n\t\tif (!grid) return;\n\n\t\tconst willAdd = [];\n\t\tfor (var i = 0; i < this._rendered_labels_cache.length; i++) {\n\t\t\tvar row = this._rendered_labels_cache[i];\n\t\t\tvar eventsToAdd = [];\n\n\t\t\tconst sectionId = view.y_unit[row].key;\n\t\t\tvar visibleRowEvents = renderedEvents[row] ? renderedEvents[row].slice() : [];\n\t\t\tscheduler._timeline_calculate_event_positions.call(view, eventsBySections[row]);\n\t\t\tvar renderers = scheduler._timeline_smart_render.getVisibleEventsForRow(view, viewPort, eventsBySections, row);\n\n\t\t\tfor (var item = 0, lenRend = renderers.length; item < lenRend; item++) {\n\t\t\t\tvar pos = visibleRowEvents.indexOf(String(renderers[item].id));\n\t\t\t\tif ( pos > -1) {\n\n\t\t\t\t\tif(scheduler.getState().drag_id == renderers[item].id){\n\t\t\t\t\t\tfor(let r = 0; r < visibleRowEvents.length; r++){\n\t\t\t\t\t\t\tif(visibleRowEvents[r] == renderers[item].id && renderers[item][view.y_property] != sectionId){\n\t\t\t\t\t\t\t\tvisibleRowEvents.splice(r, 1);\n\t\t\t\t\t\t\t\tr--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvisibleRowEvents.splice(pos, 1);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\teventsToAdd.push(renderers[item]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(scheduler.getState().drag_id ) {\n\t\t\t\tconst evId = scheduler.getState().drag_id;\n\t\t\t\tconst draggableEvent = scheduler.getEvent(evId);\n\t\t\t\tif(scheduler._split_one_event && draggableEvent){\n\t\t\t\t\tconst multievs = [];\n\t\t\t\t\tif(draggableEvent[view.y_property] == sectionId){\n\t\t\t\t\t\teventsToAdd.push(draggableEvent);\n\t\t\t\t\t}\n\t\t\t\t\tscheduler._split_one_event(draggableEvent, view, multievs);\n\t\t\t\t\tmultievs.forEach(e => {\n\t\t\t\t\t\tif(e[view.y_property] == sectionId){\n\t\t\t\t\t\t\teventsToAdd.push(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else if(draggableEvent && draggableEvent[view.y_property] == sectionId){\n\t\t\t\t\teventsToAdd.push(draggableEvent);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar line = view._divBySectionId[sectionId];// grid.querySelector('[data-section-index=\"'+ row +'\"]');\n\t\t\tif(!line){\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (visibleRowEvents.length) {\n\t\t\t\tthis._deleteEvents(visibleRowEvents, view, line);\n\t\t\t}\n\t\t\t\n\t\t\tconst addEntry = {\n\t\t\t\tDOMParent: line,\n\t\t\t\tbuffer: document.createElement('template')\n\t\t\t};\n\t\t\twillAdd.push(addEntry);\n\t\t\tif (eventsToAdd.length) {\n\t\t\t\tthis._addEvents(eventsToAdd, view, addEntry.buffer, row);\n\t\t\t}\n\t\t}\n\n\t\twillAdd.forEach(function(rowEvents){\n\t\t\trowEvents.DOMParent.appendChild(rowEvents.buffer.content);\n\t\t});\n\t\tscheduler._populate_timeline_rendered(scheduler.$container);\n\t\tview._matrix = eventsBySections;\n\t},\n\n\t_deleteEvents: function(events, view, parent) {\n\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\tconst selector = '['+scheduler.config.event_attribute+'=\"'+ events[i] +'\"]';\n\t\t\tvar event = parent.querySelector(selector);\n\t\t\tif (event) {\n\t\t\t\tif (!event.classList.contains('dhx_in_move')){\n\t\t\t\t\tevent.remove();\n\t\t\t\t} else {\n\t\t\t\t\tconst parts = parent.querySelectorAll(selector);\n\n\t\t\t\t\tfor(let i = 0; i < parts.length;i++){\n\t\t\t\t\t\tif (!parts[i].classList.contains('dhx_in_move')){\n\t\t\t\t\t\t\tparts[i].remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_addEvents: function(events, view, parent, i) {\n\t\t// calculate height of all events but will render below only events in viewport\n\t\tvar events_html = scheduler._timeline_update_events_html.call(view, events);\n\t\tparent.innerHTML = events_html;\n\t},\n\n\tgetVisibleEventsForRow: function(view, viewPort, evs, rowIndex) {\n\t\t// get events only for viewport\n\t\tvar evsInViewport = [];\n\t\tif (view.render == \"cell\") {\n\t\t\tevsInViewport = evs;\n\t\t} else {\n\t\t\tvar rowEvents = evs[rowIndex];\n\t\t\tif (rowEvents) {\n\t\t\t\tfor (var m = 0, evLen = rowEvents.length; m < evLen; m++) {\n\t\t\t\t\tvar event = rowEvents[m];\n\t\t\t\t\tvar coordinateCacheKey = rowIndex + '_' + event.id;\n\t\t\t\t\tvar xStart, xEnd;\n\t\t\t\t\tif (evs.$coordinates && evs.$coordinates[coordinateCacheKey]) {\n\t\t\t\t\t\txStart = evs.$coordinates[coordinateCacheKey].xStart;\n\t\t\t\t\t\txEnd = evs.$coordinates[coordinateCacheKey].xEnd;\n\t\t\t\t\t} else {\n\t\t\t\t\t\txStart = scheduler._timeline_getX(event, false, view);\n\t\t\t\t\t\txEnd = scheduler._timeline_getX(event, true, view);\n\n\t\t\t\t\t\tif (evs.$coordinates) {\n\t\t\t\t\t\t\tevs.$coordinates[coordinateCacheKey] = {\n\t\t\t\t\t\t\t\txStart: xStart,\n\t\t\t\t\t\t\t\txEnd: xEnd\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (scheduler._timeline_smart_render.isInXViewPort({left: xStart, right: xEnd}, viewPort)) {\n\t\t\t\t\t\tevsInViewport.push(event);\n\n\t\t\t\t\t\t// save to cache\n\t\t\t\t\t\tif (!this._rendered_events_cache[rowIndex])\n\t\t\t\t\t\t\tthis._rendered_events_cache[rowIndex] = [];\n\t\t\t\t\t\tthis._rendered_events_cache[rowIndex].push(String(event.id));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn evsInViewport;\n\t},\n\n\tgetVisibleRowCellsHTML: function(view, viewPort, stats, evs, i) {\n\t\t// full render for new row uses _rendered_header_cache\n\t\t// that contains currently visible cols\n\t\tvar dataWrapper = '';\n\t\tvar cellLeftPos;\n\n\t\tvar visibleColumns = this._rendered_header_cache;\n\n\t\tfor (var ind = 0; ind < visibleColumns.length; ind++) {\n\t\t\tvar j = visibleColumns[ind];\n\n\t\t\tcellLeftPos = view._h_cols[j].left - view.dx;\n\n\t\t\tif (scheduler._ignores[j]){\n\n\t\t\t\tif (view.render == \"cell\"){\n\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_cell_ignores(stats);\n\t\t\t\t}else{\n\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar_ignores();\n\t\t\t\t}\n\t\t\t}else {\n\t\t\t\tif (view.render == \"cell\"){\n\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_cell(j, i, view, evs[i][j], stats, cellLeftPos);\n\t\t\t\t}else{\n\t\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar(j, i, view, evs[i], cellLeftPos);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dataWrapper;\n\t},\n\n\tgetVisibleTimelineRowsHTML: function(view, viewPort, evs, rowIndex) {\n\t\tvar dataWrapper = '';\n\t\tvar stats = scheduler._timeline_get_cur_row_stats(view, rowIndex);\n\t\tstats = scheduler._timeline_get_fit_events_stats(view, rowIndex, stats);\n\n\t\tvar cachedRow = view._label_rows[rowIndex];\n\n\t\tvar template = scheduler.templates[view.name + \"_row_class\"];\n\t\tvar templateParams = { view: view, section: cachedRow.section, template: template};\n\t\t// check vertical direction\n\t\tif (view.render == \"cell\") {\n\t\t\tdataWrapper += scheduler._timeline_get_html_for_cell_data_row(rowIndex, stats, cachedRow.top, cachedRow.section.key, templateParams);\n\t\t\tdataWrapper += this.getVisibleRowCellsHTML(view, viewPort, stats, evs, rowIndex);\n\t\t\tdataWrapper += '';\n\t\t} else {\n\t\t\t//section 2\n\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar_matrix_line(rowIndex, stats, cachedRow.top, cachedRow.section.key, templateParams);\n\n\t\t\t// section 3\n\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar_data_row(stats, templateParams);\n\t\t\tdataWrapper += this.getVisibleRowCellsHTML(view, viewPort, stats, evs, rowIndex);\n\t\t\tdataWrapper += \"\";\n\t\t}\n\n\t\treturn dataWrapper;\n\t},\n\n\tupdateGridRows: function(view, viewPort) {\n\t\tif (this._rows_to_delete.length) {\n\t\t\tthis._deleteGridRows(this._rows_to_delete, view);\n\t\t}\n\t\tif (this._rows_to_add.length) {\n\t\t\tthis._addGridRows(this._rows_to_add, view, viewPort);\n\t\t}\n\n\n\t},\n\n\t_deleteGridRows: function(items, view) {\n\t\tvar parent = scheduler.$container.querySelector('.dhx_cal_data .dhx_timeline_data_col');\n\t\tif (!parent) return;\n\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\tconst sectionId = view.y_unit[items[i]] ? view.y_unit[items[i]].key : null;\n\t\t\tif(view._divBySectionId[sectionId]){\n\t\t\t\tview._divBySectionId[sectionId].remove();\n\t\t\t\tdelete view._divBySectionId[sectionId];\n\t\t\t}\n\t\t\t//var item = parent.querySelector('[data-section-index=\"'+(items[i])+'\"]');\n\t\t\t//parent.removeChild(item);\n\t\t}\n\n\t\tthis._rows_to_delete = [];\n\t},\n\n\t_addGridRows: function(items, view, viewPort) {\n\t\tvar parent = scheduler.$container.querySelector('.dhx_cal_data .dhx_timeline_data_col');\n\t\tif (!parent) return;\n\n\t\tvar evs = this.getPreparedEvents(view);\n\n\t\tvar html = '';\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\thtml += this.getVisibleTimelineRowsHTML(view, viewPort, evs, items[i]);\n\n\t\t}\n\t\tconst buffer = document.createElement('template');\n\t\tbuffer.innerHTML = html;\n\t\tparent.appendChild(buffer.content);\n\n\t\t//view._divBySectionId[items[i]].remove();\n\t\t//delete view._divBySectionId[items[i]];\n\t\tvar parent = scheduler.$container.querySelector('.dhx_cal_data .dhx_timeline_data_col');\n\t\tview._divBySectionId = {};\n\t\tfor(let i = 0, len = parent.children.length; i < len; i++){\n\t\t\tvar child = parent.children[i];\n\t\t\tif(child.hasAttribute(\"data-section-id\")){\n\t\t\t\tview._divBySectionId[child.getAttribute(\"data-section-id\")] = child;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\tconst sectionId = view.y_unit[items[i]] ? view.y_unit[items[i]].key : null;\n\t\t\tscheduler._timeline_finalize_section_add(view, view.y_unit[items[i]].key, view._divBySectionId[sectionId]);\n\t\t}\n\t\tif (scheduler._mark_now) {\n\t\t\tscheduler._mark_now();\n\t\t}\n\t\tthis._rows_to_add = [];\n\t},\n\n\tupdateGridCols: function(view, viewPort) {\n\t\tvar visibleHeaderColumns = this._rendered_header_cache;\n\n\t\tvar visibleHeaderColumnsHash = {};\n\t\tfor(var i = 0; i < visibleHeaderColumns.length; i++){\n\t\t\tvisibleHeaderColumnsHash[visibleHeaderColumns[i]] = true;\n\t\t}\n\n\t\tconst allRows = scheduler.$container.querySelectorAll(\".dhx_timeline_data_row\");\n\t\tallRows.forEach((function(row){\n\t\t\tconst allCells = row.querySelectorAll(\"[data-col-id]\");\n\n\t\t\tconst renderedCells = Array.prototype.reduce.call(allCells, function(hash, cell){\n\t\t\t\thash[cell.dataset.colId] = cell;\n\t\t\t\treturn hash;\n\t\t\t}, {});\n\n\t\t\tvar shouldDelete = [],\n\t\t\tshouldRender = [];\n\t\t\tfor(var i in renderedCells){\n\t\t\t\tif(!visibleHeaderColumnsHash[i]){\n\t\t\t\t\tshouldDelete.push(renderedCells[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var i in visibleHeaderColumnsHash){\n\t\t\t\tif(!renderedCells[i]){\n\t\t\t\t\tshouldRender.push(i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tshouldDelete.forEach(function(cell){\n\t\t\t\tcell.remove();\n\t\t\t});\n\t\t\tif(shouldRender.length){\n\t\t\t\tthis._addGridCols(row, shouldRender, view, viewPort);\n\t\t\t}\n\t\t\t\t\n\t\t\t\n\t\t}).bind(this));\n\t},\n\n\t_addGridCols: function(row, items, view, viewPort) {\n\t\tvar grid = scheduler.$container.querySelector('.dhx_cal_data .dhx_timeline_data_col');\n\t\tif (!grid) return;\n\n\t\tvar evs = this.getPreparedEvents(view);\n\n\t\tconst sectionId = row.closest(\"[data-section-id]\").getAttribute(\"data-section-id\");\n\t\tconst sectionIndex = view.order[sectionId];\n\t\tvar html = '';\n\t\tvar stats = scheduler._timeline_get_cur_row_stats(view, sectionIndex);\n\t\tstats = scheduler._timeline_get_fit_events_stats(view, sectionIndex, stats);\n\n\t\tvar parent = row;\n\n\n\t\tif (parent) {\n\t\t\tfor (var j = 0; j < items.length; j++) {\n\t\t\t\tvar item = parent.querySelector('[data-col-id=\"'+items[j]+'\"]');\n\n\t\t\t\tif (!item) {\n\t\t\t\t\tvar cell = this.getVisibleGridCell(view, viewPort, stats, evs, sectionIndex, items[j]);\n\t\t\t\t\tif (cell)\n\t\t\t\t\t\thtml += cell;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst buffer = document.createElement('template');\n\t\t\tbuffer.innerHTML = html;\n\t\t\tparent.appendChild(buffer.content);\n\t\t}\n\n\t\t//this._cols_to_add = [];\n\t},\n\n\tgetVisibleGridCell: function(view, viewPort, stats, evs, rowIndex, cellIndex) {\n\t\tif (!view._h_cols[cellIndex]) return;\n\t\tvar dataWrapper = '';\n\t\tvar cellLeftPos = view._h_cols[cellIndex].left-view.dx;\n\n\t\tif (view.render == \"cell\") {\n\t\t\tif (scheduler._ignores[cellIndex]){\n\t\t\t\t//dataWrapper += scheduler._timeline_get_html_for_cell_ignores(stats);\n\t\t\t}else {\n\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_cell(cellIndex, rowIndex, view, evs[rowIndex][cellIndex], stats, cellLeftPos);\n\t\t\t}\n\t\t} else {\n\t\t\tif (scheduler._ignores[cellIndex]){\n\t\t\t\t//dataWrapper += scheduler._timeline_get_html_for_bar_ignores();\n\t\t\t}else {\n\t\t\t\tdataWrapper += scheduler._timeline_get_html_for_bar(cellIndex, rowIndex, view, evs[rowIndex], cellLeftPos);\n\t\t\t}\n\t\t}\n\n\t\treturn dataWrapper;\n\t}\n};\n\nscheduler.attachEvent(\"onClearAll\", function(){\n\tscheduler._timeline_smart_render._prepared_events_cache = null;\n\tscheduler._timeline_smart_render._rendered_events_cache = [];\n});\nscheduler.attachEvent(\"onBeforeLightbox\", function(){\n\tscheduler._timeline_smart_render.clearPreparedEventsCache();\n\treturn true;\n});\n\n/* timeline smart render end */\n\n}","import { TooltipManager } from \"./tooltipManager\";\n\nexport default function (scheduler: any) {\n\n\tscheduler.config.tooltip_timeout = 30;\n\tscheduler.config.tooltip_offset_y = 20;\n\tscheduler.config.tooltip_offset_x = 10;\n\tscheduler.config.tooltip_hide_timeout = 30;\n\n\tconst tooltipManager = new TooltipManager(scheduler);\n\n\tscheduler.ext.tooltips = tooltipManager;\n\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\n\n\t\ttooltipManager.tooltipFor({\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\n\t\t\thtml: (event: MouseEvent) => {\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\tglobal: false\n\t\t});\n\t});\n\n\tscheduler.attachEvent(\"onDestroy\", function () {\n\t\ttooltipManager.destructor();\n\t});\n\n\tscheduler.attachEvent(\"onLightbox\", function () {\n\t\ttooltipManager.hideTooltip();\n\t});\n\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\n\t\t// GS-2377: don't hide tooltip on mobile device when ontouchstart event occurs\n\t\tif (scheduler._mobile && scheduler.config.touch_tooltip) {\n\t\t\treturn true;\n\t\t}\n\t\ttooltipManager.hideTooltip();\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\n\t\ttooltipManager.hideTooltip();\n\t\treturn true;\n\t});\n\n}","export default function(scheduler){\n\nscheduler.attachEvent(\"onTimelineCreated\", function (obj){\n\n\tif(obj.render == \"tree\") {\n\t\tobj.y_unit_original = obj.y_unit;\n\t\tobj.y_unit = scheduler._getArrayToDisplay(obj.y_unit_original);\n\n scheduler.attachEvent('onOptionsLoadStart', function(){\n obj.y_unit = scheduler._getArrayToDisplay(obj.y_unit_original);\n });\n\n\t\tscheduler.form_blocks[obj.name]={\n\t\t\trender:function(sns) {\n\t\t\t\tvar _result = \"
\";\n\t\t\t\treturn _result;\n\t\t\t},\n\t\t\tset_value:function(node,value,ev,config){\n\t\t\t\tvar options = scheduler._getArrayForSelect(scheduler.matrix[config.type].y_unit_original, config.type);\n\t\t\t\tnode.innerHTML = '';\n\t\t\t\tvar temp_select = document.createElement('select');\n\t\t\t\tnode.appendChild(temp_select);\n\n\t\t\t\tvar select = node.getElementsByTagName('select')[0];\n\n\t\t\t\tif (!select._dhx_onchange && config.onchange) {\n\t\t\t\t\tselect.addEventListener('change', config.onchange);\n\t\t\t\t\tselect._dhx_onchange = true;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < options.length; i++) {\n\t\t\t\t\tvar temp_option = document.createElement('option');\n\t\t\t\t\ttemp_option.value = options[i].key;\n\t\t\t\t\tif(temp_option.value == ev[scheduler.matrix[config.type].y_property])\n\t\t\t\t\t\ttemp_option.selected = true;\n\t\t\t\t\ttemp_option.innerHTML = options[i].label;\n\t\t\t\t\tselect.appendChild(temp_option);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget_value:function(node,ev,config){\n\t\t\t\treturn node.firstChild.value;\n\t\t\t},\n\t\t\tfocus:function(node){\n\t\t\t}\n\t\t};\n\n\n\t}\n});\n\nscheduler.attachEvent(\"onBeforeSectionRender\", function (render_name, y_unit, timeline){\n\tvar res = {};\n\tif(render_name == \"tree\"){\n\t\tvar height;\n\t\t// section 1\n\t\tvar tr_className, style_height, td_className;\n\t\tvar div_expand;\n\t\t// section 3\n\t\tvar table_className;\n\n\t\ttd_className = \"dhx_matrix_scell dhx_treetimeline\";\n\t\tif(y_unit.children) {\n\t\t\theight = timeline.folder_dy||timeline.dy;\n\t\t\tif(timeline.folder_dy && !timeline.section_autoheight) {\n\t\t\t\tstyle_height = \"height:\"+timeline.folder_dy+\"px;\";\n\t\t\t}\n\t\t\ttr_className = \"dhx_row_folder\";\n\t\t\ttd_className += \" folder\";\n\t\t\tif(y_unit.open){\n\t\t\t\ttd_className += \" opened\";\n\t\t\t}else{\n\t\t\t\ttd_className += \" closed\";\n\t\t\t}\n\t\t\tdiv_expand = \"
\";\n\t\t\ttable_className = (timeline.folder_events_available)?\"dhx_data_table folder_events\":\"dhx_data_table folder\";\n\t\t} else {\n\t\t\theight = timeline.dy;\n\t\t\ttr_className = \"dhx_row_item\";\n\t\t\ttd_className += \" item\";\n\t\t\tdiv_expand = '';\n\t\t\ttable_className = \"dhx_data_table\";\n\t\t}\n\t\t\n\t\tif(timeline.columns){\n\t\t\ttd_className += \" dhx_matrix_scell_columns\";\n\t\t}\n\n\t\ttd_className += (scheduler.templates[timeline.name+\"_scaley_class\"](y_unit.key, y_unit.label, y_unit) ?\n\t\t\t\" \"+scheduler.templates[timeline.name+\"_scaley_class\"](y_unit.key, y_unit.label, y_unit) : '');\n\n\t\tvar td_content;\n\t\tif(timeline.columns && timeline.columns.length){\n\t\t\ttd_content = \"
\"+div_expand+\"
\" + (scheduler.templates[timeline.name+'_scale_label'](y_unit.key, y_unit.label, y_unit)||y_unit.label)+\"
\";\n\t\t}else{\n\t\t\ttd_content = \"
\"+div_expand+\"
\"+(scheduler.templates[timeline.name+'_scale_label'](y_unit.key, y_unit.label, y_unit)||y_unit.label)+\"
\";\n\t\t}\n\t\n\t\tres = {\n\t\t\theight: height,\n\t\t\tstyle_height: style_height,\n\t\t\t//section 1\n\t\t\ttr_className: tr_className,\n\t\t\ttd_className: td_className,\n\t\t\ttd_content: td_content,\n\t\t\t//section 3\n\t\t\ttable_className: table_className\n\t\t};\n\t}\n\treturn res;\n});\n\nvar section_id_before; // section id of the event before dragging (to bring it back if user drop's event on folder without folder_events_available)\n\nscheduler.attachEvent(\"onBeforeEventChanged\", function(event_object, native_event, is_new) {\n\tif (scheduler._isRender(\"tree\")) { // if mode's render == tree\n\n\t\tvar ev_sections = scheduler._get_event_sections ? scheduler._get_event_sections(event_object) : [event_object[scheduler.matrix[scheduler._mode].y_property]];\n\t\tfor(var i = 0; i < ev_sections.length; i++){\n\t\t\tvar section = scheduler.getSection(ev_sections[i]);\n\t\t\tif (section && !!section.children && !scheduler.matrix[scheduler._mode].folder_events_available) { // section itself could be not defined in case of new event (addEventNow)\n\t\t\t\tif (!is_new) { //if old - move back\n\t\t\t\t\tevent_object[scheduler.matrix[scheduler._mode].y_property] = section_id_before;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n});\n\nscheduler.attachEvent(\"onBeforeDrag\", function (event_id, mode, native_event_object){\n\tif(scheduler._isRender(\"tree\")) {\n\t\tvar cell = scheduler._locate_cell_timeline(native_event_object);\n\t\tvar section_id;\n\t\tif(cell) {\n\t\t\tsection_id = scheduler.matrix[scheduler._mode].y_unit[cell.y].key;\n\t\t\tif(!!scheduler.matrix[scheduler._mode].y_unit[cell.y].children && !scheduler.matrix[scheduler._mode].folder_events_available) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar ev = scheduler.getEvent(event_id);\n\t\tvar property = scheduler.matrix[scheduler._mode].y_property;\n\n\t\tsection_id_before = (ev && ev[property]) ? ev[property] : section_id; // either event id or section_id will be available\n\t}\n\treturn true;\n});\n\nscheduler._getArrayToDisplay = function(array){ // function to flatten out hierarhical array, used for tree view\n\tvar result = [];\n\tvar fillResultArray = function(array, lvl, parent, skip){\n\t\tvar level = lvl||0;\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tvar node = array[i];\n\t\t\tnode.level = level;\n\t\t\tnode.$parent = parent || null;\n\t\t\tif (!!node.children && typeof node.key == \"undefined\") {\n\t\t\t\tnode.key = scheduler.uid();\n\t\t\t}\n\n\t\t\tif (!skip) {\n\t\t\t\tresult.push(node);\n\t\t\t}\n\n\t\t\tif(node.children) {\n\t\t\t\tfillResultArray(node.children, level+1, node.key, skip || !node.open);\n\t\t\t}\n\t\t}\n\t};\n\tfillResultArray(array);\n\treturn result;\n};\n\n\nscheduler._getArrayForSelect = function(array, mode){ // function to flatten out hierarhical array, used for tree view\n\tvar result = [];\n\tvar fillResultArray = function(array){\n\t\tfor(var i=0; i open)\n scheduler._toggleFolderDisplay(4, true) -- open section with the key 4 (doesn't matter what status was before). False - close.\n scheduler._toggleFolderDisplay(4, false, true) -- close ALL sections. Key is not used in such condition.\n */\nscheduler._toggleFolderDisplay = function(key, status, all_sections){ // used for tree view\n\tvar marked;\n\tvar toggleElement = function(key, array, status, all_sections) {\n\t\tfor (var i=0; ischeduler._props[name].options.length){\n scheduler._props[name]._original_size = size;\n size = 0;\n }\n scheduler._props[name].size = size;\n\tscheduler._props[name].skip_incorrect = skip_incorrect||false;\n\n\tscheduler.date[name+\"_start\"]= scheduler.date.day_start;\n\tscheduler.templates[name+\"_date\"] = function(date, end_date){\n\t\tvar pr = scheduler._props[name];\n\t\tif(!(pr.days > 1)){\n\t\t\treturn scheduler.templates.day_date(date);\n\t\t}else{\n\t\t\treturn scheduler.templates.week_date(date, end_date);\n\t\t}\n\t};\n\n\tfunction getDateIndex(date) {\n\t\treturn Math.round((scheduler._correct_shift(+date, 1) - +scheduler._min_date) / (60 * 60 * 24 * 1000));\n\t}\n\n\tscheduler._get_unit_index = function(unit_view, date) {\n\t\tvar original_position = unit_view.position || 0;\n\t\tvar date_position = getDateIndex(date);\n\n\t\tvar l = unit_view.size || unit_view.options.length;\n\t\tif(date_position >= l) {\n\t\t\tdate_position = date_position % l;\n\t\t}\n\n\t\treturn original_position + date_position;\n\t};\n\tscheduler.templates[name + \"_scale_text\"] = function(id, label, option) {\n\t\tif (option.css) {\n\t\t\treturn \"\" + label + \"\";\n\t\t} else {\n\t\t\treturn label;\n\t\t}\n\t};\n\tscheduler.templates[name+\"_scale_date\"] = function(date) {\n\t\tvar unit_view = scheduler._props[name];\n\t\tvar list = unit_view.options;\n\t\tif (!list.length) return \"\";\n\t\tvar index = scheduler._get_unit_index(unit_view, date);\n\t\tvar option = list[index];\n\n\t\tvar dateIndex = getDateIndex(date);\n\t\tvar length = unit_view.size || unit_view.options.length;\n\t\tvar realDate = scheduler.date.add(scheduler.getState().min_date, Math.floor(dateIndex / length), \"day\");\n\n\t\treturn scheduler.templates[name + \"_scale_text\"](option.key, option.label, option, realDate);\n\t};\n\tscheduler.templates[name+\"_second_scale_date\"] = function(date) {\n\t\treturn scheduler.templates.week_scale_date(date);\n\t};\n\n\tscheduler.date[\"add_\"+name]=function(date,inc){\n\t\treturn scheduler.date.add(date,inc * scheduler._props[name].days,\"day\");\n\t};\n\tscheduler.date[\"get_\"+name+\"_end\"]=function(date){\n\t\treturn scheduler.date.add(date,(scheduler._props[name].size||scheduler._props[name].options.length)*scheduler._props[name].days,\"day\");\n\t};\n\n\tscheduler.attachEvent(\"onOptionsLoad\",function(){\n var pr = scheduler._props[name];\n\t\tvar order = pr.order = {};\n\t\tvar list = pr.options;\n\t\tfor(var i=0; i list.length) {\n pr._original_size = pr.size;\n pr.position = 0;\n pr.size = 0;\n }\n else\n pr.size = pr._original_size||pr.size;\n\t\tif (scheduler._date && scheduler._mode == name)\n\t\t\tscheduler.setCurrentView(scheduler._date, scheduler._mode);\n\t});\n\n\tscheduler[\"mouse_\"+ name] = function(pos){ //mouse_coord handler\n\t\tvar pr = scheduler._props[this._mode];\n\n\t\tif (pr){\n\t\t\tpos = this._week_indexes_from_pos(pos);\n\t\t\tif(!this._drag_event) this._drag_event = {};\n\n\t\t\tif (this._drag_id && this._drag_mode){\n\t\t\t\tthis._drag_event._dhx_changed = true;\n\t\t\t}\n\n\n\t\t\tif(this._drag_mode && this._drag_mode == \"new-size\"){\n\t\t\t\tvar sday = scheduler._get_event_sday(scheduler._events[scheduler._drag_id]);\n\t\t\t\tif(Math.floor(pos.x / pr.options.length) != Math.floor(sday / pr.options.length))\n\t\t\t\t\tpos.x = sday;\n\t\t\t}\n\n\t\t\tvar size = (pr.size || pr.options.length);\n\t\t\tvar section_ind = pos.x % size;\n\t\t\tvar unit_ind = Math.min(section_ind+pr.position,pr.options.length-1);\n\n\t\t\tpos.section = (pr.options[unit_ind]||{}).key;\n\t\t\tpos.x = Math.floor(pos.x / size);\n\n\t\t\tvar ev = this.getEvent(this._drag_id);\n\t\t\tthis._update_unit_section({view:pr, event:ev, pos:pos});\n\t\t}\n\t\tpos.force_redraw = true;\n\n\t\treturn pos;\n\t};\n\n\tvar headerResized = false;\n\n\tfunction setHeaderSize(){\n\t\tif(!headerResized){\n\t\t\theaderResized = scheduler.xy.scale_height;\n\t\t\tscheduler.xy.scale_height = scheduler.xy.scale_height * 2;\n\t\t}\n\t}\n\tfunction revertHeaderSize(){\n\t\tif(headerResized){\n\t\t\tscheduler.xy.scale_height /= 2;\n\t\t\theaderResized = false;\n\t\t}\n\t}\n\n\tscheduler[name + \"_view\"] = function(enable){\n\t\tvar pr = scheduler._props[scheduler._mode];\n\t\tif(enable){\n\t\t\tif (pr && pr.days > 1){\n\t\t\t\tsetHeaderSize();\n\t\t\t}else{\n\t\t\t\trevertHeaderSize();\n\t\t\t}\n\t\t\tscheduler._reset_scale();\n\t\t}else{\n\t\t\trevertHeaderSize();\n\t\t}\n\t};\n\n\tscheduler.callEvent(\"onOptionsLoad\",[]);\n};\n\nscheduler._update_unit_section = function(action){\n\tvar view = action.view,\n\t\tevent = action.event,\n\t\tpos = action.pos;\n\tif(event) {\n\t\tevent[view.map_to] = pos.section;\n\t}\n};\n\nscheduler.scrollUnit=function(step){\n\tvar pr = scheduler._props[this._mode];\n\tif (pr){\n\t\tpr.position=Math.min(Math.max(0,pr.position+step),pr.options.length-pr.size);\n\t\tthis.setCurrentView();\n\t}\n};\n(function(){\n\tvar _removeIncorrectEvents = function(evs) {\n\t\tvar pr = scheduler._props[scheduler._mode];\n\t\tif(pr && pr.order && pr.skip_incorrect) {\n var correct_events = [];\n\t\t\tfor(var i=0; i= pr.size+pr.position )\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\tvar old_process_ignores = scheduler._process_ignores;\n\n\tscheduler._process_ignores = function(sd, n, mode, step, preserve){\n\t\tif(!scheduler._props[this._mode]){\n\t\t\told_process_ignores.call(this, sd, n, mode, step, preserve);\n\t\t\treturn;\n\t\t}\n\t\tthis._ignores={};\n\t\tthis._ignores_detected = 0;\n\t\tvar ignore = scheduler[\"ignore_\"+this._mode];\n\n\t\tif (ignore){\n\t\t\tvar sectionsCount = (scheduler._props && scheduler._props[this._mode] ?\n\t\t\t\t(scheduler._props[this._mode].size||scheduler._props[this._mode].options.length) : 1);\n\t\t\tn /= sectionsCount;\n\n\t\t\tvar ign_date = new Date(sd);\n\t\t\tfor (var i=0; i pr.options.length){\n\t\t\t\tpr.position = Math.max(0, pr.options.length - pr.size);\n\t\t\t}else if(!pr.size){\n\t\t\t\tpr.position = 0;\n\t\t\t}\n\t\t}\n\n\t\tvar ret = t.apply(this,arguments);\n\t\tif (pr){\n\n\t\t\tthis._max_date = this.date.add(this._min_date,pr.days,\"day\");\n\n\t\t\tvar d = this._els[\"dhx_cal_data\"][0].childNodes;\n\t\t\tfor (var i=0; i < d.length; i++)\n\t\t\t\td[i].classList.remove(\"dhx_scale_holder_now\"); \n\n\t\t\t// set background for current date\n\t\t\tvar today = this._currentDate();\n\t\t\tif(today.valueOf() >= this._min_date && today.valueOf() < this._max_date) {\n\t\t\t\tvar dx = 24*60*60*1000;\n\t\t\t\tvar ind = Math.floor((today - scheduler._min_date)/dx);\n\t\t\t\tvar units_l = pr.size || pr.options.length;\n\t\t\t\tvar today_start = ind*units_l;\n\t\t\t\tvar today_end = today_start + units_l;\n\t\t\t\tfor (i=today_start; i 1) {\n\t\t\tvar dd = this._get_timeunit_start();\n\t\t\treturn scheduler.date.add(dd, pr.days, \"day\");\n\t\t}else{\n\t\t\treturn _get_view_end.apply(this, arguments);\n\t\t}\n\t};\n\n\tvar xh = scheduler._render_x_header;\n\tscheduler._render_x_header = function(i, left, d, h) {\n\n\t\tvar pr = scheduler._props[this._mode];\n\t\tif(!pr || pr.days <= 1) {\n\t\t\treturn xh.apply(this, arguments);\n\t\t}else if(pr.days > 1){\n\n\t\t\tvar headerWrapper = h.querySelector(\".dhx_second_cal_header\");\n\t\t\tif(!headerWrapper){\n\t\t\t\theaderWrapper = document.createElement(\"div\");\n\t\t\t\theaderWrapper.className = \"dhx_second_cal_header\";\n\t\t\t\th.appendChild(headerWrapper);\n\t\t\t}\n\n\t\t\tvar scale_height = scheduler.xy.scale_height;\n\t\t\tscheduler.xy.scale_height = Math.ceil(scale_height / 2);\n\t\t\txh.call(this, i, left, d, headerWrapper, Math.ceil(scheduler.xy.scale_height));\n\n\t\t\tvar units_l = pr.size || pr.options.length;\n\t\t\t// second scale\n\t\t\tif( (i+1)%units_l === 0 ) {\n\t\t\t\tvar head = document.createElement(\"div\");\n\t\t\t\thead.className = \"dhx_scale_bar dhx_second_scale_bar\";\n\t\t\t\tvar date = this.date.add(this._min_date, Math.floor(i/units_l), \"day\");\n\t\t\t\tif (this.templates[this._mode + \"_second_scalex_class\"]) {\n\t\t\t\t\thead.className += ' ' + this.templates[this._mode + \"_second_scalex_class\"](new Date(date));\n\t\t\t\t}\n\t\t\t\tvar s_left,\n\t\t\t\t\ts_width = this._cols[i]*units_l;\n\t\t\t\tif(units_l > 1 && this.config.rtl) {\n\t\t\t\t\ts_left = this._colsS[i-(units_l-1)] - this.xy.scroll_width; \n\t\t\t\t} else if (units_l > 1) {\n\t\t\t\t\ts_left = this._colsS[i-(units_l-1)] - this.xy.scale_width;\n\t\t\t\t} else {\n\t\t\t\t\ts_left = left;\n\t\t\t\t}\n\n\n\t\t\t\tthis.set_xy(head, s_width, this.xy.scale_height, s_left, 0); \n\t\t\t\thead.innerHTML = this.templates[this._mode + \"_second_scale_date\"](new Date(date), this._mode); //TODO - move in separate method\n\t\t\t\theaderWrapper.appendChild(head);\n\t\t\t}\n\t\t\tscheduler.xy.scale_height = scale_height;\n\t\t}\n\t};\n\n\tvar r = scheduler._get_event_sday;\n\tscheduler._get_event_sday=function(ev){\n\t\tvar pr = scheduler._props[this._mode];\n\t\tif (pr){\n\t\t\tif(pr.days <= 1){\n\t\t\t\tfix_und(pr,ev);\n\t\t\t\treturn this._get_section_sday(ev[pr.map_to]);\n\t\t\t}else{\n\t\t\t\tvar dx = 24*60*60*1000;\n\t\t\t\tvar ind = Math.floor(((ev.end_date.valueOf()-1 - ev.end_date.getTimezoneOffset() * 60 * 1000) -// -1 for events with 00:00 end time\n\t\t\t\t\t(scheduler._min_date.valueOf() - scheduler._min_date.getTimezoneOffset() * 60 * 1000))/dx);\n\n\t\t\t\tvar units_l = pr.size || pr.options.length;\n\t\t\t\tvar section_index = pr.order[ev[pr.map_to]];\n\t\t\t\treturn ( ind * units_l + section_index ) - pr.position;\n\t\t\t}\n\n\t\t}\n\t\treturn r.call(this,ev);\n\t};\n\tscheduler._get_section_sday = function(section){\n\t\tvar pr = scheduler._props[this._mode];\n\t\treturn pr.order[section]-pr.position;\n\t};\n\n\tvar l = scheduler.locate_holder_day;\n\tscheduler.locate_holder_day=function(a,b,ev) {\n\t\tvar pr = scheduler._props[this._mode];\n\t\tif (!pr) {\n\t\t\treturn l.apply(this, arguments);\n\t\t}\n\t\tvar section;\n\t\tif (!ev) {\n\t\t\tev = {\n\t\t\t\tstart_date: a,\n\t\t\t\tend_date: a\n\t\t\t};\n\t\t\tsection = 0;\n\t\t}\n\t\telse {\n\t\t\tfix_und(pr, ev);\n\t\t}\n\t\tif (pr.days <= 1) {\n\t\t\treturn (section === undefined ? pr.order[ev[pr.map_to]] : section) * 1 + (b ? 1 : 0) - pr.position;\n\t\t} else {\n\t\t\tvar dx = 24 * 60 * 60 * 1000;\n\t\t\tvar ind = Math.floor((ev.start_date.valueOf() - scheduler._min_date.valueOf()) / dx); // -1 for events with 00:00 end time\n\t\t\tvar units_l = pr.size || pr.options.length;\n\t\t\tvar section_index = section === undefined ? pr.order[ev[pr.map_to]] : section;\n\t\t\treturn (ind * units_l + section_index * 1) + (b ? 1 : 0) - pr.position;\n\t\t}\n\t};\n\n\tvar o = scheduler._time_order;\n\tscheduler._time_order = function(evs){\n\t\tvar pr = scheduler._props[this._mode];\n\t\tif (pr){\n\t\t\tevs.sort(function(a,b){\n\t\t\t\treturn pr.order[a[pr.map_to]]>pr.order[b[pr.map_to]]?1:-1;\n\t\t\t});\n\t\t} else\n\t\t\to.apply(this,arguments);\n\t};\n\n\n\tvar prerender = scheduler._pre_render_events_table;\n\tscheduler._pre_render_events_table = function(evs, hold){\n\t\tvar pr = scheduler._props[this._mode];\n\n\t\t// split multiday event into several one-day parts\n\t\tif(pr && pr.days > 1){\n\t\t\tvar days = {};\n\t\t\tfor(var i = 0; i < evs.length; i++){\n\t\t\t\tvar ev = evs[i];\n\t\t\t\tif(!scheduler.isOneDayEvent(evs[i])){\n\n\t\t\t\t\tvar to = new Date(Math.min(+ev.end_date, +this._max_date)),\n\t\t\t\t\t\tfrom = new Date(Math.max(+ev.start_date, +this._min_date));\n\t\t\t\t\tfrom = scheduler.date.day_start(from);\n\t\t\t\t\tevs.splice(i, 1);\n\t\t\t\t\ti--;\n\n\t\t\t\t\twhile(+from < +to){\n\t\t\t\t\t\tvar chunk = this._copy_event(ev);\n\t\t\t\t\t\tchunk.start_date = from;\n\t\t\t\t\t\tchunk.end_date = getNextDay(chunk.start_date);\n\t\t\t\t\t\tfrom = scheduler.date.add(from, 1, 'day');\n\n\t\t\t\t\t\tvar date = +scheduler.date.date_part(new Date(from));\n\t\t\t\t\t\tif(!days[date])\n\t\t\t\t\t\t\tdays[date] = [];\n\t\t\t\t\t\tdays[date].push(chunk);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tvar date = +scheduler.date.date_part(new Date(ev.start_date));\n\t\t\t\t\tif(!days[date])\n\t\t\t\t\t\tdays[date] = [];\n\t\t\t\t\tdays[date].push(ev);\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tvar heights;\n\t\t\tvar evs = [];\n\t\t\tfor(var i in days){\n\t\t\t\tvar columnEvents = prerender.apply(this, [days[i], hold]);\n\t\t\t\tvar currentHeights = this._colsS.heights;\n\t\t\t\t// prerender table updates _colsS.heights array\n\t\t\t\t// which is used to define the height of multiday section\n\t\t\t\t// since columns are calculated separetely here - take maximum height value\n\t\t\t\tif(!heights || currentHeights[0] > heights[0]){\n\t\t\t\t\theights = currentHeights.slice();\n\t\t\t\t}\n\t\t\t\tevs.push.apply(evs, columnEvents);\n\t\t\t}\n\t\t\tvar schedulerHeights = this._colsS.heights;\n\t\t\tschedulerHeights.splice(0, schedulerHeights.length);\n\t\t\tschedulerHeights.push.apply(schedulerHeights, heights);\n\n\n\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\tif (this._ignores[evs[i]._sday]) {\n\t\t\t\t\tevs.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar current = evs[i];\n\t\t\t\t\tcurrent._first_chunk = current._last_chunk = false;\n\t\t\t\t\t// _sorder can calculated for event copies, update the originals\n\t\t\t\t\tvar originalEvent = this.getEvent(current.id);\n\t\t\t\t\toriginalEvent._sorder = current._sorder;\n\n\t\t\t\t}\n\t\t\t}\n\t\t\tevs.sort(function(a, b) {\n\t\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\n\t\t\t\t\treturn a.id > b.id ? 1 : -1;\n\t\t\t\treturn a.start_date > b.start_date ? 1 : -1;\n\t\t\t});\n\n\t\t}else{\n\t\t\tevs = prerender.apply(this, [evs, hold]);\n\t\t}\n\n\t\tfunction getNextDay(date){\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\n\t\t\tnext_day = scheduler.date.date_part(next_day);\n\t\t\treturn next_day;\n\t\t}\n\t\treturn evs;\n\t};\n\n\tscheduler.attachEvent(\"onEventAdded\",function(id,ev){\n\t\tif (this._loading) return true;\n\t\tfor (var a in scheduler._props){\n\t\t\tvar pr = scheduler._props[a];\n\t\t\tif (typeof ev[pr.map_to] == \"undefined\" && pr.options[0]) {\n\t\t\t\tev[pr.map_to] = pr.options[0].key;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\tscheduler.attachEvent(\"onEventCreated\",function(id,n_ev){\n\t\tvar pr = scheduler._props[this._mode];\n\t\tif (pr && n_ev){\n\t\t\tvar ev = this.getEvent(id);\n\t\t\tfix_und(pr,ev);\n\t\t\tvar pos = this._mouse_coords(n_ev);\n\t\t\tthis._update_unit_section({view:pr, event:ev, pos:pos});\n\n\t\t\tthis.event_updated(ev);\n\t\t}\n\t\treturn true;\n\t});\n})();\n\n\n}","export default function(scheduler){\n\nscheduler._get_url_nav = function(){\n\tvar p = {};\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\n\tfor (var i = 0; i < data.length; i++) {\n\t\tvar s = data[i].split(\"=\");\n\t\tif (s.length == 2)\n\t\t\tp[s[0]] = s[1];\n\t}\n\treturn p;\n};\n\nscheduler.attachEvent(\"onTemplatesReady\", function () {\n\tvar first = true;\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\n\tvar select_event = scheduler._get_url_nav().event || null;\n\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\n\t\tselect_event = null;\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\n\t\tif (first) {\n\t\t\tfirst = false;\n\t\t\tvar p = scheduler._get_url_nav();\n\n\t\t\tif (p.event){\n\t\t\t\ttry{\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\n\t\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\tshowEvent(p.event);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\n\t\t\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\t\tshowEvent(p.event);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (e){}\n\t\t\t}\n\n\t\t\tif (p.date || p.mode) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t//assuming that mode is not available anymore\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar values = [\n\t\t\t\"date=\" + d2s(d || od),\n\t\t\t\"mode=\" + (m || om)\n\t\t];\n\n\t\tif(select_event){\n\t\t\tvalues.push(\"event=\" + select_event);\n\t\t}\n\n\t\tvar text = \"#\" + values.join(\",\");\n\t\tdocument.location.hash = text;\n\t\treturn true;\n\t});\n\n\tfunction showEvent(e){\n\t\tif(scheduler.$destroyed){\n\t\t\treturn true;\n\t\t}\n\t\tselect_event = e;\n\t\tif(scheduler.getEvent(e)){\n\t\t\tscheduler.showEvent(e);\n\t\t}\n\t}\n});\n}","export default function(scheduler){\n\nscheduler._wa = {};\nscheduler.xy.week_agenda_scale_height = 20;\nscheduler.templates.week_agenda_event_text = function(start_date, end_date, event, date) {\n\treturn scheduler.templates.event_date(start_date) + \" \" + event.text;\n};\nscheduler.date.week_agenda_start = scheduler.date.week_start;\nscheduler.date.week_agenda_end = function(date) {\n\treturn scheduler.date.add(date, 7, \"day\");\n};\nscheduler.date.add_week_agenda = function(date, inc) {\n\treturn scheduler.date.add(date, inc * 7, \"day\");\n};\n\nscheduler.attachEvent(\"onSchedulerReady\", function() {\n\tvar t = scheduler.templates;\n\tif (!t.week_agenda_date)\n\t\tt.week_agenda_date = t.week_date;\n});\n\n(function() {\n\tvar scale_date_format = scheduler.date.date_to_str(\"%l, %F %d\");\n\tscheduler.templates.week_agenda_scale_date = function(date) {\n\t\treturn scale_date_format(date);\n\t};\n})();\n\nscheduler.attachEvent(\"onTemplatesReady\", function() {\n\n\tvar old = scheduler.render_data;\n\tscheduler.render_data = function(evs) {\n\t\tif (this._mode == \"week_agenda\") {\n\t\t\tscheduler.week_agenda_view(true);\n\t\t} else\n\t\t\treturn old.apply(this, arguments);\n\t};\n\n\tfunction renderDay(index){\n\t\treturn `
\n\t
\n\t
\n
`;\n\t}\n\n\tvar fillWeekAgendaTab = function() {\n\t//\tgetColumnSizes();\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = '';\n\t\tscheduler._rendered = [];\n\t\t\n\t\tvar html = `
\n
\n\t${renderDay(0)}\n\t${renderDay(1)}\n\t${renderDay(2)}\n
\n
\n\t${renderDay(3)}\n\t${renderDay(4)}\n\t${renderDay(5)}\n\t${renderDay(6)}\n
\n
`;\n\n\t\tvar dateElement = scheduler._getNavDateElement();\n\t\tif(dateElement){\n\t\t\tdateElement.innerHTML = scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\n\t\t}\n\t\t\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\n\n\t\tconst dayDivs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont\");\n\n\t\tscheduler._wa._selected_divs = [];\n\t\tvar events = scheduler.get_visible_events(); // list of events to be displayed in current week\n\t\tvar tstart = scheduler.date.week_start(scheduler._date);\n\t\tvar tend = scheduler.date.add(tstart, 1, \"day\");\n\t\tfor (var i = 0; i < 7; i++) {\n\t\t\tdayDivs[i]._date = tstart;\n\t\t\tdayDivs[i].setAttribute(\"data-date\", scheduler.templates.format_date(tstart));\n\n\t\t\tscheduler._waiAria.weekAgendaDayCell(dayDivs[i], tstart);\n\n\t\t\tvar scale_bar = dayDivs[i].querySelector(\".dhx_wa_scale_bar\");\n\t\t\tvar events_div = dayDivs[i].querySelector(\".dhx_wa_day_data\");\n\t\t\tscale_bar.innerHTML = scheduler.templates.week_agenda_scale_date(tstart);\n\t\t\tvar evs = []; // events which will be displayed in the current day\n\t\t\tfor (var j = 0; j < events.length; j++) {\n\t\t\t\tvar tev = events[j];\n\t\t\t\tif (tev.start_date < tend && tev.end_date > tstart)\n\t\t\t\t\tevs.push(tev);\n\t\t\t}\n\t\t\tevs.sort(function(a, b) {\n\t\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\n\t\t\t\t\treturn a.id > b.id ? 1 : -1;\n\t\t\t\treturn a.start_date > b.start_date ? 1 : -1;\n\t\t\t});\n\t\t\tfor (var k = 0; k < evs.length; k++) {\n\t\t\t\tvar ev = evs[k];\n\t\t\t\tvar ev_div = document.createElement('div');\n\t\t\t\tscheduler._rendered.push(ev_div);\n\t\t\t\tvar ev_class = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\n\t\t\t\tev_div.classList.add('dhx_wa_ev_body');\n\t\t\t\tif(ev_class){\n\t\t\t\t\tev_div.classList.add(ev_class);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (scheduler.config.rtl){\n\t\t\t\t\tev_div.classList.add(\"dhx_wa_ev_body_rtl\");\n\t\t\t\t}\n\t\t\t\tif (ev._text_style)\n\t\t\t\t\tev_div.style.cssText = ev._text_style;\n\t\t\t\tif (ev.color)\n\t\t\t\t\tev_div.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\n\t\t\t\tif (ev.textColor)\n\t\t\t\t\tev_div.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\n\t\t\t\tif (scheduler._select_id && ev.id == scheduler._select_id && !(!scheduler.config.week_agenda_select && scheduler.config.week_agenda_select !== undefined)) {\n\t\t\t\t\tev_div.classList.add(\"dhx_cal_event_selected\");\n\t\t\t\t\tscheduler._wa._selected_divs.push(ev_div);\n\t\t\t\t}\n\t\t\t\tvar position = \"\";\n\t\t\t\tif (!ev._timed) {\n\t\t\t\t\tposition = \"middle\";\n\t\t\t\t\tif (ev.start_date.valueOf() >= tstart.valueOf() && ev.start_date.valueOf() <= tend.valueOf())\n\t\t\t\t\t\tposition = \"start\";\n\t\t\t\t\tif (ev.end_date.valueOf() >= tstart.valueOf() && ev.end_date.valueOf() <= tend.valueOf())\n\t\t\t\t\t\tposition = \"end\";\n\t\t\t\t}\n\t\t\t\tev_div.innerHTML = scheduler.templates.week_agenda_event_text(ev.start_date, ev.end_date, ev, tstart, position);\n\t\t\t\tev_div.setAttribute('event_id', ev.id); // for backward compatibility\n\t\t\t\tev_div.setAttribute(scheduler.config.event_attribute, ev.id);\n\n\t\t\t\tscheduler._waiAria.weekAgendaEvent(ev_div, ev);\n\n\t\t\t\tevents_div.appendChild(ev_div);\n\t\t\t}\n\t\t\ttstart = scheduler.date.add(tstart, 1, \"day\");\n\t\t\ttend = scheduler.date.add(tend, 1, \"day\");\n\t\t}\n\t};\n\tscheduler.week_agenda_view = function(mode) {\n\t\tscheduler._min_date = scheduler.date.week_start(scheduler._date);\n\t\tscheduler._max_date = scheduler.date.add(scheduler._min_date, 1, \"week\");\n\t\tscheduler.set_sizes();\n\t\tif (mode) { // mode enabled\n\t\t\tscheduler._table_view = scheduler._allow_dnd = true;\n\t\t\tscheduler.$container.querySelector(\".dhx_cal_header\").style.display = 'none';\n\n\t\t\t// cleaning dhx_cal_date from the previous date\n\t\t\tscheduler._els['dhx_cal_date'][0].innerHTML = \"\";\n\t\t\tfillWeekAgendaTab();\n\t\t} else { // leaving week_agenda mode\n\t\t\tscheduler._table_view = scheduler._allow_dnd = false;\n\t\t\tscheduler.$container.querySelector(\".dhx_cal_header\").style.display = '';\n\t\t}\n\t};\n\tscheduler.mouse_week_agenda = function(pos) {\n\t\tvar native_event = pos.ev;\n\n\t\tconst dayCont = pos.ev.target.closest(\".dhx_wa_day_cont\");\n\t\tlet date;\n\t\tif(dayCont){\n\t\t\tdate = dayCont._date;\n\t\t}\n\n\t\tif (!date)\n\t\t\treturn pos;\n\t\tpos.x = 0;\n\t\tvar diff = date.valueOf() - scheduler._min_date.valueOf();\n\t\tpos.y = Math.ceil(( diff / (1000 * 60) ) / this.config.time_step);\n\t\tif (this._drag_mode == 'move' && this._drag_pos && this._is_pos_changed(this._drag_pos, pos)) {\n\t\t\tvar event_div;\n\t\t\tthis._drag_event._dhx_changed = true;\n\t\t\tthis._select_id = this._drag_id;\n\t\t\tfor (var i = 0; i < scheduler._rendered.length; i++) {\n\t\t\t\tif (scheduler._drag_id == this._rendered[i].getAttribute(this.config.event_attribute))\n\t\t\t\t\tevent_div = this._rendered[i];\n\t\t\t}\n\t\t\tif (!scheduler._wa._dnd) {\n\t\t\t\tvar div = event_div.cloneNode(true);\n\t\t\t\tthis._wa._dnd = div;\n\t\t\t\tdiv.className = event_div.className;\n\t\t\t\tdiv.id = 'dhx_wa_dnd';\n\t\t\t\tdiv.className += ' dhx_wa_dnd';\n\t\t\t\tdocument.body.appendChild(div);\n\t\t\t}\n\t\t\tvar dnd_div = document.getElementById('dhx_wa_dnd');\n\t\t\tdnd_div.style.top = ((native_event.pageY || native_event.clientY) + 20) + \"px\";\n\t\t\tdnd_div.style.left = ((native_event.pageX || native_event.clientX) + 20) + \"px\";\n\t\t}\n\t\treturn pos;\n\t};\n\tscheduler.attachEvent('onBeforeEventChanged', function(event_object, native_event, is_new) {\n\t\tif (this._mode == 'week_agenda') {\n\t\t\tif (this._drag_mode == 'move') {\n\t\t\t\tvar dnd = document.getElementById('dhx_wa_dnd');\n\t\t\t\tdnd.parentNode.removeChild(dnd);\n\t\t\t\tscheduler._wa._dnd = false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\n\t\tif (is_new_event && this._mode == 'week_agenda')\n\t\t\tthis._select_id = id;\n\t\treturn true;\n\t});\n\n\tscheduler._wa._selected_divs = [];\n\n\tscheduler.attachEvent(\"onClick\", function(event_id, native_event_object) {\n\t\tif (this._mode == 'week_agenda' && !(!scheduler.config.week_agenda_select && scheduler.config.week_agenda_select !== undefined)) {\n\t\t\tif (scheduler._wa._selected_divs) {\n\t\t\t\tfor (var i = 0; i < this._wa._selected_divs.length; i++) {\n\t\t\t\t\tvar div = this._wa._selected_divs[i];\n\t\t\t\t\tdiv.className = div.className.replace(/ dhx_cal_event_selected/, '');\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.for_rendered(event_id, function(event_div) {\n\t\t\t\tevent_div.className += \" dhx_cal_event_selected\";\n\t\t\t\tscheduler._wa._selected_divs.push(event_div);\n\t\t\t});\n\t\t\t// scheduler.select(event_id);\n\t\t\t// not using .select(), as it triggers redraw of the view and resets the state of possible scrolls in day cells\n\t\t\tscheduler._select_id = event_id;\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n});\n\n\n}","export default function(scheduler){\nscheduler.attachEvent(\"onLightBox\",function(){\n\tif (this._cover){\n\t\ttry{\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\n\t\t} catch(e) {\n\n\t\t}\n\t}\n});\n\nscheduler.form_blocks.select.set_value=function(node,value,ev){\n\tif (typeof value == \"undefined\" || value === \"\")\n\t\tvalue = (node.firstChild.options[0]||{}).value;\n\tnode.firstChild.value=value||\"\";\n};\n\n}","export default function(scheduler){\n\n\t// scheduler.config.year_x = 4;\n\t// scheduler.config.year_y = 3;\n\t// scheduler.xy.year_top = 0;\n\n\tscheduler.templates.year_date = function(date) {\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\n\t};\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\n\t\treturn ev.text;\n\t};\n\n\tconst isYearMode = function() {\n\t\treturn scheduler._mode == \"year\";\n\t};\n\t\n\tconst getCellDate = function(node){\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\n\t};\n\n\t// dbl click hook for scheduler._on_dbl_click\n\tscheduler.dblclick_dhx_year_grid= function(e) {\n\t\tif (isYearMode()) {\n\t\t\tconst target = e.target;\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\tconst date = getCellDate(target);\n\t\t\t\n\t\t\tif(date){\n\t\t\t\tconst start = date;\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\t\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\n\t\tif (isYearMode())\n\t\t\tthis.year_view(true);\n\t});\n\n\n\tvar old = scheduler.render_data;\n\tscheduler.render_data = function(evs) {\n\t\tif (!isYearMode()) return old.apply(this, arguments);\n\t\tfor (var i = 0; i < evs.length; i++)\n\t\t\tthis._year_render_event(evs[i]);\n\t};\n\n\tvar clear = scheduler.clear_view;\n\tscheduler.clear_view = function() {\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\n\t\tvar dates = scheduler._year_marked_cells,\n\t\t\tdiv = null;\n\t\tfor (var date in dates) {\n\t\t\tif (dates.hasOwnProperty(date)) {\n\t\t\t\tdiv = dates[date];\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\n\t\t\t\t// div.className = \"dhx_month_head\";\n\t\t\t\t// div.removeAttribute(\"date\");\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\n\t\t\t}\n\t\t}\n\t\tscheduler._year_marked_cells = {};\n\t};\n\n\tscheduler._hideToolTip = function() {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.style.display = \"none\";\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\n\t\t}\n\t};\n\n\tscheduler._showToolTip = function(date, pos, e, src) {\n\t\tif (this._tooltip) {\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\n\t\t\tthis._tooltip.innerHTML = \"\";\n\t\t} else {\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\n\t\t\tt.className = \"dhx_year_tooltip\";\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\n\t\t\tdocument.body.appendChild(t);\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\n\t\t\tt.addEventListener(\"click\", function(e){\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\n\t\t\t\t\tscheduler.showLightbox(id);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\n\t\tvar html = \"\";\n\n\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\tvar ev = evs[i];\n\t\t\tif(!this.filter_event(ev.id, ev))\n\t\t\t\tcontinue;\n\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\n\n\t\t\thtml += \"
\";\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\n\t\t\thtml += \"
 
\";\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\n\t\t}\n\n\t\tthis._tooltip.style.display = \"\";\n\t\tthis._tooltip.style.top = \"0px\";\n\n\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\n\t\telse\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\n\n\t\tthis._tooltip.date = date;\n\t\tthis._tooltip.innerHTML = html;\n\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\n\t\telse\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\n\t};\n\n\tscheduler._year_view_tooltip_handler = function(e){\n\t\tif (!isYearMode()) return;\n\n\t\tvar src = e.target || e.srcElement;\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\n\t\t\tsrc = src.parentNode;\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\n\t\telse\n\t\t\tscheduler._hideToolTip();\n\t};\n\tscheduler._init_year_tooltip = function() {\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\n\t};\n\n\tscheduler._get_year_cell = function(d) {\n\t\tvar dateString = scheduler.templates.format_date(d);\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\n\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\n\t\t\t\treturn cells[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\tscheduler._year_marked_cells = {};\n\tscheduler._mark_year_date = function(date, event) {\n\t\tvar dateString = scheduler.templates.format_date(date);\n\t\tvar cell = this._get_year_cell(date);\n\t\tif (!cell) {\n\t\t\treturn;\n\t\t}\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\n\t\tif (!scheduler._year_marked_cells[dateString]) {\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\n\t\t\tcell.setAttribute(\"date\", dateString);\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\n\t\t}\n\t\tif(ev_class){\n\t\t\tcell.classList.add(ev_class);\n\t\t}\n\t};\n\tscheduler._unmark_year_date = function(date) {\n\t\tvar cell = this._get_year_cell(date);\n\t\tif (!cell) {\n\t\t\treturn;\n\t\t}\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\n//\t\tcell.className = \"dhx_month_head\";\n\t};\n\tscheduler._year_render_event = function(event) {\n\t\tvar date = event.start_date;\n\t\tif (date.valueOf() < this._min_date.valueOf()){\n\t\t\tdate = this._min_date;\n\t\t} else {\n\t\t\tdate = this.date.date_part(new Date(date));\n\t\t}\n\n\t\twhile (date < event.end_date) {\n\t\t\tthis._mark_year_date(date, event);\n\t\t\tdate = this.date.add(date, 1, \"day\");\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\n\t\t\t\treturn;\n\t\t}\n\t};\n\n\tscheduler.year_view = function(mode) {\n\n\t\tscheduler.set_sizes();\n\n\t\tscheduler._table_view = mode;\n\n\t\tif (this._load_mode && this._load()) return;\n\n\t\tif (mode) {\n\t\t\tscheduler._init_year_tooltip();\n\t\t\tscheduler._reset_year_scale();\n\t\t\tif (scheduler._load_mode && scheduler._load()){\n\t\t\t\tscheduler._render_wait = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tscheduler.render_view_data();\n\t\t} else {\n\t\t\tscheduler._hideToolTip();\n\t\t}\n\t};\n\tscheduler._reset_year_scale = function() {\n\t\tthis._cols = [];\n\t\tthis._colsS = {};\n\t\tvar week_starts = []; //start day of first week in each month\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\n\n\t\tvar c = this.config;\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\n\t\tdataArea.innerHTML = \"\";\n\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\n\t\tif (dy < 190) {\n\t\t\tdy = 190;\n\t\t}\n\n\t\tvar week_template = document.createElement(\"div\");\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\n\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\n\n\t\tfor (var i = 0; i < 7; i++) {\n\t\t\tif(!(this._ignores && this._ignores[i])) {\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\n\n\t\t\t}\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\n\t\t}\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\n\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\n\t\t}\n\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\n\t\tvar ssd = sd;\n\t\tvar yearBox = null;\n\t\tconst wrapper = document.createElement(\"div\");\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\n\t\tfor (var i = 0; i < c.year_y; i++){\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\n\t\t\t\tyearBox = document.createElement(\"div\");\n\t\t\t\tyearBox.className = \"dhx_year_box\";\n\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\n\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\n\n\t\t\t\tvar headerId = scheduler.uid();\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\n\n\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\n\n\n\n\t\t\t\tvar dd = this.date.week_start(sd);\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\n\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\n\t\t\t\tfor(var day = 0; day < days.length; day++){\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\n\t\t\t\t}\n\n\t\t\t\twrapper.appendChild(yearBox);\n\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\n\n\t\t\t}\n\t\t}\n\n\t\tdataArea.appendChild(wrapper);\n\n\t\tvar dateElement = this._getNavDateElement();\n\t\tif(dateElement){\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\n\t\t}\n\n\t\tthis.week_starts = week_starts;\n\t\tweek_starts._month = ssd.getMonth();\n\t\tthis._min_date = ssd;\n\t\tthis._max_date = sd;\n\t};\n\n\tscheduler._reset_year_scale = function(){\n\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\n\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\n\t\tdataArea.innerHTML = \"\";\n\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\n\t\t\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\n\n\t\tconst wrapper = document.createElement(\"div\");\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\n\n\t\tlet currentDate = yearStart;\n\t\tfor(let i = 0; i < 12; i++){\n\t\t\tlet yearBox = document.createElement(\"div\");\n\t\t\tyearBox.className = \"dhx_year_box\";\n\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\n\t\t\t
`;\n\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\n\t\t\t\tdate: currentDate,\n\t\t\t\tfilterDays: scheduler.ignore_year,\n\t\t\t\tminWeeks: 6\n\t\t\t});\n\t\t\tdatepicker._renderDayGrid(yearGrid);\n\t\t\tdatepicker.destructor();\n\n\t\t\twrapper.appendChild(yearBox);\n\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\n\n\t\t}\n\t\tdataArea.appendChild(wrapper);\n\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\n\t\t}\n\t\tthis._max_date = lastDate;\n\t\tvar dateElement = this._getNavDateElement();\n\t\tif(dateElement){\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\n\t\t}\n\t};\n\n\tvar getActionData = scheduler.getActionData;\n\tscheduler.getActionData = function(n_ev) {\n\t\tif(!isYearMode()){\n\t\t\treturn getActionData.apply(scheduler, arguments);\n\t\t}\n\t\t\n\t\tvar date = getCellDate(n_ev.target);\n\t\treturn {\n\t\t\tdate:date,\n\t\t\tsection:null\n\t\t};\n\t};\n\n\tvar locateEvent = scheduler._locate_event;\n\tscheduler._locate_event = function(node) {\n\t\tvar id = locateEvent.apply(scheduler, arguments);\n\t\tif(!id){\n\t\t\t\n\t\t\tvar date = getCellDate(node);\n\t\t\tif(!date) return null;\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\n\t\t\tif(!evs.length) return null;\n\n\t\t\t//can be multiple events in the cell, return any single one\n\t\t\tid = evs[0].id;\n\t\t}\n\t\treturn id;\n\t};\n\n\tscheduler.attachEvent(\"onDestroy\", function(){\n\t\tscheduler._hideToolTip();\n\t});\n}","import SchedulerFactory from \"./scheduler_factory\";\nimport allExtensions from \"./ext/extensions_all\";\n\nconst factory = new SchedulerFactory(allExtensions);\n\nconst scheduler = factory.getSchedulerInstance();\nconst Scheduler = factory;\n\nwindow.scheduler = scheduler;\nwindow.Scheduler = Scheduler;\n\nif(!window.$dhx) {\n\twindow.$dhx = {};\n}\n\nwindow.$dhx.scheduler = scheduler;\nwindow.$dhx.Scheduler = Scheduler;\n\nexport { scheduler, Scheduler };","\n\nimport dhtmlxHook from \"./dhtmlx_hook\";\nimport \"./css/theme.less\";\ndhtmlxHook();\n\nimport global from \"./global\";\n\nimport factoryMethod from \"./scheduler_factory_method\";\nimport ExtensionsManager from \"./ext/extension_manager\";\n\nclass SchedulerFactory {\n\n\tconstructor (extensions) {\n\t\tthis._seed = 0;\n\t\tthis._schedulerPlugins = [];\n\t\tthis._bundledExtensions = extensions;\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\n\t}\n\n\tplugin(code) {\n\t\tthis._schedulerPlugins.push(code);\n\n\t\tif(global.scheduler){\n\t\t\tcode(global.scheduler);\n\t\t}\n\t}\n\t\n\tgetSchedulerInstance(initConfig) {\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\n\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\n\t\t\tthis._schedulerPlugins[i](scheduler);\n\t\t}\n\t\tscheduler._internal_id = this._seed++;\n\t\n\t\tif (this.$syncFactory){\n\t\t\tthis.$syncFactory(scheduler);\n\t\t}\n\n\t\tif(initConfig){\n\t\t\tthis._initFromConfig(scheduler, initConfig);\n\t\t}\n\n\t\treturn scheduler;\n\t}\n\n\t_initFromConfig(scheduler, initConfig){\n\t\tif(initConfig.plugins){\n\t\t\tscheduler.plugins(initConfig.plugins);\n\t\t}\n\t\n\t\tif(initConfig.config){\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\n\t\t}\n\t\n\t\tif(initConfig.templates){\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\n\t\t\t}, {once: true});\n\t\t}\n\t\n\t\tif(initConfig.events){\n\t\t\tfor(const event in initConfig.events){\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\n\t\t\t}\n\t\t}\n\t\n\t\tif(initConfig.locale){\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\n\t\t}\n\t\n\t\tif(Array.isArray(initConfig.calendars)){\n\t\t\tinitConfig.calendars.forEach(function(calendar){\n\t\t\t\tscheduler.addCalendar(calendar);\n\t\t\t});\n\t\t}\n\t\n\t\tif(initConfig.container){\n\t\t\tscheduler.init(initConfig.container);\n\t\t} else {\n\t\t\tscheduler.init();\n\t\t}\n\t\n\t\tif(initConfig.data){\n\t\t\tif(typeof initConfig.data === \"string\"){\n\t\t\t\tscheduler.load(initConfig.data);\n\t\t\t}else{\n\t\t\t\tscheduler.parse(initConfig.data);\n\t\t\t}\n\t\t}\n\t}\n\t\n\n}\n\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","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","_","_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","d","_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","_silentEnd","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","err","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","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","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","stateProvider","commonViews","agenda","grid","week_agenda","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","exportToPNG","exportToPDF","extend$n","_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","n","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","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","_inited_multisection_copies","copies","_multisection_copies","eventCopies","_register_copies_array","_register_copy","_get_copied_event","event_id","parts","_orig_section","min_sorder","Infinity","_clear_copied_events","_restore_render_flags","section_evs","prev_state","externalDrag","from_scheduler","to_scheduler","drag_data","drag_placeholder","delete_dnd_holder","copy_event_node","clone","create_dnd_holder","holder","event_outside","move_dnd_holder","clear_scheduler_dnd","stop_drag","inject_into_scheduler","dom_event","event_pid","event_length","start_dnd","drag_out","drag","orig_id","land_into_scheduler","drag_in","target_id","drag_from_scheduler","reset_event","move_permanently","original_event","moved_event","outerDragHandlerAttached","connectedSchedulers","processScheduler","target_scheduler","current_scheduler","nextScheduler","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","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","catches","dhtmlxError$1","func_name","throwError","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","resolveAddress","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","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","SuppressedError","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","decodeM","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","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","autoscroll","startPos","autoscrollInterval","_schedulerOuter","eventPos","viewport","availWidth","availHeight","posX","posY","_merge","range_x","range_y","speed_x","speed_y","need_scroll","started","boxSize","startCoord","scrollRange","evId","scrollHelperFactory","currentMode","minMax","maxMin","nMaxMin","detectScrollMode","demoElement","normalizeValue","scrollWidth","getMode","getScrollValue","maxScroll","setScrollValue","normalized","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","_getViewPort","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","touch_tooltip","onmouseleave","onmousemove","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","allExtensions","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","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","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","virtual_events_helpers","old_timeline","section_id","section_label","section_options","x_start","renderMatrix","_renderMatrix","refresh","oldCollision","_w_line_drag_from_start","old_mouse","move_delta","_move_delta","converted","_x_scroll","_y_scroll","pos_copy","_resolve_timeline_section","set_time_part","_timeline_drag_date","drag_event","dat","days_y","st_date","flag","ev_old","oldUpdateTimelineSection","_update_timeline_section","storedEv","oldRender","week_line_dates","old_get_evs","old_add_event_now","set_date_part","old_render_marked_timespan","copy_timeline_event","week_line_ev_date","multiday_chunks","chunk","get_next_day","set_resize_options","chunks","_w_start_date","_w_end_date","_no_resize_start","_no_resize_end","par","drag_between","_outer_drag","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","initialSizes","smartRendering","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","getInitialSizes","grid_view","sort_rules","int","getVal","_getObjName","_getViewName","objName","isValidSize","defPadding","initialWidth","paddingLeft","paddingRight","_selected_divs","field_name","selectEvent","unselectEvent","_fill_grid_tab","data_container","_gridScrollTop","_sort_marker","paging","set_full_view","dblclick_dhx_grid_area","dhx_cal_header","_old_header_click","_get_target_column","_toggle_sort_state","view_name","event_div","_unselectDiv","targ","originalTarget","_get_sort_state","_get_sort_value_for_column","draw_sort_marker","_get_column_node","sort_grid","_print_grid_header","_calcPadding","_getStyles","cell_style","valign","_get_sort_rule","sortRule","_print_event_row","_getCellContent","availStyles","ariaCellAttribute","widths","unsized_columns","avail_width","unsized_width","column_width","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","tempStart","tempEnd","_timeline_getX","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","getDefaultNode","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","dtmlXMLLoaderObject","funcObject","dhtmlObject","rSeed","onloadAction","mainObject","dhtmlDragAndDropObject","dhtmlDragAndDrop","lastLanding","dragNode","dragStartNode","dragStartObject","tempDOMU","tempDOMM","waitDrag","extend_api","_init","_patch","waitLoadFunction","getXMLTopNode","oldObj","_retry","_isIE","loadXMLString","xmlString","onreadystatechange","postMode","postVars","rpc","_filterXPath","_getAllNamedChilds","doXPath","doXPathOpera","doXSLTransToObject","doXSLTransToString","doSerialization","xmlNodeToJSON","setXSLParamValue","removeDraggableItem","htmlNode","onmousedown","dragStarter","dragLanding","addDraggableItem","preCreateDragCopy","addDragLanding","onmouseup","stopDrag","callDrag","downtime","dragger","_createDragNode","onselectstart","gldragNode","pWindow","initFrameRoute","grd","oldBody","_dragOut","outerHTML","fx","fy","checkLanding","calculateFramePosition","frames","frameElement","ls","_dragIn","lastLanding_scr","_onNotFound","stopFrameRoute","_drag","win","_isFF","_FFrv","_isKHTML","appName","appVersion","compatMode","namespace","result_type","selectSingleNode","nodeObj","retType","FIRST_ORDERED_NODE_TYPE","rowsCol","singleNodeValue","thisColMemb","dhtmlxErrorConstructor","dhtmlxEvent","xslDoc","paramName","paramValue","transformNodeToObject","transformNode","XSLProcessor","XSLTProcessor","importStylesheet","transformToDocument","XMLSerializer","serializeToString","dhtmlxEventable","catcher","callObj","eventCatcher","arg0","dhx_catch","zr","definition","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","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","multisection_shift_all","old_unit","_update_unit_section","_update_sections","_get_multisection_view","_get_event_sections","_parse_event_sections","_split_events","pr","_split_one_event","mapping","vis_evs","_rendered_events","old_view_data","def_handler","new_sections","shifted","new_section","_shift_sections","orig_section","orig_order","new_unit","old_get_blocked_zones","old_check_secions_collision","a_ind","a_len","b_ind","b_len","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","on_drop","sourceHtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","shtmlObject","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","colsWidth","x_norm_event","is_left","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","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","recurrence","_start","recurring_legacy","getRecurringSection","occurrence_timestamp_in_utc","_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","getTimeSection","_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","getScrollbarwidth","outer","w1","w2","renderCells","contentTemplate","baseClass","$width","renderHeading","renderColumns","scrollPosition","scrollDate","posLeft","labelWrapperHeight","scalesHeight","_label_rows","scrollHelper","dataWrapperDiv","getScrollPosition","dateFromPos","sectionFromPos","resolvePosition","_rowStats","getEventTop","eventHeight","getEventHeight","sorder","event_dy","sectionIndex","_timeline_get_cur_row_stats","resize_events","event_min_dy","_temp_matrix_scope","getChildrenIds","getSectionIndex","iterateSectionsTree","prepareCellMatrix","sectionsSearch","y_unit_original","fillFolders","fillXArray","xFrom","xTo","$tree","sectionProperty","sectionKey","scaleIndexStart","scaleIndexEnd","$parent","traversed","_is_new_view","_section_autowidth","_h_cols","y_step","x_size","y_start","y_size","x_date","fit_events","fit_events_offset","show_unassigned","_logic","render_name","_original_x_start","render_timeline_event","folder_events_available","allocatedWidth","flexibleColumns","modifyContainerWidth","freeWidth","columnsLeft","datea","dateb","defautDateFormat","defaultFormatter","SecondScaleDateFormat","defautSecondScaleFormatter","scroll_step","resulting_date","x_length","converted_step","total_steps","steps_offset","start_offset","new_offset","_timeline_smart_render","getViewPort","_sch_height","scrollableDataContainer","selectEvents","selectSubsections","selectNested","getPreparedEvents","columnEvents","nestedEvents","$matrix","subsections","sectionEvents","setRange","scaleStartDate","_set_timeline_dates","force_redraw","current_back_shift","_timeline_get_rounded_date","_resize_from_start","pos_changed","_prepare_timeline_events","_timeline_trace_events","tev_section","_populate_timeline_rendered","_rendered_events_cache","smartRenderCache","x_end","event_height","_get_timeline_event_height","coefficient","_get_timeline_event_y","section_height","_events_height","_no_drag_move","dhx_event_resize","hb_local","resize_start","resize_end","parentSection","escapeForAttribute","sectionHasCustomHeight","timelineCellDateAttribute","cellDate","getScrollableContainer","getColumnLabelContainer","isEndPoint","_step","column_offset","_min_date_timeline","column_date","isEndDate","rounded_date","_timeline_skip_ignored","_timeline_calculate_event_positions","evs_length","maxOrder","maxOrderEvent","ev_start_date","_timeline_get_events_html","_timeline_update_events_html","_timeline_get_block_stats","stats","style_data_wrapper","style_label_wrapper","html_scroll_width","custom_scroll_width","rowBaseSizes","defaultHeight","totalHeight","rowsWithDefaultHeight","totalCustomHeight","heightWithoutScroll","td_className","cssTemplate","td_content","tr_className","summ_width","_summ","table_className","_timeline_get_fit_events_stats","rendered_height","style_line_height","_timeline_set_scroll_pos","_timeline_save_scroll_pos","_timeline_get_html_for_cell_data_row","top_pos","templateParams","_timeline_get_html_for_cell_ignores","_timeline_get_html_for_cell","x_ind","y_ind","cellLeftPos","cellSection","cellWidth","cellDateString","_timeline_get_html_for_bar_matrix_line","_timeline_get_html_for_bar_data_row","_timeline_get_html_for_bar_ignores","_timeline_get_html_for_bar","cell_template","cellInner","_timeline_render_scale_header","headerAreaClass","_timeline_y_scale","block_stats","scrollableData","labelWrapper","dataWrapper","clearPreparedEventsCache","cachePreparedEvents","render_stats","_render_stats","skipRenderCells","_rendered_labels_cache","smartRender","sectionsInfo","eventsBySections","rowStats","rowStatsByKey","totalRowsHeight","cellTopPos","labelRow","isInYViewPort","colIndex","isInXViewPort","printableEvents","getVisibleEventsForRow","_matrix","sectionRows","divBySectionId","_divBySectionId","unit_key","_timeline_finalize_section_add","_is_ev_creating","labelWrapperDiv","$eventsAttached","prevLabelAction","onMouseWheel","scrollPositionChanged","ff","deltaX","wheelDeltaX","deltaY","wheelDelta","multiplier","deltaMode","wheelSpeed","wx","wy","prevScrollLeft","detail","prevScrollTop","dataWrapperDivOnScroll","colLabelDiv","updateHeader","_options_changed","updateLabels","updateGridCols","updateGridRows","cancelAnimationFrame","frameRequest","updateEvents","dataColHeight","newTop","newLeft","prevAction","absoluteDx","absoluteDy","totalDistance","sqrt","scroll_position","sectionDiv","_timeline_x_dates","display_count","total_count","displayed","_timeline_x_scale","timelineContainerWidth","current_sh","original_sh","_header_resized","preserve_scale_length","summ_fixed","control_dates","second_cols","second_left","t_index","_timeline_is_new_interval","scs","S","clnLastChild","trace","$_clickEventsAttached","_timeline_locate_hcell","control_date","_timeline_reset_scale_height","_timeline_set_full_view","_init_matrix_tooltip","curHeader","getVisibleHeader","_timeline_hideToolTip","_tooltip","_timeline_showToolTip","mark","_matrix_tooltip_handler","_timeline_html_index","nodeIndex","resIndex","ign","xNonIgnoredInd","xind","firstCellXind","firstCell","fc_pos_x","isScale","scaleTarget","old_click","dhx_marked_timespan","dblclick_dhx_matrix_cell","old_dblclick_marked_timespan","dblclick_dhx_matrix_scell","event_options","start_ind","specific_date","old_append_mark_now","n_date","oldTimespans","on_scale_marker_add","z_config","yind","line_height","trace_x","searchFrom","searchTo","dateValue","middle","pos_x","ratio","edge","timestamp_diff","_prepared_events_cache","_rendered_header_cache","_rows_to_delete","_rows_to_add","_cols_to_delete","_cols_to_add","resizeHeight","scrollBlock","scrollableContainer","viewPortLeft","viewPortRight","viewPortTop","viewPortBottom","visibleItems","renderers","itemsToDel","_deleteHeaderCells","_addHeaderCells","getVisibleLabels","curLabelCol","_deleteLabelCells","_addLabelCells","_prepared_events_coordinate_cache","dragId","stop","found","currentSectionId","eventIndex","actualEventSectionIndex","$coordinates","renderedEvents","willAdd","eventsToAdd","visibleRowEvents","lenRend","draggableEvent","multievs","_deleteEvents","addEntry","_addEvents","rowEvents","events_html","evsInViewport","evLen","xStart","xEnd","coordinateCacheKey","getVisibleRowCellsHTML","visibleColumns","getVisibleTimelineRowsHTML","cachedRow","_deleteGridRows","_addGridRows","visibleHeaderColumns","visibleHeaderColumnsHash","allCells","renderedCells","colId","shouldDelete","shouldRender","_addGridCols","getVisibleGridCell","tooltipManager","tooltips","tooltipFor","targetEventId","hideTooltip","section_id_before","_getArrayToDisplay","_getArrayForSelect","temp_select","temp_option","div_expand","folder_dy","level","event_object","native_event","ev_sections","getSection","fillResultArray","lvl","skip","_toggleFolderDisplay","all_sections","toggleElement","findElement","deleteSection","deleteElement","deleteAllSections","addSection","parent_id","addElement","parent_key","openAllSections","closeAllSections","openSection","closeSection","skip_incorrect","getDateIndex","_original_size","unit_view","original_position","date_position","dateIndex","realDate","section_ind","unit_ind","headerResized","revertHeaderSize","scrollUnit","_removeIncorrectEvents","correct_events","old_pre_render_events_table","old_pre_render_events_line","fix_und","oldive","old_process_ignores","sectionsCount","sectionEnd","today_start","today_end","headerWrapper","s_left","s_width","_get_section_sday","prerender","currentHeights","schedulerHeights","s2d","d2s","select_event","scale_date_format","_wa","week_agenda_event_text","week_agenda_start","week_agenda_end","add_week_agenda","week_agenda_date","week_agenda_scale_date","week_agenda_view","dayDivs","tstart","tend","scale_bar","events_div","ev_div","week_agenda_select","mouse_week_agenda","dayCont","_dnd","dnd_div","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","_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":[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,112,113]}