BLUE
PHP 7.4.33
Path:
/var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/dhtmlx-scheduler/codebase
Run
Logout
Edit File
Size: 1.69 MB
Close
/var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/dhtmlx-scheduler/codebase/dhtmlxscheduler.js.map
Text
Base64
{"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/ext/restricted_extensions/not_implemented_extension.js","../sources/ext/keyboard_navigation/modals.js","../sources/ext/keyboard_navigation/key_nav_legacy.js","../sources/ext/keyboard_navigation/scheduler_handlers.js","../sources/ext/map_view/gMapAdapter.ts","../sources/ext/map_view/osmMapAdapter.ts","../sources/ext/map_view/mapboxAdapter.ts","../node_modules/rrule/dist/esm/weekday.js","../node_modules/rrule/dist/esm/helpers.js","../node_modules/rrule/dist/esm/dateutil.js","../node_modules/rrule/dist/esm/iterresult.js","../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../node_modules/rrule/dist/esm/callbackiterresult.js","../node_modules/rrule/dist/esm/types.js","../node_modules/rrule/dist/esm/nlp/i18n.js","../node_modules/rrule/dist/esm/nlp/totext.js","../node_modules/rrule/dist/esm/nlp/parsetext.js","../node_modules/rrule/dist/esm/nlp/index.js","../node_modules/rrule/dist/esm/datetime.js","../node_modules/rrule/dist/esm/parseoptions.js","../node_modules/rrule/dist/esm/parsestring.js","../node_modules/rrule/dist/esm/datewithzone.js","../node_modules/rrule/dist/esm/optionstostring.js","../node_modules/rrule/dist/esm/cache.js","../node_modules/rrule/dist/esm/masks.js","../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../node_modules/rrule/dist/esm/iterinfo/index.js","../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../node_modules/rrule/dist/esm/iterinfo/easter.js","../node_modules/rrule/dist/esm/iter/poslist.js","../node_modules/rrule/dist/esm/iter/index.js","../node_modules/rrule/dist/esm/rrule.js","../node_modules/rrule/dist/esm/rrulestr.js","../node_modules/rrule/dist/esm/rruleset.js","../node_modules/rrule/dist/esm/iterset.js","../sources/ext/tooltip/tooltip.ts","../sources/ext/tooltip/tooltipManager.ts","../sources/ext/extensions_gpl.js","../sources/ext/active_links.js","../sources/ext/agenda_legacy_view.js","../sources/ext/agenda.js","../sources/ext/all_timed.js","../sources/ext/collision.js","../sources/ext/container_autoresize.js","../sources/ext/cookie.js","../sources/ext/restricted_extensions/daytimeline.js","../sources/ext/restricted_extensions/drag_between.js","../sources/ext/editors.js","../sources/ext/expand.js","../sources/ext/export_api/index.js","../sources/ext/restricted_extensions/grid_view.js","../sources/ext/html_templates.js","../sources/ext/key_nav.js","../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../sources/ext/keyboard_navigation/common/eventhandler.js","../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../sources/ext/keyboard_navigation/marker.js","../sources/ext/keyboard_navigation/elements/scheduler_node.js","../sources/ext/keyboard_navigation/elements/nav_node.js","../sources/ext/keyboard_navigation/elements/header_cell.js","../sources/ext/keyboard_navigation/elements/event.js","../sources/ext/keyboard_navigation/elements/time_slot.js","../sources/ext/keyboard_navigation/elements/minical_button.js","../sources/ext/keyboard_navigation/elements/minical_cell.js","../sources/ext/keyboard_navigation/elements/data_area.js","../sources/ext/keyboard_navigation/core.js","../sources/ext/keyboard_navigation/minical_handlers.js","../sources/ext/layer.js","../sources/ext/limit.js","../sources/ext/map_view/index.ts","../sources/ext/minical.js","../sources/ext/monthheight.js","../sources/ext/restricted_extensions/multisection.js","../sources/ext/multiselect.js","../sources/ext/multisource.js","../sources/ext/mvc.js","../sources/ext/outerdrag.js","../sources/ext/pdf.js","../sources/ext/quick_info.js","../sources/ext/readonly.js","../sources/ext/recurring.js","../sources/ext/recurring_legacy.js","../sources/ext/serialize.js","../sources/ext/restricted_extensions/timeline.js","../sources/ext/tooltip/index.ts","../sources/ext/restricted_extensions/treetimeline.js","../sources/ext/restricted_extensions/units.js","../sources/ext/url.js","../sources/ext/restricted_extensions/week_agenda.js","../sources/ext/wp.js","../sources/ext/year_view.js","../sources/dhtmlxscheduler.gpl.js","../sources/scheduler_factory.js"],"sourcesContent":["\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStart<eventEnd && markerEnd>eventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p<evs.length; p++) {\r\n\t\t\tvar res = true;\r\n\t\t\tvar ev = evs[p];\r\n\t\t\t// Event could have old _timed property (e.g. we are creating event with DND on timeline view and crossed day)\r\n\t\t\tev._timed = scheduler.isOneDayEvent(ev);\r\n\r\n\t\t\tres = (c.limit_start && c.limit_end) ? (ev.start_date.valueOf() >= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i<blocked_timeline_zones.length; i++) {\r\n\t\t\t\tzones = this._add_timespan_zones(zones, blocked_timeline_zones[i].zones);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn zones;\r\n\t};\r\n\tscheduler._get_relevant_blocked_zones = function(day_index, day_value, zones, timespan_type) {\r\n\t\tvar resultZones;\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tresultZones = (zones[day_value] && zones[day_value][timespan_type]) ? zones[day_value][timespan_type] :\r\n\t\t\t(zones[day_index] && zones[day_index][timespan_type]) ? zones[day_index][timespan_type] : [];\r\n\t\t}else{\r\n\t\t\tresultZones = [];\r\n\t\t\tif(zones[day_value] && zones[day_value][timespan_type]){\r\n\t\t\t\tresultZones = resultZones.concat(zones[day_value][timespan_type]);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif((zones[day_index] && zones[day_index][timespan_type])){\r\n\t\t\t\tresultZones = resultZones.concat(zones[day_index][timespan_type]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn resultZones;\r\n\t};\r\n\tfunction getZones(ev, timespans, day_index, day_value, timespan_type){\r\n\t\tvar s = scheduler;\r\n\t\t//containers for 'unit' and 'timeline' views, and related 'section_id' properties\r\n\t\tvar zones = [];\r\n\t\tvar containers = {\r\n\t\t\t'_props':'map_to',\r\n\t\t\t'matrix':'y_property'};\r\n\t\t//check blocked sections in all units and timelines\r\n\t\tfor(var container in containers){\r\n\t\t\tvar property = containers[container];\r\n\t\t\tif(s[container]){\r\n\t\t\t\tfor(var view in s[container]){\r\n\t\t\t\t\tvar view_config = s[container][view];\r\n\t\t\t\t\tvar linker = view_config[property];\r\n\t\t\t\t\tif(!ev[linker]) continue;\r\n\t\t\t\t\tzones = s._add_timespan_zones(zones,\r\n\t\t\t\t\t\tscheduler._get_blocked_zones(timespans[view], ev[linker], day_index, day_value, timespan_type));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// now need to add day blocks\r\n\t\tzones = s._add_timespan_zones(zones, scheduler._get_blocked_zones(timespans, 'global', day_index, day_value, timespan_type));\r\n\t\treturn zones;\r\n\t}\r\n\r\n\tscheduler._mark_now = function(hide) {\r\n\t\t// day, week, units views\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tif (!this._els[dhx_now_time]) {\r\n\t\t\tthis._els[dhx_now_time] = [];\r\n\t\t}\r\n\t\tvar now = scheduler._currentDate();\r\n\t\tvar cfg = this.config;\r\n\t\tscheduler._remove_mark_now(); // delete previous marks if they exist\r\n\t\tif (!hide && cfg.mark_now && now < this._max_date && now > this._min_date && now.getHours() >= cfg.first_hour && now.getHours()<cfg.last_hour) {\r\n\t\t\tvar day_index = this.locate_holder_day(now);\r\n\t\t\tthis._els[dhx_now_time] = scheduler._append_mark_now(day_index, now);\r\n\t\t}\r\n\t};\r\n\tscheduler._append_mark_now = function(day_index, now) {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar zone_start= scheduler._get_zone_minutes(now);\r\n\t\tvar options = {\r\n\t\t\tzones: [zone_start, zone_start+1],\r\n\t\t\tcss: dhx_now_time,\r\n\t\t\ttype: dhx_now_time\r\n\t\t};\r\n\t\tif (!this._table_view) {\r\n\t\t\tif (this._props && this._props[this._mode]) { // units view\r\n\t\t\t\tvar start_index,\r\n\t\t\t\t\tend_index;\r\n\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\tif (view.days > 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i<els.length; i++) {\r\n\t\t\tvar div = els[i];\r\n\t\t\tvar parent = div.parentNode;\r\n\t\t\tif (parent) {\r\n\t\t\t\tparent.removeChild(div);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._els[dhx_now_time] = [];\r\n\t};\r\n\r\n\t/*\r\n\tscheduler._marked_timespans = {\r\n\t\t\"global\": {\r\n\t\t\t\"0\": {\r\n\t\t\t\t\"default\": [\r\n\t\t\t\t\t{ // sunday\r\n\t\t\t\t\t\tzones: [0, 100, 500, 600],\r\n\t\t\t\t\t\tcss: \"yellow_box\",\r\n\t\t\t\t\t\ttype: \"default\",\r\n\t\t\t\t\t\tview: \"global\",\r\n\t\t\t\t\t\tday: 0\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t\t\"112121312\": {\r\n\t\t\t\t\"my_special_type\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tzones: [600, 900],\r\n\t\t\t\t\t\ttype: \"block\",\r\n\t\t\t\t\t\tcss: \"some_class\",\r\n\t\t\t\t\t\tview: \"global\",\r\n\t\t\t\t\t\tday: 112121312\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"units\": {\r\n\t\t\t\"5_id\": {\r\n\t\t\t\t\"3\": {\r\n\t\t\t\t\t\"special_type\": [ {}, {}, {} ],\r\n\t\t\t\t\t\"another_type\": [ {} ]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"6_id\": {\r\n\t\t\t\t\"11212127\": {\r\n\t\t\t\t\t...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n\tscheduler._marked_timespans = { global: {} };\r\n\r\n\tscheduler._get_zone_minutes = function(date) {\r\n\t\treturn date.getHours()*60 + date.getMinutes();\r\n\t};\r\n\tscheduler._prepare_timespan_options = function(config) { // receives 1 option, returns array of options\r\n\t\tvar r_configs = []; // resulting configs\r\n\t\tvar temp_configs = [];\r\n\r\n\t\tif (config.days == \"fullweek\")\r\n\t\t\tconfig.days = [0,1,2,3,4,5,6];\r\n\r\n\t\tif (config.days instanceof Array) {\r\n\t\t\tvar t_days = config.days.slice();\r\n\t\t\tfor (var i=0; i<t_days.length; i++) {\r\n\t\t\t\tvar cloned_config = scheduler._lame_clone(config);\r\n\t\t\t\tcloned_config.days = t_days[i];\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._prepare_timespan_options(cloned_config));\r\n\t\t\t}\r\n\t\t\treturn r_configs;\r\n\t\t}\r\n\r\n\t\tif ( !config ||\r\n\t\t\t!((config.start_date && config.end_date && config.end_date > config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i<ids.length; i++) {\r\n\t\t\t\t\t\tvar t_config = scheduler._lame_copy({}, config);\r\n\t\t\t\t\t\tt_config.sections = {};\r\n\t\t\t\t\t\tt_config.sections[view_key] = ids[i];\r\n\t\t\t\t\t\ttemp_configs.push(t_config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttemp_configs.push(config);\r\n\t\t}\r\n\r\n\t\tfor (var k=0; k<temp_configs.length; k++) {\r\n\t\t\tvar c_config = temp_configs[k]; // config to be checked\r\n\r\n\t\t\tvar start_date = c_config.start_date;\r\n\t\t\tvar end_date = c_config.end_date;\r\n\r\n\t\t\tif (start_date && end_date) {\r\n\t\t\t\tvar t_sd = scheduler.date.date_part(new Date(start_date)); // e.g. 05 october\r\n\t\t\t\tvar t_ed= scheduler.date.add(t_sd, 1, \"day\"); // 06 october, will both be incremented in the loop\r\n\r\n\t\t\t\twhile (t_sd < end_date) {\r\n\t\t\t\t\tvar t_config = scheduler._lame_copy({}, c_config);\r\n\t\t\t\t\tdelete t_config.start_date;\r\n\t\t\t\t\tdelete t_config.end_date;\r\n\t\t\t\t\tt_config.days = t_sd.valueOf();\r\n\t\t\t\t\tvar zone_start = (start_date > t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i<divs.length; i++) {\r\n\t\t\tvar div = divs[i];\r\n\t\t\t// parent may no longer be present if we switched views, navigated\r\n\t\t\tif (div.parentNode) {\r\n\t\t\t\tdiv.parentNode.removeChild(div);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tscheduler._addMarkerTimespanConfig = function(config){\r\n\t\tvar global = \"global\";\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar id = config.id;\r\n\r\n\t\tvar ids = scheduler._marked_timespans_ids;\r\n\t\tif (!ids[id])\r\n\t\t\tids[id] = [];\r\n\r\n\r\n\t\tvar day = config.days;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tvar type = config.type; // default or specified\r\n\t\tconfig.id = id;\r\n\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tif (!timespans[view_key])\r\n\t\t\t\t\t\ttimespans[view_key] = {};\r\n\t\t\t\t\tvar unit_id = sections[view_key];\r\n\t\t\t\t\tvar timespans_view = timespans[view_key];\r\n\t\t\t\t\tif (!timespans_view[unit_id])\r\n\t\t\t\t\t\ttimespans_view[unit_id] = {};\r\n\t\t\t\t\tif (!timespans_view[unit_id][day])\r\n\t\t\t\t\t\ttimespans_view[unit_id][day] = {};\r\n\t\t\t\t\tif (!timespans_view[unit_id][day][type]){\r\n\t\t\t\t\t\ttimespans_view[unit_id][day][type] = [];\r\n\t\t\t\t\t\tif(!scheduler._marked_timespans_types)\r\n\t\t\t\t\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t\t\t\t\tif(!scheduler._marked_timespans_types[type])\r\n\t\t\t\t\t\t\tscheduler._marked_timespans_types[type] = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar day_configs = timespans_view[unit_id][day][type];\r\n\t\t\t\t\tconfig._array = day_configs;\r\n\t\t\t\t\tday_configs.push(config);\r\n\t\t\t\t\tids[id].push(config);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!timespans[global][day])\r\n\t\t\t\ttimespans[global][day] = {};\r\n\t\t\tif (!timespans[global][day][type])\r\n\t\t\t\ttimespans[global][day][type] = [];\r\n\r\n\t\t\tif(!scheduler._marked_timespans_types)\r\n\t\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t\tif(!scheduler._marked_timespans_types[type])\r\n\t\t\t\tscheduler._marked_timespans_types[type] = true;\r\n\r\n\t\t\tvar day_configs = timespans[global][day][type];\r\n\t\t\tconfig._array = day_configs;\r\n\t\t\tday_configs.push(config);\r\n\t\t\tids[id].push(config);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tscheduler._marked_timespans_ids = {};\r\n\t// adds marked timespan to collections, persistent\r\n\tscheduler.addMarkedTimespan = function(configuration) {\r\n\t\tvar configs = scheduler._prepare_timespan_options(configuration);\r\n\t\tif (!configs.length)\r\n\t\t\treturn; // options are incorrect, nothing to mark\r\n\r\n\t\tvar id = configs[0].id;\r\n\t\tfor (var i=0; i<configs.length; i++) {\r\n\t\t\tscheduler._addMarkerTimespanConfig(configs[i]);\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\t// not used for now\r\n\tscheduler._add_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tzones = zones.slice();\r\n\r\n\t\tif (!resulting_zones.length)\r\n\t\t\treturn zones;\r\n\r\n\t\tfor (var i=0; i<resulting_zones.length; i+=2) {\r\n\t\t\tvar c_zone_start = resulting_zones[i];\r\n\t\t\tvar c_zone_end = resulting_zones[i+1];\r\n\t\t\tvar isLast = (i+2 == resulting_zones.length);\r\n\r\n\t\t\tfor (var k=0; k<zones.length; k+=2) {\r\n\t\t\t\tvar zone_start = zones[k];\r\n\t\t\t\tvar zone_end = zones[k+1];\r\n\t\t\t\tif ((zone_end > c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i<resulting_zones.length; i+=2 ) {\r\n\t\t\tvar c_zone_start = resulting_zones[i];// current_zone_start\r\n\t\t\tvar c_zone_end = resulting_zones[i+1];\r\n\t\t\tfor (var k=0; k<zones.length; k+=2) {\r\n\t\t\t\tvar zone_start = zones[k];\r\n\t\t\t\tvar zone_end = zones[k+1];\r\n\t\t\t\tif (zone_end > c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i<configs.length; i++) {\r\n\t\t\t\tvar config = configs[i];\r\n\t\t\t\tvar parent_array = config._array;\r\n\t\t\t\tfor (var k=0; k<parent_array.length; k++) {\r\n\t\t\t\t\tif (parent_array[k] == config) {\r\n\t\t\t\t\t\tparent_array.splice(k, 1);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_config = function(config) {\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar sections = config.sections;\r\n\t\tvar day = config.days;\r\n\t\tvar type = config.type||default_timespan_type;\r\n\t\tvar viewspans;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key) && timespans[view_key]) {\r\n\t\t\t\t\tvar unit_id = sections[view_key];\r\n\t\t\t\t\tif (timespans[view_key][unit_id]){\r\n\t\t\t\t\t\tviewspans = timespans[view_key][unit_id];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tviewspans = timespans.global;\r\n\t\t}\r\n\r\n\t\tif(viewspans) {\r\n\t\t\tif (day !== undefined) {\r\n\t\t\t\tif (viewspans[day] && viewspans[day][type]) {\r\n\t\t\t\t\tscheduler._addMarkerTimespanConfig(config); // register config in order to be able to delete recurring timespan from a specific day\r\n\t\t\t\t\tscheduler._delete_marked_timespans_list(viewspans[day][type], config);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (var d in viewspans) {\r\n\t\t\t\t\tif (viewspans[d][type]) {\r\n\t\t\t\t\t\tvar dayConfig = scheduler._lame_clone(config);\r\n\t\t\t\t\t\tconfig.days = d;\r\n\t\t\t\t\t\tscheduler._addMarkerTimespanConfig(dayConfig); // register config in order to be able to delete recurring timespan from a specific day\r\n\t\t\t\t\t\tscheduler._delete_marked_timespans_list(viewspans[d][type], config);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._delete_marked_timespans_list = function(day_timespans, config){\r\n\t\tfor (var i=0; i<day_timespans.length; i++) {\r\n\t\t\tvar d_t = day_timespans[i];\r\n\t\t\tvar zones = scheduler._subtract_timespan_zones(d_t.zones, config.zones);\r\n\t\t\tif (zones.length)\r\n\t\t\t\td_t.zones = zones;\r\n\t\t\telse {\r\n\t\t\t\tday_timespans.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t\t// need to update ids collection\r\n\t\t\t\tvar related_zones = scheduler._marked_timespans_ids[d_t.id];\r\n\t\t\t\tfor (var k=0; k<related_zones.length; k++) {\r\n\t\t\t\t\tif (related_zones[k] == d_t) {\r\n\t\t\t\t\t\trelated_zones.splice(k, 1);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler.deleteMarkedTimespan = function(configuration) {\r\n\t\t// delete everything\r\n\t\tif (!arguments.length) {\r\n\t\t\tscheduler._marked_timespans = { global: {} };\r\n\t\t\tscheduler._marked_timespans_ids = {};\r\n\t\t\tscheduler._marked_timespans_types = {};\r\n\t\t}\r\n\r\n\t\tif (typeof configuration != \"object\") { // id was passed\r\n\t\t\tscheduler._delete_marked_timespan_by_id(configuration);\r\n\t\t} else { // normal configuration was passed\r\n\r\n\t\t\tif(!(configuration.start_date && configuration.end_date)){\r\n\t\t\t\tif(configuration.days === undefined && !configuration.type)\r\n\t\t\t\t\tconfiguration.days = \"fullweek\";\r\n\t\t\t\tif(!configuration.zones)\r\n\t\t\t\t\tconfiguration.zones = \"fullday\";\r\n\t\t\t}\r\n\r\n\t\t\tvar types = [];\r\n\t\t\tif(!configuration.type){\r\n\t\t\t\t//if type not specified - delete timespans of all types\r\n\t\t\t\tfor(var type in scheduler._marked_timespans_types){\r\n\t\t\t\t\ttypes.push(type);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\ttypes.push(configuration.type);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar configs = scheduler._prepare_timespan_options(configuration);\r\n\r\n\t\t\tfor (var i=0; i<configs.length; i++) {\r\n\r\n\t\t\t\tvar config = configs[i];\r\n\t\t\t\tfor( var t=0; t < types.length; t++){\r\n\t\t\t\t\tvar typedConfig = scheduler._lame_clone(config);\r\n\t\t\t\t\ttypedConfig.type = types[t];\r\n\t\t\t\t\tscheduler._delete_marked_timespan_by_config(typedConfig);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t};\r\n\tscheduler._get_types_to_render = function(common, specific) {\r\n\t\tvar types_to_render = (common) ? scheduler._lame_copy({},common) : {};\r\n\t\tfor (var type in specific||{} ) {\r\n\t\t\tif (specific.hasOwnProperty(type)) {\r\n\t\t\t\ttypes_to_render[type] = specific[type];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn types_to_render;\r\n\t};\r\n\tscheduler._get_configs_to_render = function(types) {\r\n\t\tvar configs = [];\r\n\t\tfor (var type in types) {\r\n\t\t\tif (types.hasOwnProperty(type)) {\r\n\t\t\t\tconfigs.push.apply(configs, types[type]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn configs;\r\n\t};\r\n\r\n\tscheduler._on_scale_add_marker = function(area, day){\r\n\t\tif (scheduler._table_view && scheduler._mode != \"month\")\r\n\t\t\treturn;\r\n\r\n\t\tvar day_index = day.getDay();\r\n\t\tvar day_value = day.valueOf();\r\n\t\tvar mode = this._mode;\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tvar r_configs = [];\r\n\t\tvar divs = [];\r\n\t\tif (this._props && this._props[mode]) { // we are in the units view and need to draw it's sections as well\r\n\t\t\tvar view = this._props[mode]; // units view object\r\n\t\t\tvar units = view.options;\r\n\t\t\tvar index = scheduler._get_unit_index(view, day);\r\n\t\t\tvar unit = units[index]; // key, label\r\n\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i<r_configs.length; i++) {\r\n\t\t\tdivs.push.apply(divs, (scheduler._render_marked_timespan(r_configs[i], area, day)));\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.attachEvent(\"onScaleAdd\", function(){\r\n\t\tscheduler._on_scale_add_marker.apply(scheduler, arguments);\r\n\t});\r\n\r\n\tscheduler.dblclick_dhx_marked_timespan = function(e,src){\r\n\t\tscheduler.callEvent(\"onScaleDblClick\",[scheduler.getActionData(e).date,src,e]);\r\n\r\n\t\tif (scheduler.config.dblclick_create){\r\n\t\t\tscheduler.addEventNow(scheduler.getActionData(e).date,null,e);\r\n\t\t}\r\n\t};\r\n\r\n}","function createMethod(scheduler){\r\n\tvar methods = {};\r\n\tvar isActive = false;\r\n\tfunction disableMethod(methodName, dummyMethod){\r\n\t\tdummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function(){};\r\n\r\n\t\tif(!methods[methodName]){\r\n\t\t\tmethods[methodName] = this[methodName];\r\n\t\t\tthis[methodName] = dummyMethod;\r\n\t\t}\r\n\t}\r\n\tfunction restoreMethod(methodName){\r\n\t\tif(methods[methodName]){\r\n\t\t\tthis[methodName] = methods[methodName];\r\n\t\t\tmethods[methodName] = null;\r\n\t\t}\r\n\t}\r\n\tfunction disableMethods(methodsHash){\r\n\t\tfor(var i in methodsHash){\r\n\t\t\tdisableMethod.call(this, i, methodsHash[i]);\r\n\t\t}\r\n\t}\r\n\tfunction restoreMethods(){\r\n\t\tfor(var i in methods){\r\n\t\t\trestoreMethod.call(this, i);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction batchUpdatePayload(callback){\r\n\t\ttry{\r\n\t\t\tcallback();\r\n\t\t}catch(e){\r\n\t\t\twindow.console.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.$stateProvider.registerProvider(\"batchUpdate\", function(){\r\n\t\treturn {\r\n\t\t\tbatch_update: isActive\r\n\t\t};\r\n\t}, false);\r\n\r\n\treturn function batchUpdate(callback, noRedraw) {\r\n\t\tif(isActive){\r\n\t\t\t// batch mode is already active\r\n\t\t\tbatchUpdatePayload(callback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar call_dp = (this._dp && this._dp.updateMode != \"off\");\r\n\t\tvar dp_mode;\r\n\t\tif (call_dp){\r\n\t\t\tdp_mode = this._dp.updateMode;\r\n\t\t\tthis._dp.setUpdateMode(\"off\");\r\n\t\t}\r\n\r\n\t\t// temporary disable some methods while updating multiple events\r\n\r\n\t\tconst calls = {\r\n\t\t\tsetModeDate: {date: null, mode: null},\r\n\t\t\tneedRender: false,\r\n\t\t\tneedUpdateView: false,\r\n\t\t\trepaintEvents: {}\r\n\r\n\t\t};\r\n\r\n\t\tconst rememberModeDate = (date, mode) => {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `<div class=\"dhx_info_message\">\r\n <span class=\"undo_popup_text\">Event deleted</span>\r\n <button class=\"undo_button\" data-deleted-event-id=\"${ev.id}\">Undo</button>\r\n </div>`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"<div>\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"</div>\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\"<div class='dhx_cal_scale_placeholder'>\" +\r\n\t\t\t\"</div>\"+\r\n\t\t\"<div>\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\t\"<div class='dhx_cal_data'>\" +\r\n\t\t\t\t\t\"<div class='dhx_cal_event'><div class='dhx_body'></div>\"+\r\n\t\t\t\t\"</div>\"+\r\n\t\t\t\"<div>\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"<span class='dhx_scale_h'>\"+ date.getHours() +\"</span>\"+\r\n\t\t\"<span class='dhx_scale_m'> \"+ min +\"</span>\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"<div class='dhx_cal_ltitle'><span class='dhx_mark'> </span><span class='dhx_time'></span><span class='dhx_title'></span><div class='dhx_close_icon'></div></div><div class='dhx_cal_larea'></div>\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_prepareItemForJson(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (let i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop){\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForJson(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t\t}\r\n\t\t\t} else if (prop !== undefined){\r\n\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareItemForForm(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop) {\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForForm(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[i] = \"\"; // for all falthy values\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareDataItem: function(item) {\r\n\t\tif(this._serializeAsJson){\r\n\t\t\treturn this._prepareItemForJson(item);\r\n\t\t}else {\r\n\t\t\treturn this._prepareItemForForm(item);\r\n\t\t}\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `<div ${buttonAriaAttrs} class='scheduler_popup_button dhtmlx_popup_button ${buttonCss}' data-result='${result}' result='${result}' ><div>${text}</div></div>`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"<div>\" + text.text + \"</div>\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '<div class=\"scheduler_popup_title dhtmlx_popup_title\">' + config.title + '</div>';\r\n\t\tinner += '<div class=\"scheduler_popup_text dhtmlx_popup_text\" id=\"' + contentId + '\"><span>' + (config.content ? '' : config.text) + '</span></div><div class=\"scheduler_popup_controls dhtmlx_popup_controls\">';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '</div>';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tfilterDays: null,\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date, filterDays} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tif(!(filterDays && filterDays(currentDate))){\r\n\t\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\t\tdayElement.innerText = label;\r\n\t\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\t\t\t}\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks, filterDays} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tconst weekLength = daysOfWeekContainer.children.length;\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\t\tif(weekLength !== 7){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-week-length\", weekLength);\r\n\t\t}\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tif(!(filterDays && filterDays(currDate))){\r\n\r\n\t\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\t}\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"<div id='scheduler_here' class='dhx_cal_container' style='width:100%; height:600px;'> \\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()<this.config.last_hour) || scheduler._allow_dnd ){\r\n\t\t\t\tev.start_date=new_start;\r\n\t\t\t\tev.end_date=new Date(end);\r\n\t\t\t\tif (this.config.update_render){\r\n\t\t\t\t\t//fix for repaint after dnd and scroll issue, #231\r\n\t\t\t\t\tvar sx = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\t\tthis.update_view();\r\n\t\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = sx;\r\n\t\t\t\t} else\r\n\t\t\t\t\tthis.updateEvent(this._drag_id);\r\n\t\t\t}\r\n\t\t\tif (this._table_view) {\r\n\t\t\t\tthis.for_rendered(this._drag_id,function(r){\r\n\t\t\t\t\tr.className+=\" dhx_in_move dhx_cal_event_drag\";\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onEventDrag\", [this._drag_id, this._drag_mode, e]);\r\n\t\t}\r\n\t} else {\r\n\t\tif (scheduler.checkEvent(\"onMouseMove\")){\r\n\t\t\tvar id = this._locate_event(e.target||e.srcElement);\r\n\t\t\tthis.callEvent(\"onMouseMove\",[id,e]);\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._on_mouse_down=function(e,src) {\r\n\t// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\r\n\t// let's ignore right mouse button then\r\n\tif (e.button == 2)\r\n\t\treturn;\r\n\r\n\tif (this.config.readonly || this._drag_mode) return;\r\n\tsrc = src||(e.target||e.srcElement);\r\n\tvar classname = scheduler._getClassName(src).split(\" \")[0];\r\n\r\n\tif (this.config.drag_event_body && classname == \"dhx_body\") {\r\n\t\tif(src.parentNode && src.parentNode.className.indexOf(\"dhx_cal_select_menu\") === -1){\r\n\t\t\tclassname = \"dhx_event_move\";\r\n\t\t\tthis._dragEventBody = true;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (classname) {\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\":\r\n\t\t\tif (this._table_view)\r\n\t\t\t\tthis._drag_mode=\"move\"; //item in table mode\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_event_move\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\t\tthis._drag_mode=\"move\";\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_event_resize\":\r\n\t\t\tthis._drag_mode=\"resize\";\r\n\t\t\tvar fullClass = scheduler._getClassName(src);\r\n\t\t\tif((fullClass).indexOf(\"dhx_event_resize_end\") < 0){\r\n\t\t\t\tscheduler._drag_from_start = true;\r\n\t\t\t}else{\r\n\t\t\t\tscheduler._drag_from_start = false;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_matrix_cell\":\r\n\t\tcase \"dhx_marked_timespan\":\r\n\t\t\tthis._drag_mode=\"create\";\r\n\t\t\tbreak;\r\n\t\tcase \"\":\r\n\t\t\tif (src.parentNode)\r\n\t\t\t\treturn scheduler._on_mouse_down(e,src.parentNode);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tif (!scheduler.checkEvent(\"onMouseDown\") || scheduler.callEvent(\"onMouseDown\", [classname, e])) {\r\n\t\t\t\tif (src.parentNode && src != this && classname != \"dhx_body\") {\r\n\t\t\t\t\treturn scheduler._on_mouse_down(e,src.parentNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_id=null;\r\n\t\t\tbreak;\r\n\t}\r\n\tif (this._drag_mode){\r\n\t\tvar id = this._locate_event(src);\r\n\t\tif (!this.config[\"drag_\"+this._drag_mode] || !this.callEvent(\"onBeforeDrag\",[id, this._drag_mode, e]))\r\n\t\t\tthis._drag_mode=this._drag_id=0;\r\n\t\telse {\r\n\t\t\tthis._drag_id= id;\r\n\r\n\t\t\tif (this._edit_id!=this._drag_id || (this._edit_id && this._drag_mode == \"create\"))\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tthis._drag_event = scheduler._lame_clone(this.getEvent(this._drag_id) || {});\r\n\t\t\tthis._drag_pos = this._mouse_coords(e);\r\n\t\t}\r\n\t}\r\n\tthis._drag_start=null;\r\n};\r\n\r\n\r\nscheduler._get_private_properties = function(event){\r\n\tvar fields = {};\r\n\tfor(var i in event){\r\n\t\tif(i.indexOf(\"_\") === 0){\r\n\t\t\tfields[i] = true;\r\n\t\t}\r\n\t}\r\n\treturn fields;\r\n};\r\nscheduler._clear_temporary_properties = function(clean, flagged_event){\r\n\tvar initial = this._get_private_properties(clean);\r\n\tvar current_state = this._get_private_properties(flagged_event);\r\n\tfor(var i in current_state){\r\n\t\tif(!initial[i]){\r\n\t\t\tdelete flagged_event[i];\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nscheduler._on_mouse_up=function(e){\r\n\tif (e && e.button == 2 && this._mobile) return;\r\n\tif (this._drag_mode && this._drag_id){\r\n\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"default\";\r\n\t\t//drop\r\n\r\n\t\tvar drag_id = this._drag_id;\r\n\t\tvar mode = this._drag_mode;\r\n\r\n\t\tvar moved = !this._drag_pos || this._drag_pos.has_moved;\r\n\t\tdelete this._drag_event._move_event_shift;\r\n\r\n\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\tif (moved && (this._drag_event._dhx_changed || !this._drag_event.start_date || ev.start_date.valueOf()!=this._drag_event.start_date.valueOf() || ev.end_date.valueOf()!=this._drag_event.end_date.valueOf())){\r\n\t\t\tvar is_new=(this._drag_mode==\"new-size\");\r\n\t\t\tif (!this.callEvent(\"onBeforeEventChanged\",[ev, e, is_new, this._drag_event])){\r\n\t\t\t\tif (is_new)\r\n\t\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._drag_event._dhx_changed = false;\r\n\t\t\t\t\tthis._clear_temporary_properties(ev, this._drag_event);\r\n\t\t\t\t\tscheduler._lame_copy(ev, this._drag_event);\r\n\t\t\t\t\tthis.updateEvent(ev.id);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis._drag_id = this._drag_mode = null;\r\n\t\t\t\tif (is_new && this.config.edit_on_create){\r\n\t\t\t\t\tthis.unselect();\r\n\t\t\t\t\tthis._new_event=new Date();//timestamp of creation\r\n\t\t\t\t\t//if selection disabled - force lightbox usage\r\n\t\t\t\t\tif (this._table_view || this.config.details_on_create || !this.config.select || !this.isOneDayEvent(this.getEvent(drag_id))) {\r\n\t\t\t\t\t\tscheduler.callEvent(\"onDragEnd\", [drag_id, mode, e]);\r\n\t\t\t\t\t\treturn this.showLightbox(drag_id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._drag_pos = true; //set flag to trigger full redraw\r\n\t\t\t\t\tthis._select_id = this._edit_id = drag_id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!this._new_event)\r\n\t\t\t\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[drag_id,this.getEvent(drag_id)]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._drag_pos && (this._drag_pos.has_moved || this._drag_pos === true)) {\r\n\t\t\tthis._drag_id = this._drag_mode = null; // set null to prevent _sorder recalculation for drag event\r\n\t\t\tthis.render_view_data(); //redraw even if there is no real changes - necessary for correct positioning item after drag\r\n\t\t}\r\n\t\tscheduler.callEvent(\"onDragEnd\", [drag_id, mode, e]);\r\n\t}\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode=null;\r\n\tthis._drag_pos=null;\r\n\tthis._drag_event = null;\r\n\tthis._drag_from_start = null;\r\n};\r\n\r\nscheduler._trigger_dyn_loading = function(){\r\n\tif (this._load_mode && this._load()){\r\n\t\tthis._render_wait = true;\r\n\t\treturn true;\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.update_view=function(){\r\n\tthis._reset_ignores();\r\n\tthis._update_nav_bar(\r\n\t\tthis.config.header,\r\n\t\tthis.$container.querySelector(\".dhx_cal_navline\"));\r\n\r\n\tvar view = this[this._mode + \"_view\"];\r\n\tif(view){\r\n\t\tview.call(this, true);\r\n\t}else{\r\n\t\tthis._reset_scale();\r\n\t}\r\n\r\n\tif (this._trigger_dyn_loading()){\r\n\t\treturn true;\r\n\t}\r\n\tthis.render_view_data();\r\n};\r\n\r\nscheduler.isViewExists = function(mode){\r\n\treturn !!(scheduler[mode+ \"_view\"] ||\r\n\t\t(scheduler.date[mode+ \"_start\"] && scheduler.templates[mode+ \"_date\"] && scheduler.templates[mode+ \"_scale_date\"]));\r\n};\r\n\r\nscheduler._set_aria_buttons_attrs = function(){\r\n\tvar buttonGroups = [\"dhx_cal_next_button\", \"dhx_cal_prev_button\", \"dhx_cal_tab\", \"dhx_cal_today_button\"];\r\n\tfor(var i = 0; i < buttonGroups.length; i++){\r\n\t\tvar group = this._els[buttonGroups[i]];\r\n\t\tfor(var j = 0; group && j < group.length; j++ ){\r\n\t\t\tvar name = group[j].getAttribute(\"data-tab\") || group[j].getAttribute(\"name\");\r\n\t\t\tvar label = this.locale.labels[buttonGroups[i]];\r\n\t\t\tif(name){\r\n\t\t\t\tlabel = this.locale.labels[name + \"_tab\"] || this.locale.labels[name] || label;\r\n\t\t\t}\r\n\t\t\tif(buttonGroups[i] == \"dhx_cal_next_button\"){\r\n\t\t\t\tlabel = this.locale.labels.next;\r\n\t\t\t}else if(buttonGroups[i] == \"dhx_cal_prev_button\"){\r\n\t\t\t\tlabel = this.locale.labels.prev;\r\n\t\t\t}\r\n\t\t\tthis._waiAria.headerButtonsAttributes(group[j], label || \"\");\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.updateView = function(date, mode) {\r\n\r\n\tif (!this.$container) {\r\n\t\tthrow new Error(\"The scheduler is not initialized. \\n **scheduler.updateView** or **scheduler.setCurrentView** can be called only after **scheduler.init**\");\r\n\t}\r\n\r\n\tdate = date || this._date;\r\n\tmode = mode || this._mode;\r\n\tvar dhx_cal_data = 'dhx_cal_data';\r\n\r\n\tif(!this.locale.labels.icon_form){\r\n\t\tthis.locale.labels.icon_form = this.locale.labels.icon_edit;\r\n\t}\r\n\r\n\tvar container = this._obj;\r\n\tvar oldClass = \"dhx_scheduler_\" + this._mode;\r\n\tvar newClass = \"dhx_scheduler_\" + mode;\r\n\r\n\tif (!this._mode || (container.className.indexOf(oldClass) == -1)){\r\n\t\tcontainer.className += \" \" + newClass;\r\n\t} else {\r\n\t\tcontainer.className = container.className.replace(oldClass, newClass);\r\n\t}\r\n\r\n\tvar dhx_multi_day = 'dhx_multi_day';\r\n\r\n\tvar prev_scroll = (this._mode == mode && this.config.preserve_scroll) ? this._els[dhx_cal_data][0].scrollTop : false; // saving current scroll\r\n\r\n\tvar multidayScroll;\r\n\tif(this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tmultidayScroll = this._els[dhx_multi_day][0].scrollTop;\r\n\t}\r\n\r\n\t//hide old custom view\r\n\tif (this[this._mode + \"_view\"] && mode && this._mode != mode)\r\n\t\tthis[this._mode + \"_view\"](false);\r\n\r\n\tthis._close_not_saved();\r\n\r\n\tif (this._els[dhx_multi_day]) {\r\n\t\tthis._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);\r\n\t\tthis._els[dhx_multi_day] = null;\r\n\t}\r\n\r\n\tthis._mode = mode;\r\n\tthis._date = date;\r\n\tthis._table_view = (this._mode == \"month\");\r\n\r\n\tthis._dy_shift = 0;//correction for multiday section in week/day views\r\n\r\n\t//show new view\r\n\tthis.update_view();\r\n\r\n\tthis._set_aria_buttons_attrs();\r\n\r\n\tvar tabs = this._els[\"dhx_cal_tab\"];\r\n\tif(tabs){//calendar can work without view tabs\r\n\t\tfor (var i = 0; i < tabs.length; i++) {\r\n\t\t\tvar tab = tabs[i];\r\n\r\n\t\t\tif (tab.getAttribute(\"data-tab\") == this._mode || tab.getAttribute(\"name\") == this._mode + \"_tab\"){\r\n\t\t\t\ttab.classList.add(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, true);\r\n\t\t\t}else{\r\n\t\t\t\ttab.classList.remove(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (typeof prev_scroll == \"number\") // if we are updating or working with the same view scrollTop should be saved\r\n\t\tthis._els[dhx_cal_data][0].scrollTop = prev_scroll; // restoring original scroll\r\n\r\n\tif(typeof multidayScroll == \"number\" && this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tthis._els[dhx_multi_day][0].scrollTop = multidayScroll;\r\n\t}\r\n\r\n};\r\nscheduler.setCurrentView = function(date, mode) {\r\n\tif (!this.callEvent(\"onBeforeViewChange\", [this._mode, this._date, mode || this._mode, date || this._date])) return;\r\n\tthis.updateView(date, mode);\r\n\tthis.callEvent(\"onViewChange\", [this._mode, this._date]);\r\n};\r\n\r\nscheduler.render = function(date, mode){\r\n\tscheduler.setCurrentView(date, mode);\r\n};\r\n\r\nscheduler._render_x_header = function(i,left,date,container, offset_top){\r\n\toffset_top = offset_top || 0;\r\n\t//header scale\r\n\tvar head=document.createElement(\"div\");\r\n\thead.className = \"dhx_scale_bar\";\r\n\r\n\tif(this.templates[this._mode+\"_scalex_class\"]){\r\n\t\t//'_scalex_class' - timeline already have similar template, use the same name\r\n\t\thead.className += ' ' + this.templates[this._mode+\"_scalex_class\"](date);\r\n\t}\r\n\r\n\tvar width = this._cols[i];\r\n\r\n\tif (this._mode == \"month\" && i === 0 && this.config.left_border) {\r\n\t\thead.className += \" dhx_scale_bar_border\";\r\n\t\tleft = left+1;\r\n\t}\r\n\r\n\tthis.set_xy(head, width, this.xy.scale_height-1, left, offset_top);\r\n\r\n\tvar columnHeaderText = this.templates[this._mode+\"_scale_date\"](date,this._mode); //TODO - move in separate method\r\n\thead.innerHTML = columnHeaderText;\r\n\r\n\tthis._waiAria.dayHeaderAttr(head, columnHeaderText);\r\n\r\n\tcontainer.appendChild(head);\r\n};\r\n\r\nscheduler._get_columns_num = function(from, to){\r\n\tvar count = 7;\r\n\tif (!scheduler._table_view){\r\n\t\tvar count_n = scheduler.date[\"get_\"+scheduler._mode+\"_end\"];\r\n\t\tif (count_n) to = count_n(from);\r\n\t\tcount = Math.round((to.valueOf()-from.valueOf())/(1000*60*60*24));\r\n\t}\r\n\treturn count;\r\n};\r\nscheduler._get_timeunit_start = function(){\r\n\t//start date of currently displayed time unit(day, week,...)\r\n\treturn this.date[this._mode+\"_start\"](new Date(this._date.valueOf()));\r\n};\r\n\r\nscheduler._get_view_end = function(){\r\n\tvar dd = this._get_timeunit_start();\r\n\tvar ed = scheduler.date.add(dd, 1, this._mode);\r\n\tif (!scheduler._table_view){\r\n\t\tvar count_n = scheduler.date[\"get_\"+scheduler._mode+\"_end\"];\r\n\t\tif (count_n) ed = count_n(dd);\r\n\t}\r\n\treturn ed;\r\n};\r\nscheduler._calc_scale_sizes = function(width, from, to){//\r\n\t//calculates number of displayed columns(days/units/month view cols) and their widths\r\n\tvar rtl = this.config.rtl;\r\n\tvar summ = width; //border delta\r\n\tvar count = this._get_columns_num(from, to);\r\n\t//if (this.config.rtl) this._process_ignores(scheduler.date.add(to, -1, \"day\"), count, \"day\", -1);\r\n\t//else\r\n\tthis._process_ignores(from, count, \"day\", 1);\r\n\tvar realcount = count - this._ignores_detected;\r\n\tfor (var i=0; i<count; i++){\r\n\t\tif (this._ignores[i]){\r\n\t\t\tthis._cols[i] = 0;\r\n\t\t\trealcount++;\r\n\t\t} else {\r\n\t\t\tthis._cols[i]=Math.floor(summ/(realcount-i));\r\n\t\t}\r\n\t\tsumm-=this._cols[i];\r\n\t\tthis._colsS[i]=(this._cols[i-1]||0)+(this._colsS[i-1]||(this._table_view?0:(rtl ? this.xy.scroll_width : this.xy.scale_width)));\r\n\t\t//this._colsS[j]=(this._cols[rtl ? j+1 : (i-1)]||0)+(this._colsS[rtl ? j+1 : (i-1)]||(this._table_view?0:(rtl?this.xy.scroll_width:this.xy.scale_width)+2));\r\n\t}\r\n\tthis._colsS['col_length'] = count;\r\n\tthis._colsS[count] = (this._cols[count-1]+this._colsS[count-1]) || 0;\r\n\t//this._colsS[count] = (this._cols[rtl ? 0 : count-1]+this._colsS[rtl ? 0 : count-1]) || 0;\r\n};\r\n\r\nscheduler._set_scale_col_size = function(div, width, left){\r\n\tvar c = this.config;\r\n\tthis.set_xy(div, width, c.hour_size_px*(c.last_hour-c.first_hour), left+this.xy.scale_width + 1, 0);//-1 for border\r\n};\r\n\r\nscheduler._render_scales = function(header, data_area){\r\n\t//render columns in week/units view, or header in month view\r\n\tvar sd = new Date(scheduler._min_date),\r\n\t\ted = new Date(scheduler._max_date),\r\n\t\ttoday = this.date.date_part( scheduler._currentDate());\r\n\r\n\tvar summ = parseInt(header.style.width,10) - 1;\r\n\tvar d = new Date(this._min_date);\r\n\t// if (this.config.rtl) {\r\n\t// \td = new Date(scheduler.date.add(this._max_date, -1, \"day\"));\r\n\t// }\r\n\tvar count = this._get_columns_num(sd, ed);\r\n\tthis._calc_scale_sizes(summ, sd, ed);\r\n\tvar left=0;\r\n\r\n\theader.innerHTML = \"\";\r\n\tfor (var i=0; i<count; i++){\r\n\t\tif (!this._ignores[i]){\r\n\t\t\tthis._render_x_header(i,left,d,header);\r\n\t\t}\r\n\t\tif (!this._table_view){\r\n\t\t\tvar scales=document.createElement(\"div\");\r\n\t\t\tvar cls = \"dhx_scale_holder\";\r\n\t\t\tif (d.valueOf() == today.valueOf()) cls += \" dhx_scale_holder_now\";\r\n\r\n\t\t\tscales.setAttribute(\"data-column-index\", i);\r\n\t\t\tif (this._ignores_detected && this._ignores[i]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i=this.config.first_hour*1; i < this.config.last_hour; i++) {\r\n\t\t\t\tconst firstHalf = document.createElement(\"div\");\r\n\t\t\t\tfirstHalf.className=\"dhx_scale_time_slot dhx_scale_time_slot_hour_start\";\r\n\t\t\t\tfirstHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\t\r\n\t\t\t\tlet slotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 0);\r\n\t\t\t\tfirstHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\r\n\t\t\t\tlet htmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\tif(htmlContent){\r\n\t\t\t\t\tfirstHalf.innerHTML = htmlContent;\r\n\t\t\t\t}\r\n\t\t\t\tlet cssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\tif(cssClass){\r\n\t\t\t\t\tfirstHalf.classList.add(cssClass);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscales.appendChild(firstHalf);\r\n\r\n\t\t\t\tconst secondHalf = document.createElement(\"div\");\r\n\t\t\t\tsecondHalf.className=\"dhx_scale_time_slot\";\r\n\t\t\t\tslotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 30);\r\n\t\t\t\tsecondHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\t\t\t\tsecondHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\thtmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\tif(htmlContent){\r\n\t\t\t\t\tsecondHalf.innerHTML = htmlContent;\r\n\t\t\t\t}\r\n\t\t\t\tcssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\tif(cssClass){\r\n\t\t\t\t\tsecondHalf.classList.add(cssClass);\r\n\t\t\t\t}\r\n\t\t\t\tscales.appendChild(secondHalf);\r\n\t\t\t}\r\n\r\n\t\t\tscales.className = cls+\" \"+this.templates.week_date_class(d,today);\r\n\t\t\tthis._waiAria.dayColumnAttr(scales, d);\r\n\t\t\tthis._set_scale_col_size(scales, this._cols[i], left);\r\n\r\n\t\t\tdata_area.appendChild(scales);\r\n\t\t\tthis.callEvent(\"onScaleAdd\",[scales, d]);\r\n\t\t}\r\n\t\tleft+=this._cols[i];\r\n\t\t//if (this.config.rtl) d=this.date.add(d,-1,\"day\");\r\n\t\t//else\r\n\t\td=this.date.add(d,1,\"day\");\r\n\t\td = this.date.day_start(d);\r\n\t}\r\n};\r\n\r\nscheduler._getNavDateElement = function(){\r\n\treturn this.$container.querySelector(\".dhx_cal_date\");\r\n};\r\n\r\nscheduler._reset_scale=function(){\r\n\t//current mode doesn't support scales\r\n\t//we mustn't call reset_scale for such modes, so it just to be sure\r\n\tif (!this.templates[this._mode + \"_date\"]) return;\r\n\r\n\tvar header = this._els[\"dhx_cal_header\"][0];\r\n\tvar data_area = this._els[\"dhx_cal_data\"][0];\r\n\tvar c = this.config;\r\n\r\n\theader.innerHTML = \"\";\r\n\t//data_area.scrollTop = 0; //fix flickering in FF; makes IE8 flicker instead\r\n\tdata_area.innerHTML = \"\";\r\n\r\n\tvar str = ((c.readonly || (!c.drag_resize)) ? \" dhx_resize_denied\" : \"\") + ((c.readonly || (!c.drag_move)) ? \" dhx_move_denied\" : \"\");\r\n\tdata_area.className = \"dhx_cal_data\" + str;\r\n\r\n\tthis._scales = {};\r\n\tthis._cols = [];\t//store for data section\r\n\tthis._colsS = {height: 0};\r\n\tthis._dy_shift = 0;\r\n\r\n\tthis.set_sizes();\r\n\r\n\tvar d,sd;\r\n\tvar dd = this._get_timeunit_start(),\r\n\t\ted = scheduler._get_view_end();\r\n\r\n\td = sd = this._table_view ? scheduler.date.week_start(dd) : dd;\r\n\r\n\r\n\tthis._min_date=d;\r\n\r\n\tvar navBarDateStr = this.templates[this._mode+\"_date\"](dd,ed,this._mode);\r\n\r\n\tvar scaleElement = this._getNavDateElement();\r\n\tif(scaleElement){\r\n\t\tscaleElement.innerHTML = navBarDateStr;\r\n\t\tthis._waiAria.navBarDateAttr(scaleElement, navBarDateStr);\r\n\t}\r\n\r\n\tthis._max_date = ed;\r\n\tscheduler._render_scales(header, data_area);\r\n\r\n\tif (this._table_view) // month view\r\n\t\tthis._reset_month_scale(data_area,dd,sd);\r\n\telse{\r\n\t\tthis._reset_hours_scale(data_area,dd,sd);\r\n\t\tif (c.multi_day) {\r\n\t\t\tvar dhx_multi_day = 'dhx_multi_day';\r\n\r\n\t\t\tif(this._els[dhx_multi_day]) {\r\n\t\t\t\tthis._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);\r\n\t\t\t\tthis._els[dhx_multi_day] = null;\r\n\t\t\t}\r\n\r\n\t\t\tvar c1 = document.createElement(\"div\");\r\n\t\t\tc1.className = dhx_multi_day;\r\n\t\t\tc1.style.visibility=\"hidden\";\r\n\t\t\tc1.style.display=\"none\";\r\n\t\t\tvar totalWidth = this._colsS[this._colsS.col_length];\r\n\t\t\tvar offset = c.rtl ? this.xy.scale_width : this.xy.scroll_width;\r\n\t\t\tvar hiddenWidth = Math.max(totalWidth + offset, 0);\r\n\t\t\tthis.set_xy(c1, hiddenWidth, 0, 0); // 2 extra borders, dhx_header has -1 bottom margin\r\n\t\t\tdata_area.parentNode.insertBefore(c1,data_area);\r\n\r\n\t\t\tvar c2 = c1.cloneNode(true);\r\n\t\t\tc2.className = dhx_multi_day+\"_icon\";\r\n\t\t\tc2.style.visibility=\"hidden\";\r\n\t\t\tc2.style.display=\"none\";\r\n\t\t\tthis.set_xy(c2, this.xy.scale_width + 1, 0, 0); // dhx_header has -1 bottom margin\r\n\r\n\t\t\tc1.appendChild(c2);\r\n\t\t\tthis._els[dhx_multi_day]=[c1,c2];\r\n\t\t\tscheduler.event(this._els[dhx_multi_day][0], \"click\", this._click.dhx_cal_data);\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._reset_hours_scale=function(b,dd,sd){\r\n\tvar c=document.createElement(\"div\");\r\n\tc.className=\"dhx_scale_holder\";\r\n\r\n\tvar date = new Date(1980,1,1,this.config.first_hour,0,0);\r\n\tfor (var i=this.config.first_hour*1; i < this.config.last_hour; i++) {\r\n\t\tvar cc=document.createElement(\"div\");\r\n\t\tcc.className=\"dhx_scale_hour\";\r\n\t\tcc.style.height=this.config.hour_size_px+\"px\";\r\n\t\tvar width = this.xy.scale_width;\r\n\t\tif (this.config.left_border) {\r\n\t\t\tcc.className += \" dhx_scale_hour_border\";\r\n\t\t}\r\n\t\tcc.style.width = width + \"px\";\r\n\r\n\t\tvar content = scheduler.templates.hour_scale(date);\r\n\t\tcc.innerHTML = content;\r\n\t\tthis._waiAria.hourScaleAttr(cc, content);\r\n\r\n\t\tc.appendChild(cc);\r\n\t\tdate=this.date.add(date,1,\"hour\");\r\n\t}\r\n\tb.appendChild(c);\r\n\tif (this.config.scroll_hour)\r\n\t\tb.scrollTop = this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour);\r\n};\r\n\r\nscheduler._currentDate = function(){\r\n\tif(scheduler.config.now_date){\r\n\t\treturn new Date(scheduler.config.now_date);\r\n\t}\r\n\treturn new Date();\r\n};\r\n\r\nscheduler._reset_ignores = function(){\r\n\tthis._ignores={};\r\n\tthis._ignores_detected = 0;\r\n};\r\n\r\nscheduler._process_ignores = function(sd, n, mode, step, preserve){\r\n\tthis._reset_ignores();\r\n\tvar ignore = scheduler[\"ignore_\"+this._mode];\r\n\tif (ignore){\r\n\t\tvar ign_date = new Date(sd);\r\n\t\tfor (var i=0; i<n; i++){\r\n\t\t\tif (ignore(ign_date)){\r\n\t\t\t\tthis._ignores_detected += 1;\r\n\t\t\t\tthis._ignores[i] = true;\r\n\t\t\t\tif (preserve)\r\n\t\t\t\t\tn++;\r\n\t\t\t}\r\n\t\t\tign_date = scheduler.date.add(ign_date, step, mode);\r\n\t\t\tif(scheduler.date[mode + '_start'])\r\n\t\t\t\tign_date = scheduler.date[mode + '_start'](ign_date);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._render_month_scale = function(div, dd/*month start*/, sd/*view start*/, rows ){\r\n\t//renders month view layout\r\n\r\n\tvar ed=scheduler.date.add(dd,1,\"month\"),\r\n\t\tview_start = new Date(sd);\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\tvar tdwidths=[];\r\n\r\n\tfor (var i=0; i<=7; i++) {\r\n\t\tvar cell_width = this._cols[i] || 0;\r\n\t\tif(!isNaN(Number(cell_width))){\r\n\t\t\tcell_width = cell_width + \"px\";\r\n\t\t}\r\n\t\ttdwidths[i] = cell_width;\r\n\t}\r\n\r\n\tfunction getCellHeight(row){\r\n\t\tvar h = scheduler._colsS.height;\r\n\t\tif(scheduler._colsS.heights[row + 1] !== undefined ){\r\n\t\t\th = scheduler._colsS.heights[row + 1] - (scheduler._colsS.heights[row]||0);\r\n\t\t}\r\n\t\treturn h;\r\n\t}\r\n\r\n\r\n\tvar cellheight = 0;\r\n\r\n\tconst table = document.createElement(\"div\");\r\n\ttable.classList.add(\"dhx_cal_month_table\");\r\n\r\n\tvar rendered_dates = [];\r\n\tfor (var i=0; i<rows; i++){\r\n\t\tvar row = document.createElement(\"div\");\r\n\t\trow.classList.add(\"dhx_cal_month_row\");\r\n\t\trow.style.height = getCellHeight(i) + \"px\";\r\n\t\ttable.appendChild(row);\r\n\t\t// var row_height = Math.max(getCellHeight(i) - scheduler.xy.month_head_height, 0);\r\n\t\tfor (var j=0; j<7; j++) {\r\n\t\t\tvar cell = document.createElement(\"div\");\r\n\t\t\trow.appendChild(cell);\r\n\r\n\t\t\tvar cls = \"dhx_cal_month_cell\";\r\n\t\t\tif (sd<dd)\r\n\t\t\t\tcls += ' dhx_before';\r\n\t\t\telse if (sd>=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i<sections.length; i++) {\r\n\t\tif(sections[i].map_to == property) {\r\n\t\t\tvar options = sections[i].options;\r\n\t\t\tfor (var j=0; j<options.length; j++) {\r\n\t\t\t\tif(options[j].key == key) {\r\n\t\t\t\t\treturn options[j].label;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn \"\";\r\n};\r\nscheduler.updateCollection = function(list_name, collection) {\r\n\tvar list = scheduler.serverList(list_name);\r\n\tif (!list) return false;\r\n\tlist.splice(0, list.length);\r\n\tlist.push.apply(list, collection || []);\r\n\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\tscheduler.resetLightbox();\r\n\tscheduler.hideCover();\r\n\treturn true;\r\n};\r\nscheduler._lame_clone = function(object, cache) {\r\n\tvar i, t, result; // iterator, types array, result\r\n\r\n\tcache = cache || [];\r\n\r\n\tfor (i=0; i<cache.length; i+=2)\r\n\t\tif(object === cache[i])\r\n\t\t\treturn cache[i+1];\r\n\r\n\tif (object && typeof object == \"object\") {\r\n\t\tresult = Object.create(object); // preserve prototype methods\r\n\t\tt = [Array,Date,Number,String,Boolean];\r\n\t\tfor (i=0; i<t.length; i++) {\r\n\t\t\tif (object instanceof t[i])\r\n\t\t\t\tresult = i ? new t[i](object) : new t[i](); // first one is array\r\n\t\t}\r\n\t\tcache.push(object, result);\r\n\t\tfor (i in object) {\r\n\t\t\tif (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\tresult[i] = scheduler._lame_clone(object[i], cache);\r\n\t\t}\r\n\t}\r\n\treturn result || object;\r\n};\r\nscheduler._lame_copy = function(target, source) {\r\n\tfor (var key in source) {\r\n\t\tif (source.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n};\r\nscheduler._get_date_from_pos = function(pos) {\r\n\tvar start=this._min_date.valueOf()+(pos.y*this.config.time_step+(this._table_view?0:pos.x)*24*60)*60000;\r\n\t//if (this.config.rtl) start=scheduler.date.add(this._max_date, -1, \"day\").valueOf()+(pos.y*this.config.time_step-(this._table_view?0:pos.x)*24*60)*60000;\r\n\treturn new Date(this._correct_shift(start));\r\n};\r\n// n_ev - native event\r\nscheduler.getActionData = function(n_ev) {\r\n\tvar pos = this._mouse_coords(n_ev);\r\n\treturn {\r\n\t\tdate:this._get_date_from_pos(pos),\r\n\t\tsection:pos.section\r\n\t};\r\n};\r\nscheduler._focus = function(node, select){\r\n\tif (node && node.focus){\r\n\t\tif (this._mobile){\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tnode.focus();\r\n\t\t\t},10);\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tif (select && node.select && node.offsetWidth) {\r\n\t\t\t\t\tnode.select();\r\n\t\t\t\t}\r\n\t\t\t\tnode.focus();\r\n\t\t\t} catch (e) {\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getDaysDifference(startDate, endDate) {\r\n\tconst start = new Date(startDate);\r\n\tconst end = new Date(endDate);\r\n\tconst differenceInTime = end.getTime() - start.getTime();\r\n\tconst differenceInDays = differenceInTime / (1000 * 3600 * 24);\r\n\treturn Math.abs(differenceInDays);\r\n}\r\n\r\n//non-linear scales\r\nscheduler._get_real_event_length=function(startDate, endDate, config){ // config may be a timeline view or a configuration object\r\n\tvar eventLength = endDate - startDate;\r\n\r\n\t// excludedDuration - duration between [00:00, first_hour] and [last_hour, 23:59]\r\n\t// var excludedDuration = (config._start_correction + config._end_correction)||0;\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar startColumnIndex = 0,\r\n\t\tendColumnIndex;\r\n\tif (config.render){\r\n\t\tstartColumnIndex = this._get_date_index(config, startDate);\r\n\t\tendColumnIndex = this._get_date_index(config, endDate);\r\n\r\n\t\tif(startDate.valueOf() < scheduler.getState().min_date.valueOf()){\r\n\t\t\tstartColumnIndex = -getDaysDifference(startDate, scheduler.getState().min_date);\r\n\t\t}\r\n\t\tif(endDate.valueOf() > scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\t\t\t// GS-2580: if the end date of the events is quals to the last_hour config, need to include that date\r\n\t\t\tif(intervalStart.valueOf() <= leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '<div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div><div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div></div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div>';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"<a>View more(\"+count+\" events)</a>\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"<b>Event:</b> \" + event.text + \"<br/><b>Start date:</b> \" + scheduler.templates.tooltip_date_format(start) + \"<br/><b>End date:</b> \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"<textarea class='dhx_cal_editor'>\" + ev.text + \"</textarea>\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `<div class='dhx_menu_icon ${currentIcon}' title='${this.locale.labels[currentIcon]}' ${ariaAttr}></div>`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"<div class='dhx_menu_head'></div>\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `<div event_id=\"${id}\" ${this.config.event_attribute}=\"${id}\" class=\"${cs}\"\r\n\t\t\t\tstyle=\"position:absolute; top:${y}px; ${((this.config.rtl) ? 'right:':'left:')}${x}px; width:${boxWidth}px; height:${h}px; ${(style || \"\")}\" \r\n\t\t\t\tdata-bar-start=\"${ev.start_date.valueOf()}\" data-bar-end=\"${ev.end_date.valueOf()}\">\r\n\t\t\t\t</div>`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '<div class=\"dhx_event_move dhx_header\" > </div>';\r\n\t\tinner_html += '<div class=\"dhx_event_move dhx_title\">' + contentA + '</div>';\r\n\t\tinner_html += '<div class=\"dhx_body\">' + contentB + '</div>'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '<div class=\"' + footer_class + '\" style=\" width:' + (bottom ? ' margin-top:-1px;' : '') + '\" ></div>';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"<div class='dhx_event_resize dhx_event_resize_start'></div>\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"<div class='dhx_event_resize dhx_event_resize_end'></div>\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"<div event_id='\" + ev.id + \"' \" + this.config.event_attribute + \"='\" + ev.id + \"' class='\"+ cs + \"' style='\"+style_text+\"'\"+this._waiAria.eventBarAttrString(ev)+\">\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `<span class='dhx_cal_event_clear_date'>${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}</span>`;\r\n\t}\r\n\r\n\thtml += \"<div class='dhx_cal_event_line_content'>\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '</div>';\r\n\thtml += \"</div>\";\r\n\thtml += '</div>';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i<rendered_events.length; i++) {\r\n\t\tvar rendered_event = rendered_events[i];\r\n\t\tif (rendered_event.getAttribute(scheduler.config.event_attribute) == id) {\r\n\t\t\treturn rendered_event;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\nscheduler.showEvent = function(id, mode) {\r\n\tvar section;\r\n\tif(id && typeof id === \"object\"){\r\n\t\tmode = id.mode;\r\n\t\tsection = id.section;\r\n\t\tid = id.section;\r\n\t}\r\n\tvar ev = (typeof id == \"number\" || typeof id == \"string\") ? scheduler.getEvent(id) : id;\r\n\tmode = mode||scheduler._mode;\r\n\r\n\tif (!ev || (this.checkEvent(\"onBeforeEventDisplay\") && !this.callEvent(\"onBeforeEventDisplay\", [ev, mode])))\r\n\t\treturn;\r\n\r\n\tvar scroll_hour = scheduler.config.scroll_hour;\r\n\tscheduler.config.scroll_hour = ev.start_date.getHours();\r\n\tvar preserve_scroll = scheduler.config.preserve_scroll;\r\n\tscheduler.config.preserve_scroll = false;\r\n\r\n\tvar original_color = ev.color;\r\n\tvar original_text_color = ev.textColor;\r\n\tif (scheduler.config.highlight_displayed_event) {\r\n\t\tev.color = scheduler.config.displayed_event_color;\r\n\t\tev.textColor = scheduler.config.displayed_event_text_color;\r\n\t}\r\n\r\n\tscheduler.setCurrentView(new Date(ev.start_date), mode);\r\n\r\n\tfunction restoreOriginalColors(){\r\n\t\tev.color = original_color;\r\n\t\tev.textColor = original_text_color;\r\n\t}\r\n\r\n\tscheduler.config.scroll_hour = scroll_hour;\r\n\tscheduler.config.preserve_scroll = preserve_scroll;\r\n\r\n\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\tvar timeline = scheduler.getView();\r\n\t\tvar property = timeline.y_property;\r\n\r\n\t\tvar event = scheduler.getEvent(ev.id);\r\n\r\n\t\tif(event){\r\n\t\t\tif(!section){\r\n\t\t\t\tvar section = event[property];\r\n\t\t\t\tif(Array.isArray(section)){\r\n\t\t\t\t\tsection = section[0];\r\n\t\t\t\t}else if(typeof section === \"string\" && scheduler.config.section_delimiter && section.indexOf(scheduler.config.section_delimiter) > -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"<div class='dhx_cal_ltext dhx_cal_template' ></div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `<div class='dhx_cal_ltext'><textarea ${placeholder}></textarea></div>`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"<div class='dhx_cal_ltext dhx_cal_select'><select style='width:100%;'>\";\r\n\t\t\tfor (var i=0; i < sns.options.length; i++)\r\n\t\t\t\thtml+=\"<option value='\"+sns.options[i].key+\"'>\"+sns.options[i].label+\"</option>\";\r\n\t\t\thtml+=\"</select></div>\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"<option value='\" + (i) + \"'>\" + (i) + \"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+this.locale.date.month_full[i]+\"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+i+\"</option>\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i<last){\r\n\t\t\t\t\t\t\tvar time=this.templates.time_picker(dt);\r\n\t\t\t\t\t\t\toptions+=\"<option value='\"+i+\"'>\"+time+\"</option>\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \"<select class='\"+selectBoxClass+\"' \"+readonly + ariaAttrs+\">\"+options+\"</select> \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"<div class='dhx_section_time'>\"+html+\"<span style='font-weight:normal; font-size:10pt;' class='dhx_section_time_spacer'> – </span>\"+html+\"</div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> \"+scheduler.locale.labels.full_day+\" </label></input>\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k<time_values.length; k++) {\r\n\t\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ts[i+map[0]].value=(value_found)?direct_value:fixed_value;\r\n\t\t\t\tif(!(value_found || fixed_value)){\r\n\t\t\t\t\ts[i+map[0]].selectedIndex = -1;//show empty select in FF\r\n\t\t\t\t}\r\n\t\t\t\ts[i+map[1]].value=d.getDate();\r\n\t\t\t\ts[i+map[2]].value=d.getMonth();\r\n\t\t\t\ts[i+map[3]].value=d.getFullYear();\r\n\t\t\t}\r\n\r\n\t\t\t_fill_lightbox_select(s,0,ev.start_date);\r\n\t\t\t_fill_lightbox_select(s,4,ev.end_date);\r\n\t\t},\r\n\t\tget_value:function(node, ev, config) {\r\n\t\t\tvar s = node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\r\n\t\t\tev.start_date=new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\tev.end_date=new Date(s[map[3]+4].value,s[map[2]+4].value,s[map[1]+4].value,0,s[map[0]+4].value);\r\n\r\n\t\t\tif(!(s[map[3]].value && s[map[3]+4].value)){\r\n\t\t\t\t// use the previous date if start/end years are empty (outside lightbox range)\r\n\t\t\t\tvar original = scheduler.getEvent(scheduler._lightbox_id);\r\n\t\t\t\tif(original){\r\n\t\t\t\t\tev.start_date = original.start_date;\r\n\t\t\t\t\tev.end_date = original.end_date;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.end_date<=ev.start_date)\r\n\t\t\t\tev.end_date=scheduler.date.add(ev.start_date,scheduler.config.time_step,\"minute\");\r\n\t\t\treturn {\r\n\t\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\t\tend_date: new Date(ev.end_date)\r\n\t\t\t};\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tscheduler._focus(node.getElementsByTagName(\"select\")[0]);\r\n\t\t}\r\n\t}\r\n\r\n};\r\n\r\n\t// GS-2214. Attaching the lightbox to the BODY element is not considered secure.\r\n\t// Attach it to Scheduler container for Salesforce and other secure environments\r\n\tfunction getLightboxRoot(){\r\n\t\tconst cspEnvironment = scheduler.config.csp === true;\r\n\t\tconst salesforceEnvironment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"] || ('$shadowResolver$' in document.body);\r\n\t\tif (cspEnvironment || salesforceEnvironment) {\r\n\t\t\treturn scheduler.$root;\r\n\t\t} else {\r\n\t\t\treturn document.body;\r\n\t\t}\r\n\t}\r\n\r\nscheduler._setLbPosition = function(box) {\r\n\tif(!box){\r\n\t\treturn;\r\n\t}\r\n\r\n\tbox.style.top = Math.max(getLightboxRoot().offsetHeight / 2 - box.offsetHeight/2, 0) + \"px\";\r\n\tbox.style.left = Math.max(getLightboxRoot().offsetWidth / 2 - box.offsetWidth/2, 0) + \"px\";\r\n\r\n};\r\n\r\nscheduler.showCover=function(box){\r\n\tif (box){\r\n\t\tbox.style.display=\"block\";\r\n\r\n\t\tthis._setLbPosition(box);\r\n\t}\r\n\tif(scheduler.config.responsive_lightbox){\r\n\t\tdocument.documentElement.classList.add(\"dhx_cal_overflow_container\");\r\n\t\tgetLightboxRoot().classList.add(\"dhx_cal_overflow_container\");\r\n\t}\r\n\tthis.show_cover();\r\n\tthis._cover.style.display = \"\";\r\n};\r\nscheduler.showLightbox=function(id){\r\n\tif (!id) return;\r\n\tif (!this.callEvent(\"onBeforeLightbox\",[id])) {\r\n\t\tif (this._new_event)\r\n\t\t\tthis._new_event = null;\r\n\t\treturn;\r\n\t}\r\n\tthis.showCover(box);\r\n\tvar box = this.getLightbox();\r\n\tthis._setLbPosition(box);\r\n\tthis._fill_lightbox(id,box);\r\n\tthis._waiAria.lightboxVisibleAttr(box);\r\n\t\r\n\tthis.callEvent(\"onLightbox\",[id]);\r\n};\r\nscheduler._fill_lightbox = function(id, box) {\r\n\tvar ev = this.getEvent(id);\r\n\tvar s = box.getElementsByTagName(\"span\");\r\n\tvar lightboxHeader = [];\r\n\r\n\tif (scheduler.templates.lightbox_header) {\r\n\t\tlightboxHeader.push(\"\");\r\n\t\tvar headerContent = scheduler.templates.lightbox_header(ev.start_date, ev.end_date, ev);\r\n\t\tlightboxHeader.push(headerContent);\r\n\t\ts[1].innerHTML = \"\";\r\n\t\ts[2].innerHTML = headerContent;\r\n\t} else {\r\n\t\tvar headerDate = this.templates.event_header(ev.start_date, ev.end_date, ev);\r\n\t\tvar headerTitle = (this.templates.event_bar_text(ev.start_date, ev.end_date, ev) || \"\").substr(0, 70); //IE6 fix;\r\n\r\n\t\tlightboxHeader.push(headerDate);\r\n\t\tlightboxHeader.push(headerTitle);\r\n\t\ts[1].innerHTML = headerDate;\r\n\t\ts[2].innerHTML = headerTitle;\r\n\t}\r\n\r\n\tthis._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\r\n\r\n\tvar sns = this.config.lightbox.sections;\r\n\tfor (var i = 0; i < sns.length; i++) {\r\n\t\tvar current_sns = sns[i];\r\n\t\tvar node = scheduler._get_lightbox_section_node(current_sns);\r\n\t\tvar block = this.form_blocks[current_sns.type];\r\n\t\tvar value = (ev[current_sns.map_to] !== undefined) ? ev[current_sns.map_to] : current_sns.default_value;\r\n\t\tblock.set_value.call(this, node, value, ev, current_sns);\r\n\t\tif (sns[i].focus)\r\n\t\t\tblock.focus.call(this, node);\r\n\t}\r\n\r\n\tscheduler._lightbox_id = id;\r\n};\r\n\r\nscheduler._get_lightbox_section_node = function(section){\r\n\treturn scheduler._lightbox.querySelector(`#${section.id}`).nextSibling;\r\n};\r\n\r\nscheduler._lightbox_out=function(ev){\r\n\tvar sns = this.config.lightbox.sections;\r\n\tfor (var i=0; i < sns.length; i++) {\r\n\t\tvar node = scheduler._lightbox.querySelector(`#${sns[i].id}`);\r\n\t\tnode=(node?node.nextSibling:node);\r\n\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\tvar res=block.get_value.call(this,node,ev, sns[i]);\r\n\t\tif (sns[i].map_to!=\"auto\")\r\n\t\t\tev[sns[i].map_to]=res;\r\n\t}\r\n\treturn ev;\r\n};\r\nscheduler._empty_lightbox=function(data){\r\n\tvar id=scheduler._lightbox_id;\r\n\tvar ev=this.getEvent(id);\r\n\t//var box=this.getLightbox();\r\n\r\n\tthis._lame_copy(ev, data);\r\n\r\n\tthis.setEvent(ev.id,ev);\r\n\tthis._edit_stop_event(ev,true);\r\n\tthis.render_view_data();\r\n};\r\nscheduler.hide_lightbox=function(id){\r\n\tscheduler.endLightbox(false, this.getLightbox());\r\n};\r\n\r\nscheduler.hideCover=function(box){\r\n\tif (box) box.style.display=\"none\";\r\n\tthis.hide_cover();\r\n\tif(scheduler.config.responsive_lightbox){\r\n\t\tdocument.documentElement.classList.remove(\"dhx_cal_overflow_container\");\r\n\t\tgetLightboxRoot().classList.remove(\"dhx_cal_overflow_container\");\r\n\t}\r\n};\r\nscheduler.hide_cover=function(){\r\n\tif (this._cover)\r\n\t\tthis._cover.parentNode.removeChild(this._cover);\r\n\tthis._cover=null;\r\n};\r\n\r\nscheduler.show_cover=function(){\r\n\tif(this._cover) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis._cover=document.createElement(\"div\");\r\n\tthis._cover.className=\"dhx_cal_cover\";\r\n\tthis._cover.style.display = \"none\";\r\n\r\n\tscheduler.event(this._cover, \"mousemove\", scheduler._move_while_dnd);\r\n\tscheduler.event(this._cover, \"mouseup\", scheduler._finish_dnd);\r\n\r\n\tgetLightboxRoot().appendChild(this._cover);\r\n};\r\nscheduler.save_lightbox=function(){\r\n\tvar data = this._lightbox_out({}, this._lame_copy(this.getEvent(this._lightbox_id)));\r\n\tif (this.checkEvent(\"onEventSave\") && !this.callEvent(\"onEventSave\",[this._lightbox_id, data, this._new_event]))\r\n\t\treturn;\r\n\tthis._empty_lightbox(data);\r\n\tthis.hide_lightbox();\r\n};\r\nscheduler.startLightbox = function(id, box){\r\n\tthis._lightbox_id = id;\r\n\tthis._custom_lightbox = true;\r\n\r\n\tthis._temp_lightbox = this._lightbox;\r\n\tthis._lightbox = box;\r\n\tthis.showCover(box);\r\n};\r\nscheduler.endLightbox = function(mode, box){\r\n\tvar box = box || scheduler.getLightbox();\r\n\r\n\tvar event = scheduler.getEvent(this._lightbox_id);\r\n\tif(event)\r\n\t\tthis._edit_stop_event(event, mode);\r\n\tif (mode)\r\n\t\tscheduler.render_view_data();\r\n\tthis.hideCover(box);\r\n\r\n\tif (this._custom_lightbox){\r\n\t\tthis._lightbox = this._temp_lightbox;\r\n\t\tthis._custom_lightbox = false;\r\n\t}\r\n\tthis._temp_lightbox = this._lightbox_id = null; // in case of custom lightbox user only calls endLightbox so we need to reset _lightbox_id\r\n\tthis._waiAria.lightboxHiddenAttr(box);\r\n\tthis.resetLightbox();\r\n\tthis.callEvent(\"onAfterLightbox\",[]);\r\n};\r\nscheduler.resetLightbox = function(){\r\n\tif (scheduler._lightbox && !scheduler._custom_lightbox)\r\n\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\tscheduler._lightbox = null;\r\n};\r\nscheduler.cancel_lightbox=function(){\r\n\tif(this._lightbox_id){\r\n\t\tthis.callEvent(\"onEventCancel\",[this._lightbox_id, !!this._new_event]);\r\n\t}\r\n\r\n\tthis.hide_lightbox();\r\n};\r\nscheduler.hideLightbox = scheduler.cancel_lightbox;// GS-1650 need to use cancel in order to fire onEventCancel event, which is important to refresh the state of recurring series\r\n\r\nscheduler._init_lightbox_events=function(){\r\n\tif(this.getLightbox().$_eventAttached){\r\n\t\treturn;\t\r\n\t}\r\n\tconst lightbox = this.getLightbox();\r\n\tlightbox.$_eventAttached = true;\r\n\r\n\tscheduler.event(lightbox, \"click\", function(e){\r\n\r\n\t\tif(e.target.closest(\".dhx_cal_ltitle_close_btn\")){\r\n\t\t\tscheduler.cancel_lightbox();\r\n\t\t}\r\n\t\t\r\n\t\tconst buttonTarget = scheduler.$domHelpers.closest(e.target, \".dhx_btn_set\");\r\n\t\tif(!buttonTarget) {\r\n\t\t\tconst sectionButton = scheduler.$domHelpers.closest(e.target, \".dhx_custom_button[data-section-index]\");\r\n\t\t\tif(sectionButton){\r\n\t\t\t\tconst index = Number(sectionButton.getAttribute(\"data-section-index\"));\r\n\t\t\t\tconst block = scheduler.form_blocks[scheduler.config.lightbox.sections[index].type];\r\n\t\t\t\tblock.button_click(scheduler.$domHelpers.closest(sectionButton, \".dhx_cal_lsection\"), sectionButton, e);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tconst action = buttonTarget ? buttonTarget.getAttribute(\"data-action\") : null;\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"dhx_save_btn\":\r\n\t\t\tcase \"save\":\r\n\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.save_lightbox();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dhx_delete_btn\":\r\n\t\t\tcase \"delete\":\r\n\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar c=scheduler.locale.labels.confirm_deleting;\r\n\r\n\t\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback: function(){\r\n\t\t\t\t\tscheduler.deleteEvent(scheduler._lightbox_id);\r\n\t\t\t\t\tscheduler._new_event = null; //clear flag, if it was unsaved event\r\n\t\t\t\t\tscheduler.hide_lightbox();\r\n\t\t\t\t},\r\n\t\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}});\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"dhx_cancel_btn\":\r\n\t\t\tcase \"cancel\":\r\n\t\t\t\tscheduler.cancel_lightbox();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tscheduler.callEvent(\"onLightboxButton\", [action, buttonTarget, e]);\r\n\t\t}\r\n\t});\r\n\tscheduler.event(lightbox, \"keydown\", function(e){\r\n\t\tvar event = e || window.event;\r\n\t\tvar target = e.target || e.srcElement;\r\n\t\tvar buttonTarget = target.querySelector(\"[dhx_button]\");\r\n\r\n\t\tif(!buttonTarget){\r\n\t\t\tbuttonTarget = target.parentNode.querySelector(\".dhx_custom_button, .dhx_readonly\");\r\n\t\t}\r\n\r\n\t\tswitch((e||event).keyCode){\r\n\t\t\tcase 32:{//space\r\n\t\t\t\tif ((e||event).shiftKey) return;\r\n\t\t\t\tif(buttonTarget && buttonTarget.click){\r\n\t\t\t\t\tbuttonTarget.click();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase scheduler.keys.edit_save:\r\n\t\t\t\tif ((e||event).shiftKey) return;\r\n\t\t\t\tif(buttonTarget && buttonTarget.click){\r\n\t\t\t\t\tbuttonTarget.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(scheduler.config.readonly_active){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.save_lightbox();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase scheduler.keys.edit_cancel:\r\n\t\t\t\tscheduler.cancel_lightbox();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t});\r\n};\r\nscheduler.setLightboxSize=function(){\r\n\treturn;\r\n/* TODO: inspect and remove in 7.0\r\n\tvar d = this._lightbox;\r\n\tif (!d) return;\r\n\r\n\tvar con = d.childNodes[1];\r\n\tcon.style.height=\"0px\";\r\n\tcon.style.height=con.scrollHeight+\"px\";\r\n\td.style.height=con.scrollHeight+scheduler.xy.lightbox_additional_height+\"px\";\r\n\tcon.style.height=con.scrollHeight+\"px\"; //it is incredible , how ugly IE can be*/\r\n};\r\n\r\nscheduler._init_dnd_events = function(){\r\n\tscheduler.event(getLightboxRoot(), \"mousemove\", scheduler._move_while_dnd);\r\n\tscheduler.event(getLightboxRoot(), \"mouseup\", scheduler._finish_dnd);\r\n\tscheduler._init_dnd_events = function(){};\r\n };\r\nscheduler._move_while_dnd = function(e){\r\n\tif (scheduler._dnd_start_lb){\r\n\t\tif (!document.dhx_unselectable){\r\n\t\t\tgetLightboxRoot().classList.add(\"dhx_unselectable\");\r\n\t\t\tdocument.dhx_unselectable = true;\r\n\t\t}\r\n\t\tvar lb = scheduler.getLightbox();\r\n\t\tvar now = [e.pageX, e.pageY];\r\n\t\tlb.style.top = scheduler._lb_start[1]+now[1]-scheduler._dnd_start_lb[1]+\"px\";\r\n\t\tlb.style.left = scheduler._lb_start[0]+now[0]-scheduler._dnd_start_lb[0]+\"px\";\r\n\t}\r\n};\r\nscheduler._ready_to_dnd = function(e){\r\n\tvar lb = scheduler.getLightbox();\r\n\tscheduler._lb_start = [lb.offsetLeft, lb.offsetTop];\r\n\tscheduler._dnd_start_lb = [e.pageX, e.pageY];\r\n};\r\nscheduler._finish_dnd = function(){\r\n\tif (scheduler._lb_start){\r\n\t\tscheduler._lb_start = scheduler._dnd_start_lb = false;\r\n\t\tgetLightboxRoot().classList.remove(\"dhx_unselectable\");\r\n\t\tdocument.dhx_unselectable = false;\r\n\t}\r\n};\r\nscheduler.getLightbox=function(){ //scheduler.config.wide_form=true;\r\n\tif (!this._lightbox){\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\td.className=\"dhx_cal_light\";\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\td.className+=\" dhx_cal_light_wide\";\r\n\t\tif (scheduler.form_blocks.recurring)\r\n\t\t\td.className+=\" dhx_cal_light_rec\";\r\n\t\tif (scheduler.config.rtl)\r\n\t\t\td.className+=\" dhx_cal_light_rtl\";\r\n\t\tif (scheduler.config.responsive_lightbox)\r\n\t\t\td.className += \" dhx_cal_light_responsive\";\r\n\r\n\t\td.style.visibility=\"hidden\";\r\n\t\tvar html = this._lightbox_template;\r\n\r\n\t\tvar buttons = this.config.buttons_left;\r\n\r\n\r\n\t\thtml += \"<div class='dhx_cal_lcontrols'>\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"<div \"+ariaAttr+\" data-action='\"+ buttons[i]+\"' class='dhx_btn_set dhx_\"+(scheduler.config.rtl?\"right\":\"left\")+\"_btn_set \" + buttons[i] + \"_set'><div class='dhx_btn_inner \" + buttons[i] + \"'></div><div>\" + scheduler.locale.labels[buttons[i]] + \"</div></div>\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"<div class='dhx_cal_lcontrols_push_right'></div>\";\r\n\r\n\t\t\thtml += \"<div \"+ariaAttr+\" data-action='\"+ buttons[i]+\"' class='dhx_btn_set dhx_\"+(rtl?\"left\":\"right\")+\"_btn_set \" +\r\n\t\t\t\t\t\tbuttons[i] + \"_set'><div class='dhx_btn_inner \" +\r\n\t\t\t\t\t\tbuttons[i] + \"'></div><div>\" + scheduler.locale.labels[buttons[i]] + \"</div></div>\";\r\n\t\t}\r\n\t\thtml += \"</div>\";\r\n\t\thtml+=\"</div>\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"<div \"+ariaAttr+\" class='dhx_custom_button' data-section-index='\"+i+\"' index='\"+i+\"'><div class='dhx_custom_button_\"+sns[i].button+\"'></div><div>\"+this.locale.labels[\"button_\"+sns[i].button]+\"</div></div>\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"<div class='dhx_wrap_section'>\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"<div id='\"+sns[i].id+\"' class='dhx_cal_lsection dhx_cal_lsection_\"+sns[i].name+\"'>\"+button+ \"<label>\"+label_name+\"</label></div>\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"</div>\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i<ds.length; i++) {\r\n\t\t\tvar t_ds = ds[i];\r\n\t\t\tvar className = scheduler._getClassName(t_ds);\r\n\t\t\tif (className == \"dhx_cal_larea\") {\r\n\t\t\t\tt_ds.innerHTML = html;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// bind labels to lightbox inputs\r\n\t\tscheduler._bindLightboxLabels(sns);\r\n\r\n\t\t//sizes\r\n\t\tthis.setLightboxSize();\r\n\r\n\t\tthis._init_lightbox_events(this);\r\n\t\t//d.style.display=\"none\";\r\n\t\td.style.visibility=\"visible\";\r\n\t}\r\n\r\n\r\n\treturn this._lightbox;\r\n};\r\n\r\nscheduler._bindLightboxLabels = function(sections){\r\n\t// link section labels to controls using label[for] attribute and label.onclick=control.focus as a fallback\r\n\t// label[for] is preferable for accessibility reasons\r\n\r\n\tfor(var i = 0; i < sections.length; i++){\r\n\t\tvar section = sections[i];\r\n\t\tif(!section.id || !scheduler._lightbox.querySelector(`#${section.id}`))\r\n\t\t\tcontinue;\r\n\r\n\t\tvar labelBlock = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\t\tvar label = labelBlock.querySelector(\"label\");\r\n\r\n\t\tvar inputBlock = scheduler._get_lightbox_section_node(section);\r\n\t\twhile(inputBlock && !inputBlock.querySelector){\r\n\t\t\tinputBlock = inputBlock.nextSibling;\r\n\t\t}\r\n\r\n\t\tvar fallback = true;\r\n\r\n\t\tif(inputBlock) {\r\n\t\t\tvar input = inputBlock.querySelector(\"input, select, textarea\");\r\n\t\t\tif(input){\r\n\t\t\t\tsection.inputId = input.id || \"input_\" + scheduler.uid();\r\n\t\t\t\tif(!input.id)\r\n\t\t\t\t\tinput.id = section.inputId;\r\n\t\t\t\tlabel.setAttribute(\"for\", section.inputId);\r\n\t\t\t\tfallback = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// use control.focus if failed to bind input using label[for]\r\n\t\tif(fallback){\r\n\t\t\tvar control = scheduler.form_blocks[section.type];\r\n\t\t\tif(control.focus){\r\n\t\t\t\tscheduler.event(label, \"click\", (function(section){\r\n\t\t\t\t\treturn function(){\r\n\r\n\t\t\t\t\t\tvar block = scheduler.form_blocks[section.type];\r\n\t\t\t\t\t\tvar node = scheduler._get_lightbox_section_node(section);\r\n\r\n\t\t\t\t\t\tif(block && block.focus)\r\n\t\t\t\t\t\t\tblock.focus.call(scheduler, node);\r\n\t\t\t\t\t};\r\n\t\t\t\t})(section));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(old_id, new_id){\r\n\tif(this._lightbox_id == old_id)\r\n\t\tthis._lightbox_id = new_id;\r\n});\r\n\r\nscheduler._lightbox_template= `<div class='dhx_cal_ltitle'><div class=\"dhx_cal_ltitle_descr\"><span class='dhx_mark'> </span><span class='dhx_time'></span><span class='dhx_title'></span>\r\n</div>\r\n<div class=\"dhx_cal_ltitle_controls\">\r\n<a class=\"dhx_cal_ltitle_close_btn scheduler_icon close\"></a>\r\n</div></div><div class='dhx_cal_larea'></div>`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '<div class=\"dhx_cal_navline\">' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_prev_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_next_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_today_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_date\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"day\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"week\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"month\"></div>' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_header\">' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_data\">' +\r\n\t\t\t\t\t'</div>';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '<div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div>';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '<div id=\"' + obj.id + '\" class=\"dhx_cal_container\" style=\"width:100%; height:100%;\"><div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div>' + tabs + '</div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div></div>';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.<br>\r\n\t\tYou may need a <a href=\"https://docs.dhtmlx.com/scheduler/editions_comparison.html\" target=\"_blank\">Professional version of the component</a>.<br>\r\n\t\tContact us at <a href=\"https://dhtmlx.com/docs/contact.shtml\" target=\"_blank\">https://dhtmlx.com/docs/contact.shtml</a> if you have any questions.`);\r\n\t}\r\n};","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\t\t\t// GS-2527: if the event has multiple sections, it will be inserted into the initial sections.\r\n\t\t\tif(scheduler.config.multisection && ev[property] && scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(ev)) \r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise<void> {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise<IMapPosition> {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise<IMapPosition> {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i <this._markers.length; i++) {\r\n\t\t\tthis._markers[i].marker.remove();\r\n\t\t}\r\n\t\tthis._markers = [];\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter([longitude, latitude]);\r\n this.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise<IMapPosition> {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: <http://docs.python.org/library/functions.html#divmod>\n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: <http://docs.python.org/library/datetime.html#datetime.MAXYEAR>\n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: <http://www.mcfedries.com/JavaScript/DaysBetween.asp>\n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: <http://docs.python.org/library/datetime.html#datetime.date.toordinal>\n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - <http://docs.python.org/library/datetime.html#datetime.date.fromordinal>\n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: <http://docs.python.org/library/calendar.html#calendar.monthrange>\n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: <http://docs.python.org/library/datetime.html#datetime.datetime.combine>\n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth <weekday> | <weekday>\n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // <weekday>\n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see <http://labix.org/python-dateutil/#head-cf004ee9a75592797e076752b2a889c10f445418>\n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see <http://www.ietf.org/rfc/rfc2445.txt>\n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\t\t\t// GS-2377: to show tooltip after touch and hide it when touch is outside the events\r\n\t\t\tif (scheduler._mobile && scheduler.config.touch_tooltip){\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconfig.onmouseleave(event, targetNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"<a data-link-date='\" + d_s(date) + \"' href='#'>\" + week_x(date) + \"</a>\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"<div \"+rowAttr+\" class='dhx_agenda_line dhx_agenda_line_header'>\" +\r\n\t\t\t\t\"<div \"+dateHeader+\">\"+l.date+\"</div>\" +\r\n\t\t\t\t\"<span class = 'description_header' style='padding-left:25px' \"+descriptionHeader+\">\"+l.description+\"</span>\" +\r\n\t\t\t\t\"</div>\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"<div class='dhx_agenda_area' \"+tableAttr+\">\";\r\n\t\tfor (var i=0; i<events.length; i++){\r\n\t\t\tvar ev = events[i];\r\n\t\t\tvar bg_color = (ev.color?(\"--dhx-scheduler-event-background:\"+ev.color+\";\"):\"\");\r\n\t\t\tvar color = (ev.textColor?(\"--dhx-scheduler-event-color:\"+ev.textColor+\";\"):\"\");\r\n\t\t\tvar ev_class = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\t\tagendaEventAttrString = scheduler._waiAria.agendaEventAttrString(ev);\r\n\t\t\tvar agendaDetailsButtonAttr = scheduler._waiAria.agendaDetailsBtnString();\r\n\r\n\t\t\thtml+=\"<div \"+agendaEventAttrString+\" class='dhx_agenda_line\"+(ev_class?' '+ev_class:'')+\r\n\t\t\t\t\t\"' event_id='\"+ev.id+\"' \"+scheduler.config.event_attribute+\"='\"+ev.id+\"' style='\"+color+\"\"+bg_color+\"\"+\r\n\t\t\t\t\t(ev._text_style||\"\")+\"'><div class='dhx_agenda_event_time'>\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"</div>\";\r\n\t\t\thtml+=`<div ${agendaDetailsButtonAttr} class='dhx_event_icon icon_details'><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t\t<path d=\"M15.4444 16.4H4.55556V7.6H15.4444V16.4ZM13.1111 2V3.6H6.88889V2H5.33333V3.6H4.55556C3.69222 3.6 3 4.312 3 5.2V16.4C3 16.8243 3.16389 17.2313 3.45561 17.5314C3.74733 17.8314 4.143 18 4.55556 18H15.4444C15.857 18 16.2527 17.8314 16.5444 17.5314C16.8361 17.2313 17 16.8243 17 16.4V5.2C17 4.312 16.3 3.6 15.4444 3.6H14.6667V2H13.1111ZM13.8889 10.8H10V14.8H13.8889V10.8Z\" fill=\"#A1A4A6\"/>\r\n\t\t\t</svg></div>`;\r\n\t\t\thtml+=\"<span>\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"</span></div>\";\r\n\t\t}\r\n\t\thtml+=\"<div class='dhx_v_border'></div></div>\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `<div class=\"dhx_agenda_day_date\">${dayDateToStr(date)}</div>\r\n\t\t<div class=\"dhx_agenda_day_dow\">${dayDowToStr(date)}</div>`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\tif(scheduler.ignore_agenda && scheduler.ignore_agenda(new Date(day*1))){\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `<div class=\"dhx_cal_agenda_no_events\">${scheduler.locale.labels.agenda_tab}</div>`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n<div class=\"dhx_cal_agenda_day\" data-date=\"${scheduler.templates.format_date(day)}\" data-day=\"${day.getDay()}\">\r\n\t<div class=\"dhx_cal_agenda_day_header\">${scheduler.templates.agenda_day(day)}</div>\r\n\t<div class=\"dhx_cal_agenda_day_events\">\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `</div></div>`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `<div class=\"dhx_cal_agenda_event_line ${cls||\"\"} ${calendarEvent.id == selectedId ? \"dhx_cal_agenda_event_line_selected\" : \"\"}\" ${style} ${scheduler.config.event_attribute}=\"${calendarEvent.id}\">\r\n\t<div class=\"dhx_cal_agenda_event_line_marker\"></div>\r\n\t<div class=\"dhx_cal_agenda_event_line_time\">${dates}</div>\r\n\t<div class=\"dhx_cal_agenda_event_line_text\">${description}</div>\r\n</div>`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif((edited_ev.rrule && !edited_ev.recurring_event_id) || edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rrule || ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k<evs_dates.length; k++) {\r\n\t\t\tvar tevs = scheduler.getEvents(evs_dates[k].start_date, evs_dates[k].end_date);\r\n\t\t\tfor(var j=0; j<tevs.length; j++) {\r\n\t\t\t\tif ((tevs[j].event_pid || tevs[j].id || tevs[j].recurring_event_id) != ev.id )\r\n\t\t\t\t\tevs.push(tevs[j]);\r\n\t\t\t}\r\n\t\t}\r\n\t} else {\r\n\t\tevs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\tfor (var i=0; i<evs.length; i++) {\r\n\t\t\tvar concurrent = evs[i];\r\n\t\t\t// for recurring legacy\r\n\t\t\tif (concurrent.id == ev.id || (concurrent.event_length && [concurrent.event_pid, concurrent.event_length].join(\"#\") == ev.id)) {\r\n\t\t\t\tevs.splice(i,1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t//for recurring rrule\r\n\t\t\tif (concurrent.recurring_event_id && [concurrent.recurring_event_id, concurrent._pid_time].join(\"#\") == ev.id) {\r\n\t\t\t\tevs.splice(i,1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tvar map_to = scheduler._get_section_property();\r\n\r\n\tvar single = true;\r\n\tif (checked_mode) { // custom view\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++){\r\n\t\t\tif (evs[i].id != ev.id && this._check_sections_collision(evs[i], ev))\r\n\t\t\t\tcount++;\r\n\t\t}\r\n\r\n\t\tif (count >= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows && rows.length) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"<div class='\"+sns.type+\"' ></div>\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `<div class='dhx_cal_ltext dhx_cal_radio ${sns.vertical ? \"dhx_cal_radio_vertical\": \"\"}' style='max-height:${sns.height}px;'>`;\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\tvar id = scheduler.uid();\r\n\t\t\tres += \"<label class='dhx_cal_radio_item' for='\"+id+\"'><input id='\"+id+\"' type='radio' name='\"+sns.name+\"' value='\"+sns.options[i].key+\"'><span>\"+\" \"+sns.options[i].label+\"</span></label>\";\r\n\t\t}\r\n\t\tres += \"</div>\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i<radiobuttons.length; i++) {\r\n\t\t\tif(radiobuttons[i].checked) {\r\n\t\t\t\treturn radiobuttons[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['checkbox']={\r\n\trender:function(sns) {\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\treturn '<div class=\"dhx_cal_wide_checkbox\"></div>';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"<input id='\"+id+\"' type='checkbox' value='true' name='\"+config.name+\"'\"+((isChecked)?\"checked='true'\":'')+\"'>\";\r\n\t\tvar label_html = \"<label for='\"+id+\"'>\"+(scheduler.locale.labels[\"section_\"+config.name]||config.name)+\"</label>\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t<g>\r\n\t<line x1=\"0.5\" y1=\"5\" x2=\"0.5\" y2=\"3.0598e-08\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"0.5\" x2=\"5\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"0.5\" y1=\"11\" x2=\"0.5\" y2=\"16\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"15.5\" x2=\"5\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"0.5\" x2=\"16\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"2.18557e-08\" x2=\"15.5\" y2=\"5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"15.5\" x2=\"16\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"16\" x2=\"15.5\" y2=\"11\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t</g>\r\n\t</svg>\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"<form method='POST' target='_blank'><input type='text' name='data'><input type='hidden' name='type' value=''></form>\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tscheduler.config['lightbox_'+scheduler.layers[i].name] = { };\r\n scheduler.config['lightbox_'+scheduler.layers[i].name].sections = _cloneObj(scheduler.config.lightbox.sections);\r\n\t\t\tscheduler._layers_zindex[scheduler.layers[i].name] = scheduler.config.initial_layer_zindex||5 + i*3;\r\n\t\t\tif(scheduler.layers[i].url) {\r\n\t\t\t\tvar dp = scheduler.createDataProcessor({\r\n\t\t\t\t\turl: scheduler.layers[i].url\r\n\t\t\t\t});\r\n\t\t\t\tdp.layer = scheduler.layers[i].name;\r\n\t\t\t\tscheduler._dataprocessors.push(dp);\r\n\t\t\t\tscheduler._dataprocessors[i].init(scheduler);\r\n\t\t\t}\r\n\t\t\tif(scheduler.layers[i].isDefault)\r\n\t\t\t\tscheduler.defaultLayer = scheduler.layers[i].name;\r\n\t\t}\r\n\t})();\r\n\r\n\r\n\tscheduler.showLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, true);\r\n\t};\r\n\r\n\tscheduler.hideLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, false);\r\n\t};\r\n\r\n\tscheduler.toggleLayer = function(tlayer, visible) { // visible is optional\r\n\t\tvar layer = this.getLayer(tlayer);\r\n\r\n\t\tif(typeof visible != 'undefined')\r\n\t\t\tlayer.visible = !!visible;\r\n\t\telse\r\n\t\t\tlayer.visible = !layer.visible;\r\n\r\n\t\tthis.setCurrentView(this._date, this._mode);\r\n\t};\r\n\r\n\tscheduler.getLayer = function(tlayer) { // either string with layer name or event with layer property\r\n\t\tvar layer,\r\n\t\t\tlayer_name;\r\n\t\tif(typeof tlayer == 'string')\r\n\t\t\tlayer_name = tlayer;\r\n\t\tif(typeof tlayer == 'object')\r\n\t\t\tlayer_name = tlayer.layer;\r\n\t\tfor (var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tif(scheduler.layers[i].name == layer_name)\r\n\t\t\t\tlayer = scheduler.layers[i];\r\n\t\t}\r\n\t\treturn layer;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function (event_id){\r\n\t\tvar ev = this.getEvent(event_id);\r\n this.config.lightbox.sections = this.config['lightbox_'+ev.layer].sections;\r\n scheduler.resetLightbox();\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\tvar ev = scheduler.getEvent(event_id);\r\n return !scheduler.getLayer(ev.layer).noMenu;\r\n\t});\r\n\r\n\tscheduler.attachEvent('onEventCollision', function(ev, evs) {\r\n\t\tvar layer = this.getLayer(ev);\r\n\t\tif(!layer.checkCollision)\r\n\t\t\treturn false;\r\n\t\tvar count = 0;\r\n\t\tfor(var i = 0; i<evs.length; i++) {\r\n\t\t\tif(evs[i].layer == layer.name && evs[i].id != ev.id)\r\n\t\t\t\tcount++;\r\n\t\t}\r\n\t\treturn (count >= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('<div class=') == -1)\r\n\t\t\tcontentA = (scheduler.templates['event_header_'+ev.layer])?scheduler.templates['event_header_'+ev.layer](ev.start_date,ev.end_date,ev):contentA;\r\n\t\tif(contentB.indexOf('<div class=') == -1)\r\n\t\tcontentB = (scheduler.templates['event_text_'+ev.layer])?scheduler.templates['event_text_'+ev.layer](ev.start_date,ev.end_date,ev):contentB;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = \"dhx_cal_event\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar borderBox = scheduler._border_box_events();\r\n\r\n\t\tvar borderBoxWidth = w - 2;\r\n\t\tvar boxWidth = borderBox ? borderBoxWidth : (w-4),\r\n\t\theaderWidth = borderBox ? borderBoxWidth : (w-6),\r\n\t\tbodyWidth = borderBox ? borderBoxWidth : (w-14),\r\n\t\tfooterWidth = borderBox ? (borderBoxWidth - 2) : (w-8);\r\n\r\n\t\tvar bodyHeight = borderBox ? (h - this.xy.event_header_height) : (h-30 + 1);\r\n\r\n\t\tvar html='<div event_id=\"'+id+'\" '+scheduler.config.event_attribute+'=\"'+id+'\" class=\"'+cs+'\" style=\"position:absolute; top:'+y+'px; left:'+x+'px; width:'+boxWidth+'px; height:'+h+'px;'+(style||\"\")+'\">';\r\n\t\thtml+='<div class=\"dhx_header\" style=\" width:'+headerWidth+'px;\" > </div>';\r\n\t\thtml+='<div class=\"dhx_title\">'+contentA+'</div>';\r\n\t\thtml+='<div class=\"dhx_body\" style=\" width:'+bodyWidth+'px; height:'+bodyHeight+'px;\">'+contentB+'</div>';\r\n\t\thtml+='<div class=\"dhx_footer\" style=\" width:'+footerWidth+'px;'+(bottom?' margin-top:-1px;':'')+'\" ></div></div>';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='<div event_id=\"'+ev.id+'\" '+this.config.event_attribute+'=\"'+ev.id+'\" class=\"'+cs+'\" style=\"position:absolute; top:'+y+'px; left:'+x+'px; width:'+(x2-x-15)+'px;'+(ev._text_style||\"\")+'\">';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '</div>)');\r\n\t\thtml+='</div>';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"<textarea class='dhx_cal_editor'>\"+ev.text+\"</textarea>\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i<icons.length; i++)\r\n\t\t\t\ticons_str+=\"<div class='dhx_menu_icon \"+icons[i]+\"' title='\"+this.locale.labels[icons[i]]+\"'></div>\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"<div class='dhx_menu_head'></div>\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `<div><b>Event's text:</b> ${event.text}\r\n\t\t\t\t<div><b>Location:</b> ${event.event_location}</div>\r\n\t\t\t\t<div><b>Starts:</b> ${scheduler.templates.tooltip_date_format(event.start_date)}</div>\r\n\t\t\t\t<div><b>Ends:</b> ${scheduler.templates.tooltip_date_format(event.end_date)}</div>\r\n\t\t\t</div>`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"<div \"+ariaAttr+\" class='dhx_map_area'>\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"<div \"+ariaAttr+\" class='\" + event_class + \"' event_id='\" + ev.id + \"' \"+scheduler.config.event_attribute+\"='\"+ev.id+\"' style='\" + bg_color + \"\" + color + \"\" + (ev._text_style || \"\") + \" width: \" + (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + \"px;'><div class='dhx_map_event_time' style='width: \" + scheduler.xy.map_date_width + \"px;' >\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"</div>\";\r\n\t\t\thtml += `<div ${ariaButtonAttr} class='dhx_event_icon icon_details'><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t\t<path d=\"M15.4444 16.4H4.55556V7.6H15.4444V16.4ZM13.1111 2V3.6H6.88889V2H5.33333V3.6H4.55556C3.69222 3.6 3 4.312 3 5.2V16.4C3 16.8243 3.16389 17.2313 3.45561 17.5314C3.74733 17.8314 4.143 18 4.55556 18H15.4444C15.857 18 16.2527 17.8314 16.5444 17.5314C16.8361 17.2313 17 16.8243 17 16.4V5.2C17 4.312 16.3 3.6 15.4444 3.6H14.6667V2H13.1111ZM13.8889 10.8H10V14.8H13.8889V10.8Z\" fill=\"#A1A4A6\"/>\r\n\t\t\t</svg></div>`;\r\n\t\t\thtml += \"<div class='line_description' style='width:\" + (scheduler.xy.map_description_width - scheduler.xy.map_icon_width) + \"px;'>\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"</div></div>\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"<div class='dhx_v_border' style=\"+(scheduler.config.rtl ? \"'right: \" : \"'left: \") + (scheduler.xy.map_date_width - 1) + \"px;'></div><div class='dhx_v_border_description'></div></div>\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"<div class='dhx_map_head' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"px;' ><div class='headline_date' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscheduler.xy.map_date_width + \"px;'>\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"</div><div class='headline_description' style='width: \" + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscheduler.xy.map_description_width + \"px;'>\" + l.description + \"</div></div>\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"<div class='dhx_year_month'></div>\" +\r\n\t\t\t\"<div class='dhx_year_grid\" +\r\n\t\t\t(scheduler.config.rtl ? \" dhx_grid_rtl'>\" : \"'>\") +\r\n\t\t\t\"<div class='dhx_year_week'>\"+(week_template ? week_template.innerHTML : \"\")+\"</div>\" +\r\n\t\t\t\"<div class='dhx_year_body'></div>\" +\r\n\t\t\"</div>\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"<span class='dhx_minical_input_wrapper'><input class='dhx_readonly dhx_minical_input' type='text' readonly='true'></span>\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" <select class='dhx_lightbox_time_select'>\";\r\n\t\tfor (var i = first; i < last; i += this.config.time_step * 1) { // `<` to exclude last \"00:00\" option\r\n\t\t\tvar time = this.templates.time_picker(dt);\r\n\t\t\thtml += \"<option value='\" + i + \"'>\" + time + \"</option>\";\r\n\t\t\tsns._time_values.push(i);\r\n\t\t\tdt = this.date.add(dt, this.config.time_step, \"minute\");\r\n\t\t}\r\n\t\thtml += \"</select>\";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"<div class='dhx_section_time dhx_lightbox_minical'>\" + html + \"<span class='dhx_lightbox_minical_spacer'> – </span>\" + html + \"</div>\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> \" + scheduler.locale.labels.full_day + \" </label></input>\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"<div class='\"+css+\"' style='overflow: auto; max-height: \"+sns.height+\"px; position: relative;' >\";\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\t_result += \"<label><input type='checkbox' value='\"+sns.options[i].key+\"'/>\"+sns.options[i].label+\"</label>\";\r\n\t\t}\r\n\t\t_result += \"</div>\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"<br[^>]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"</\"+tag+\">\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"<scale mode='\" + mode + \"' today='\" + scheduler._els.dhx_cal_date[0].innerHTML + \"'>\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"<column>\" + clean_html(xh[i].innerHTML) + \"</column>\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"<column>\" + clean_html(xh[0].innerHTML) + \"</column><column>\" + clean_html(xh[1].innerHTML) + \"</column>\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"<month label='\" + clean_html(xh[i].querySelector(\".dhx_year_month\").innerHTML) + \"'>\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"</month>\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"<x>\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"</x>\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"<y>\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"<row><![CDATA[\" + clean_html(el.cells[0].innerHTML) + \"]]></row>\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"</y>\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"<y>\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n<row><![CDATA[\" + clean_html(yh[i].innerHTML) + \"]]></row>\";\r\n\t\t\t\txml += \"</y>\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"</scale>\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n<row height='\" + cells[0].offsetHeight + \"'><![CDATA[\" + clean_html(days.join(\"|\")) + \"]]></row>\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n<column><![CDATA[\" + clean_html(xh[i].innerHTML) + \"]]></column>\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n<column second_scale='\" + top_col + \"'><![CDATA[\" + clean_html(xhs[i].innerHTML) + \"]]></column>\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"<event><head><![CDATA[\" + clean_html(evs[i].childNodes[0].innerHTML) + \"]]></head><body><![CDATA[\" + clean_html(evs[i].childNodes[2].innerHTML) + \"]]></body></event>\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"<event day='\" + evs[i].parentNode.getAttribute(\"day\") + \"'><body>\" + clean_html(evs[i].innerHTML) + \"</body></event>\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"<event day='\" + (day % 7) + \"' week='\" + Math.floor(day / 7) + \"' month='\" + m + \"' backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'></event>\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n<event><body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].innerHTML) + \"]]></body></event>\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n<event week='\" + week + \"' day='\" + day + \"' type='\" + e_type + \"' x='\" + zx + \"' y='\" + zy + \"' width='\" + zdx + \"' height='\" + zdy + \"' len='\" + length + \"'>\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"<header><![CDATA[\" + clean_html(evs[i].childNodes[1].innerHTML) + \"]]></header>\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"<body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].childNodes[2].innerHTML) + \"]]></body>\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"<body backgroundColor='\" + bg_color + \"' color='\" + text_color + \"'><![CDATA[\" + clean_html(evs[i].innerHTML) + \"]]></body>\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"</event>\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '<form id=\"' + uid + '\" method=\"post\" target=\"_blank\" action=\"' + url + '\" accept-charset=\"utf-8\" enctype=\"application/x-www-form-urlencoded\"><input type=\"hidden\" name=\"mycoolxmlbody\"/> </form>';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"<data>\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"</data>\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i<events.length; i++){\r\n\t\tscheduler.attachEvent(events[i], hiding_function);\r\n\t}\r\n})();\r\n\r\nscheduler.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };\r\nscheduler.templates.quick_info_content = function(start, end, ev){ return ev.details || \"\"; };\r\nscheduler.templates.quick_info_date = function(start, end, ev){\r\n\tif (scheduler.isOneDayEvent(ev) && scheduler.config.rtl){\r\n\t\treturn scheduler.templates.day_date(start, end, ev) + \" \" +scheduler.templates.event_header(end, start, ev);\r\n\t} else if (scheduler.isOneDayEvent(ev)) {\r\n\t\treturn scheduler.templates.day_date(start, end, ev) + \" \" +scheduler.templates.event_header(start, end, ev);\r\n\t} else if (scheduler.config.rtl) {\r\n\t\treturn scheduler.templates.week_date(end, start, ev);\r\n\t} else {\r\n\t\treturn scheduler.templates.week_date(start, end, ev);\r\n\t}\r\n};\r\n\r\nscheduler.showQuickInfo = function(id){\r\n\tif (id == this._quick_info_box_id) return;\r\n\tthis.hideQuickInfo(true);\r\n\tif(this.callEvent(\"onBeforeQuickInfo\", [id]) === false){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet pos;\r\n\tif(clickedElementPosition && clickedElementPosition.id == id){\r\n\t\tpos = clickedElementPosition.position;\r\n\t} else {\r\n\t\tpos = this._get_event_counter_part(id);\r\n\t}\r\n\r\n\r\n\tif (pos){\r\n\t\tthis._quick_info_box = this._init_quick_info(pos);\r\n\t\tthis._fill_quick_data(id);\r\n\t\tthis._show_quick_info(pos);\r\n\r\n\t\tthis.callEvent(\"onQuickInfo\", [id]);\r\n\t}\r\n};\r\n\r\n(function(){\r\n\r\nfunction cssTimeToMs(time) {\r\n\ttime = time || \"\";\r\n\r\n\tvar num = parseFloat(time),\r\n\t\tunit = time.match(/m?s/),\r\n\t\tmilliseconds;\r\n\r\n\tif (unit) {\r\n\t\tunit = unit[0];\r\n\t}\r\n\r\n\tswitch (unit) {\r\n\t\tcase \"s\": // seconds\r\n\t\t\tmilliseconds = num * 1000;\r\n\t\t\tbreak;\r\n\t\tcase \"ms\": // milliseconds\r\n\t\t\tmilliseconds = num;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tmilliseconds = 0;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\treturn milliseconds;\r\n}\r\n\r\nscheduler.hideQuickInfo = function(forced){\r\n\tvar qi = this._quick_info_box;\r\n\tvar eventId = this._quick_info_box_id;\r\n\tthis._quick_info_box_id = 0;\r\n\r\n\tif (qi && qi.parentNode){\r\n\t\tvar width = qi.offsetWidth;\r\n\t\tif (scheduler.config.quick_info_detached) {\r\n\t\t\tthis.callEvent(\"onAfterQuickInfo\", [eventId]);\r\n\t\t\treturn qi.parentNode.removeChild(qi);\r\n\t\t}\r\n\r\n\t\tif (qi.style.right == \"auto\")\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\t\telse\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\tif (forced) {\r\n\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t}else{\r\n\r\n\t\t\tvar style;\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tstyle = window.getComputedStyle(qi, null);\r\n\t\t\t}else if(qi.currentStyle){\r\n\t\t\t\tstyle = qi.currentStyle;\r\n\t\t\t}\r\n\t\t\tvar delay = cssTimeToMs(style[\"transition-delay\"]) + cssTimeToMs(style[\"transition-duration\"]);\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(qi.parentNode){\r\n\t\t\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t\t\t}\r\n\t\t\t}, delay);\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterQuickInfo\", [eventId]);\r\n\t}\r\n};\r\n\r\n})();\r\n\r\nscheduler.event(window, \"keydown\", function(e){\r\n\tif (e.keyCode == 27)\r\n\t\tscheduler.hideQuickInfo();\r\n});\r\n\r\nscheduler._show_quick_info = function(pos){\r\n\tvar qi = scheduler._quick_info_box;\r\n\tscheduler._obj.appendChild(qi);\r\n\tvar width = qi.offsetWidth;\r\n\tvar height = qi.offsetHeight;\r\n\r\n\tif (scheduler.config.quick_info_detached){\r\n\t\tvar left = pos.left - pos.dx*(width - pos.width);\r\n\t\tif(scheduler.getView() && scheduler.getView()._x_scroll){\r\n\t\t\t// scrollable timeline\r\n\t\t\tif(scheduler.config.rtl){\r\n\t\t\t\tleft += scheduler.getView()._x_scroll;\r\n\t\t\t}else{\r\n\t\t\t\tleft -= scheduler.getView()._x_scroll;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tvar right = left + width;\r\n\t\tif(right > window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t<div class=\"dhx_cal_qi_tcontrols\">\r\n\t\t\t<a class=\"dhx_cal_qi_close_btn scheduler_icon close\"></a>\r\n\t\t</div>\r\n\t\t<div class=\"dhx_cal_qi_title\" ${ariaAttr}>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"dhx_cal_qi_tcontent\"></div>\r\n\t\t\t\t<div class=\"dhx_cal_qi_tdate\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"dhx_cal_qi_content\"></div>`;\r\n\r\n\t//buttons\r\n\t\thtml += \"<div class=\\\"dhx_cal_qi_controls\\\">\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `<div ${ariaAttr} class=\"dhx_qi_big_icon ${buttons[i]}\" title=\"${scheduler.locale.labels[buttons[i]]}\">\r\n\t\t\t\t<div class='dhx_menu_icon ${buttons[i]}'></div><div>${scheduler.locale.labels[buttons[i]]}</div></div>`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"</div>\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `<span>${header.content}</span>`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tfunction toUTCDate(date){\r\n\t\treturn new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(),date.getSeconds()));\r\n\t}\r\n\r\n\tfunction setUTCPartsToDate(d) {\r\n\t\treturn new Date(\r\n\t\t\td.getUTCFullYear(),\r\n\t\t\td.getUTCMonth(),\r\n\t\t\td.getUTCDate(),\r\n\t\t\td.getUTCHours(),\r\n\t\t\td.getUTCMinutes(),\r\n\t\t\td.getUTCSeconds()\r\n\t\t);\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\t// GS-2596: from and to should be in UTC, \r\n\t\t// need to remove one sec to not be included in repeatedDates array\r\n\t\tfrom = toUTCDate(from || new Date(scheduler._min_date.valueOf() - 1000));\r\n\t\tto = toUTCDate(to || new Date(scheduler._max_date.valueOf() - 1000));\r\n\r\n\t\t\r\n\t\tconst utcStart = toUTCDate(ev.start_date);\r\n\t\tlet parsedRRule;\r\n\t\tif (maxCount){\r\n\t\t\t// for getRecDates() method\r\n\t\t\tparsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)};COUNT=${maxCount}`, { dtstart: utcStart });\r\n\t\t} else {\r\n\t\t\tparsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart });\r\n\t\t}\r\n\t\t//GS-2596: third parameter, includes dates that match with arguments\r\n\t\tconst repeatedDates = parsedRRule.between(from, to, true).map(date => {\r\n\t\t\tconst adjustedDate = setUTCPartsToDate(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\t//GS-2534: case when exceptions have different dates\r\n\t\tif (seriesExceptions && repeatedDates.length == 0 ){\r\n\t\t\tfor (let a in seriesExceptions){\r\n\t\t\t\tlet exception = seriesExceptions[a];\r\n\t\t\t\tif (exception) {\r\n\t\t\t\t\tif(exception.deleted){\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\telse if (from && to && exception.start_date < to && exception.end_date > from) {\r\n\t\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t} \r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\tif (isSeries(ev)) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t// if it's virtual event we can skip it\r\n\t\t\t\t} else if (!this._is_virtual_event(ev.id)) {\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!from && !to && !this._is_virtual_event(ev.id)) {\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst formatFunc = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule.value === \"ON\"){\r\n\t\t\t\tuntil = formatFunc(node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value);\r\n\t\t\t} else if(endRule.value === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `<div class=\"dhx_form_rrule\">\r\n\t\t<div class=\"dhx_form_repeat_pattern\">\r\n\t\t\t<select>\r\n\t\t\t\t<option value=\"NEVER\">${loc.repeat_never}</option>\r\n\t\t\t\t<option value=\"DAILY\">${loc.repeat_daily}</option>\r\n\t\t\t\t<option value=\"WEEKLY\">${loc.repeat_weekly}</option>\r\n\t\t\t\t<option value=\"MONTHLY\">${loc.repeat_monthly}</option>\r\n\t\t\t\t<option value=\"YEARLY\">${loc.repeat_yearly}</option>\r\n\t\t\t\t<option value=\"WORKDAYS\">${loc.repeat_workdays}</option>\r\n\t\t\t\t<option value=\"CUSTOM\">${loc.repeat_custom}</option>\r\n\t\t\t</select>\r\n\t\t</div>\r\n\t\t<div class=\"dhx_form_repeat_custom dhx_hidden\">\r\n\t\t\t<div class=\"dhx_form_repeat_custom_interval\">\r\n\t\t\t\t<input name=\"repeat_interval_value\" type=\"number\" min=\"1\">\r\n\t\t\t\t<select name=\"repeat_interval_unit\">\r\n\t\t\t\t\t<option value=\"DAILY\">${loc.repeat_freq_day}</option>\r\n\t\t\t\t\t<option value=\"WEEKLY\">${loc.repeat_freq_week}</option>\r\n\t\t\t\t\t<option value=\"MONTHLY\">${loc.repeat_freq_month}</option>\r\n\t\t\t\t\t<option value=\"YEARLY\">${loc.repeat_freq_year}</option>\r\n\t\t\t\t</select>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"dhx_form_repeat_custom_additional\">\r\n\t\t\t\t<div class=\"dhx_form_repeat_custom_week dhx_hidden\">\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"MO\" />${loc.day_for_recurring[1]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"TU\" />${loc.day_for_recurring[2]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"WE\" />${loc.day_for_recurring[3]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"TH\" />${loc.day_for_recurring[4]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"FR\" />${loc.day_for_recurring[5]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"SA\" />${loc.day_for_recurring[6]}</label>\r\n\t\t\t\t\t<label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"SU\" />${loc.day_for_recurring[0]}</label>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"dhx_form_repeat_custom_month dhx_hidden\">\r\n\t\t\t\t\t<select name=\"dhx_custom_month_option\">\r\n\t\t\t\t\t\t<option value=\"month_date\"></option>\r\n\t\t\t\t\t\t<option value=\"month_nth_weekday\"></option>\r\n\t\t\t\t\t</select>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"dhx_form_repeat_custom_year dhx_hidden\">\r\n\t\t\t\t\t<select name=\"dhx_custom_year_option\">\r\n\t\t\t\t\t\t<option value=\"month_date\"></option>\r\n\t\t\t\t\t\t<option value=\"month_nth_weekday\"></option>\r\n\t\t\t\t\t</select>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"dhx_form_repeat_ends\">\r\n\t\t\t\t<div>${loc.repeat_ends}</div>\r\n\t\t\t\t<div class=\"dhx_form_repeat_ends_options\">\r\n\t\t\t\t\t<select name=\"dhx_custom_repeat_ends\">\r\n\t\t\t\t\t\t<option value=\"NEVER\">${loc.repeat_never}</option>\r\n\t\t\t\t\t\t<option value=\"AFTER\">${loc.repeat_radio_end2}</option>\r\n\t\t\t\t\t\t<option value=\"ON\">${loc.repeat_on_date}</option>\r\n\t\t\t\t\t</select>\r\n\t\t\t\t\t<div class=\"dhx_form_repeat_ends_extra\">\r\n\t\t\t\t\t\t<div class=\"dhx_form_repeat_ends_after dhx_hidden\">\r\n\t\t\t\t\t\t\t<label><input type=\"number\" min=\"1\" name=\"dhx_form_repeat_ends_after\">${loc.repeat_text_occurences_count}</label>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"dhx_form_repeat_ends_on dhx_hidden\">\r\n\t\t\t\t\t\t\t<input type=\"date\" name=\"dhx_form_repeat_ends_ondate\">\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t</div>\r\n\t</div>`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '<div class=\"dhx_form_repeat\"> '+\r\n\t\t\t\t\t'<form> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_left\"> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"day\" />'+loc.repeat_radio_day+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"week\"/>'+loc.repeat_radio_week+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"month\" checked />'+loc.repeat_radio_month+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"repeat\" value=\"year\" />'+loc.repeat_radio_year+'</label></div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_divider\">'+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_center\"> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_day\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"day_type\" value=\"d\"/>'+loc.repeat_radio_day_type+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"day_count\" value=\"1\" />'+loc.repeat_text_day_count+'</label></div> '+\r\n\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"day_type\" checked value=\"w\"/>'+loc.repeat_radio_day_type2+'</label></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_week\">'+\r\n\t\t\t\t\t\t\t\t'<div><label>'+loc.repeat_week+'<input class=\"dhx_repeat_text\" type=\"text\" name=\"week_count\" value=\"1\" /></label>'+\r\n\t\t\t\t\t\t\t\t'<span>'+loc.repeat_text_week_count+'</span></div> '+\r\n\t\t\t\t\t\t\t\t'<table class=\"dhx_repeat_days\"> '+\r\n\t\t\t\t\t\t\t\t\t'<tr> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"1\" />'+loc.day_for_recurring[1]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"4\" />'+loc.day_for_recurring[4]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"2\" />'+loc.day_for_recurring[2]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"5\" />'+loc.day_for_recurring[5]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"3\" />'+loc.day_for_recurring[3]+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"6\" />'+loc.day_for_recurring[6]+'</label></div></td> '+\r\n\t\t\t\t\t\t\t\t\t\t'<td><div><label><input class=\"dhx_repeat_checkbox\" type=\"checkbox\" name=\"week_day\" value=\"0\" />'+loc.day_for_recurring[0]+'</label></div> </td> '+\r\n\t\t\t\t\t\t\t\t\t'</tr> '+\r\n\t\t\t\t\t\t\t\t'</table> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div id=\"dhx_repeat_month\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_month_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"month_type\" value=\"d\"/>'+loc.repeat_radio_month_type+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_day\" value=\"1\" />'+loc.repeat_text_month_day+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_count\" value=\"1\" />'+loc.repeat_text_month_count+'</label></div> '+\r\n\t\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_month_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"month_type\" checked value=\"w\"/>'+loc.repeat_radio_month_start+'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"month_week2\" value=\"1\" />'+\r\n\t\t\t\t\t\t\t\t\t'<label>'+\r\n\t\t\t\t\t\t\t\t\t\t'<select name=\"month_day2\">'+\r\n\t\t\t\t\t\t\t\t\t\t'\t<option value=\"1\" selected >'+scheduler.locale.date.day_full[1]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+scheduler.locale.date.day_full[2]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+scheduler.locale.date.day_full[3]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+scheduler.locale.date.day_full[4]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+scheduler.locale.date.day_full[5]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+scheduler.locale.date.day_full[6]+\r\n\t\t\t\t\t\t\t\t\t\t\t'<option value=\"0\">'+scheduler.locale.date.day_full[0]+\r\n\t\t\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\t\t\tloc.repeat_text_month_count2_before+\r\n\t\t\t\t\t\t\t\t\t'</label>'+\r\n\t\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"month_count2\" value=\"1\" />'+loc.repeat_text_month_count2_after+'</label></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t\t'<div style=\"display:none;\" id=\"dhx_repeat_year\"> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_year_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"year_type\" value=\"d\"/>'+loc.repeat_radio_day_type+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label><input class=\"dhx_repeat_text\" type=\"text\" name=\"year_day\" value=\"1\" />'+loc.repeat_text_year_day+'</label>'+\r\n\t\t\t\t\t\t\t\t'<label>'+\r\n\t\t\t\t\t\t\t\t\t'<select name=\"year_month\">'+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"0\" selected >'+loc.month_for_recurring[0]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"1\">'+loc.month_for_recurring[1]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+loc.month_for_recurring[2]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+loc.month_for_recurring[3]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+loc.month_for_recurring[4]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+loc.month_for_recurring[5]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+loc.month_for_recurring[6]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+loc.month_for_recurring[7]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"8\">'+loc.month_for_recurring[8]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"9\">'+loc.month_for_recurring[9]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"10\">'+loc.month_for_recurring[10]+\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"11\">'+loc.month_for_recurring[11]+\r\n\t\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\t\tloc.select_year_month+\r\n\t\t\t\t\t\t\t\t'</label></div> '+\r\n\t\t\t\t\t\t\t\t'<div><label class = \"dhx_repeat_year_label\"><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"year_type\" checked value=\"w\"/>'+loc.repeat_year_label+'</label>'+\r\n\t\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"year_week2\" value=\"1\" />'+\r\n\t\t\t\t\t\t\t\t'<select name=\"year_day2\">'+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"1\" selected >'+scheduler.locale.date.day_full[1]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+scheduler.locale.date.day_full[2]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+scheduler.locale.date.day_full[3]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+scheduler.locale.date.day_full[4]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+scheduler.locale.date.day_full[5]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+scheduler.locale.date.day_full[6]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+scheduler.locale.date.day_full[0]+\r\n\t\t\t\t\t\t\t\t'</select>'+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'<select name=\"year_month2\">'+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"0\" selected >'+loc.month_for_recurring[0]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"1\">'+loc.month_for_recurring[1]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"2\">'+loc.month_for_recurring[2]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"3\">'+loc.month_for_recurring[3]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"4\">'+loc.month_for_recurring[4]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"5\">'+loc.month_for_recurring[5]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"6\">'+loc.month_for_recurring[6]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"7\">'+loc.month_for_recurring[7]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"8\">'+loc.month_for_recurring[8]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"9\">'+loc.month_for_recurring[9]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"10\">'+loc.month_for_recurring[10]+\r\n\t\t\t\t\t\t\t\t\t'<option value=\"11\">'+loc.month_for_recurring[11]+\r\n\t\t\t\t\t\t\t\t'</select></div> '+\r\n\t\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_divider\">'+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t\t'<div class=\"dhx_repeat_right\"> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" checked/>'+loc.repeat_radio_end+'</label></div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" />'+loc.repeat_radio_end2+'</label>'+\r\n\t\t\t\t\t\t\t'<input class=\"dhx_repeat_text\" type=\"text\" name=\"occurences_count\" value=\"1\" />'+loc.repeat_text_occurences_count+'</div> '+\r\n\t\t\t\t\t\t\t'<div><label><input class=\"dhx_repeat_radio\" type=\"radio\" name=\"end\" />'+loc.repeat_radio_end3+'</label>'+\r\n\t\t\t\t\t\t\t'<input class=\"dhx_repeat_date\" type=\"text\" name=\"date_of_end\" value=\"'+scheduler.config.repeat_date_of_end+'\" /></div> '+\r\n\t\t\t\t\t\t'</div> '+\r\n\t\t\t\t\t'</form> '+\r\n\t\t\t\t'</div> '+\r\n\t\t\t\t'</div>';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"<event>\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\"><![CDATA[\"+(attrs[i][1]?attrs[i][1](ev[attrs[i][0]]):ev[attrs[i][0]])+\"]]></\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"</event>\");\r\n\t}\r\n\treturn (header||\"\")+\"<data>\"+xml.join(\"\\n\")+\"</data>\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\t// GS-2377: don't hide tooltip on mobile device when ontouchstart event occurs\r\n\t\tif (scheduler._mobile && scheduler.config.touch_tooltip) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"<div class='dhx_tooltip_line' style='\" + bg_color + \"\" + color + \"' event_id='\" + evs[i].id + \"' \"+this.config.event_attribute+\"='\"+evs[i].id+\"'>\";\r\n\t\t\thtml += \"<div class='dhx_tooltip_date' style='\" + bg_color + \"\" + color + \"'>\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"</div>\";\r\n\t\t\thtml += \"<div class='dhx_event_icon icon_details'> </div>\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"</div>\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"<div class='dhx_year_month'></div><div class='dhx_year_grid'><div class='dhx_year_week'>\" + week_template.innerHTML + \"</div><div class='dhx_year_body'></div></div>\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `<div class='dhx_year_month'>${this.templates.year_month(currentDate)}</div>\r\n\t\t\t<div class='dhx_year_grid'></div>`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tfilterDays: scheduler.ignore_year,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;"],"names":["global$1","window","global","dragHighlightPos","scheduler","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","createMarkerConfig","configSettings","sectionId","style","top","left","marginLeft","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","monthViewMarkersArray","weekDates","currDate","Date","valueOf","obj","push","week_start","cells","$container","querySelectorAll","event_attribute","id","i","length","cloneNode","unitMarkersArray","sectionPropertyName","y_property","map_to","formatedSections","String","split","section_delimiter","map","element","elems","columnViewMarkersArray","eventNodes","eventNodeClone","getAttribute","forEach","cfg","attachEvent","mode","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","n","unmarkTimespan","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","get_resulting_options","days","zones","options","type","getZones","ev","timespans","day_index","day_value","timespan_type","s","containers","_props","matrix","container","property","view","linker","_add_timespan_zones","_get_blocked_zones","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","on_overlap","res","temp_start_date","temp_end_date","_marked_timespans","date_part","getDay","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","timeline_zones","blocked_timeline_zones","this","_get_relevant_blocked_zones","resultZones","concat","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","dates","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","document","createElement","innerHTML","appendChild","area","day","blocks","min_date","max_date","date_to_display","min_day","areas","d","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","max","min","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","firstChild","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","unit","_get_unit_index","day_ind","unitsPerDay","floor","_date","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","callback","console","error","$stateProvider","registerProvider","batch_update","noRedraw","dp_mode","call_dp","_dp","updateMode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","render","setCurrentView","updateView","render_data","render_view_data","updateEvent","sendData","initPlugins","deletedEvent","copy","undo_deleted","new_event","message","text","expire","addEvent","limit","batchUpdate","uidSeed","isDate","getFullYear","getMonth","utils","mixin","source","force","f","undefined","object","result","isArray","pop","Function","prototype","toString","constructor","Number","Boolean","varType","Object","defined","delay","timeout","timer","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","extend","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","renderCalendar","navigation","handler","calendar","html_element","renderElement","renderer","rows","cols","value","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","body","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","$destroyed","a","b","newSize","triggerSchedulerResize","$root","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","EventHost","_silent_mode","listeners","_silentStart","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","attachAll","name","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","addEventListener","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","detach","detachAll","staticArray","createEventScope","_eventRemoveAll","_createDomEventScope","_trim","str","trim","replace","_isDate","_isObject","getClassName","node","baseVal","locateCss","classname","strict","trg","srcElement","ind","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","hasHref","nodeName","loLowerCase","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","contains","getFocusableNodes","nodes","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","serialized","encodeURIComponent","JSON","stringify","generateStringToDate","format","utc","splt","mask","match","code","csp_str_to_date","set","temp","locale","month_short_hash","month_full_hash","UTC","cspEnabled","useCsp","csp","init","month_short","month_full","old","setSeconds","setMilliseconds","setTime","getTime","time_part","getTimezoneOffset","shift","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","parseYMD","parseMDY","parseDMY","dateString","parse_exact_format","datestr","nday","first_thursday","year_number","ordinal_date","convert_to_utc","getSerializator","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_load_mode","lf","templates","load_format","cache_line","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","events","dhx_security","collections","collections_loaded","collection","option","option_key","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","parse_date","dh","dm","utcMark","dy","dn","dd","server_utc","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","_after_call","_tagvalue","_init_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","load","setLoadMode","array","show_loading","_x","_y","_obj","_init_touch_events","touch","MSStream","platform","maxTouchPoints","scroll_width","_mobile","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","names","accessor","ignore","tracker","drag_mode","scroll_mode","action_mode","dblclicktime","attachTouchEvent","_is_lightbox_open","passive","drag_cancel","_hide_global_tip","_on_mouse_up","_temp_touch_block","_drag_pos","_pointerDragId","acc","dnd","timeline","original_render","drag_id","getEvents","_sorder","_count","_on_mouse_move","preventDefault","cancelBubble","_update_global_tip","abs","fake_event","pointerId","_click","dhx_cal_data","_on_dbl_click","_block_next_stop","touch_drag","actTask","_locate_event","fakeTask","sourceTask","_ignore_next_click","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","event_header","day_date","labels","drag_to_create","drag_to_move","calculatedMaterial","cachedBorderBoxValue","checkIfBorderBoxStyling","_is_material_skin","probe","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","flatSkinHourScale","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","_build_skin_info","clearInterval","monitorIntervalId","setInterval","csstheme","setSkin","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","_theme_info","theme","cssVarTheme","values","themeVariables","_configure","col","_skin_init","hour_scale","hour_date","_old_month_day","month_day","old_month_day","dhx_cal_today_button","tab","header","tabs","specialTabs","tabName","find","filter","firstTab","reverse","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_new_event","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","deleteEvent","_add_rec_marker","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","keyCode","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","_waiAria","messageButtonAttrString","getFirstDefined","_createBox","ok","cancel","contentId","messageModalAttr","inner","title","content","message_ok","message_cancel","buttons","btn","getElementById","hidden","focus","alertPopup","confirmPopup","boxPopup","box_params","params","focusable","messageInfoAttr","timers","pull","seed","hideAll","popups","alert","confirm","modalbox","setTransactionMode","total","headers","payload","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","method","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","catch","valid","_forEachUpdatedRow","_getAllData","out","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","_is_virtual_event","_set_event_text_style","r","cssText","event_updated","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","func","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","item","processedItem","prop","formatDate","_prepareItemForJson","_prepareItemForForm","_prepareDataItem","dataItem","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","prev","year","month","hour","minute","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","cs","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","DatePicker","modes","currentRange","eventDates","filterDays","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","_toggleMode","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","weekLength","children","setProperty","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProviders","internal","provider","unregisterProvider","commonViews","agenda","grid","week_agenda","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","exportToPNG","exportToPDF","extend$l","_detachDomEvent","_init_once","scheduler_resize_listener","hasSchedulerMarkup","wai_aria_application_role","views","_grid","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","edit_save","edit_cancel","functor","scale_x","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","prepareValue","prepared","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","differenceInDays","_select_id","_close_not_saved","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","icon","def_step","dhx_cal_tab","deprecated_name","substring","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","base","duration","event_duration","time_step","start_hour","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","_colsS","$domHelpers","dataArea","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","title_confirm_closing","positive_closing","_correct_shift","back","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","maxY","precisePos","minDate","preciseDate","cursor","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","drag_event_body","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_reset_ignores","_reset_scale","isViewExists","_set_aria_buttons_attrs","buttonGroups","group","headerButtonsAttributes","icon_form","oldClass","newClass","multidayScroll","dhx_multi_day","prev_scroll","preserve_scroll","_dy_shift","headerToggleState","_render_x_header","offset_top","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","count","count_n","_get_timeunit_start","_get_view_end","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","scales","cls","firstHalf","slotDate","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","_getNavDateElement","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","hiddenWidth","c2","cc","hourScaleAttr","scroll_hour","now_date","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","lightbox","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","getHeaderCellAttr","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","agendaDetailsBtnString","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","buttonLabel","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","dom","assert","show_errors","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","$","counter","Promise","clearAll","createConfig","async","serializeRequestParams","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xpathExp","docObj","selectNodes","first","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","readyState","filePath","open","toUpperCase","send","$ajax","default_date","month_date","load_date","week_date","date_format","api_date","day_column_padding","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","$initial","xml_date","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","clear_view","extra_data","silent","setEvent","hash","create_getter","create_setter","is_visible_events","clear_event","evFirstHour","evLastHour","lastHour","checkEndDate","get_visible_events","only_timed","filter_event","_is_main_area_event","hold","full","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_table","_pre_render_events_line","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","weekCellIndex","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","zIndex","color","tplClass","_editor","shiftKey","ariaAttr","icons","icons_str","currentIcon","textColor","highlightEventPosition","contentA","contentB","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","getLightboxRoot","cspEnvironment","salesforceEnvironment","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","inputBlock","fallback","inputId","old_id","getRootView","hooks","didInsert","cmp","skins","jQuery","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","oldDate","oldMode","updateFlags","lazy_updateView","ars","createDataProcessor","tMode","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","extensionList","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","multisection","isMultisectionEvent","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","ctrlKey","metaKey","_buffer_event","_key_nav_copy_paste","getActiveNode","new_ev","scheduler_handlers","attachSchedulerHandlers","waitCall","keyDownHandler","focusHandler","keepScrollPosition","focusGlobalNode","enable","reFocusActiveNode","activeNode","isValid","MinicalButton","MinicalCell","mousedownHandler","dataAreaClick","listOfScales","some","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","addEventMarker","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","clearEventMarkers","latitude","longitude","resolveAddress","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","equals","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","toOrdinal","date2","differencems","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","clone","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","IterResult","_result","before","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","l","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","MDAYs","decodeM","S","freqIsDailyOrGreater","fromText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","minutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","Days","parseIndividualNumber","optionKey","parts","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","tzOffset","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","all","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","mmask","mdaymask","nmdaymask","mrange","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","Iterinfo","rebuild","lastyear","yearinfo","lastmonth","monthinfo","nwdaymask","ranges","eastermask","g","yearStart","ydayset","mdayset","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","timeset","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","millisecondModulo","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","toText","isFullyConvertibleToText","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","_b","parms","rdateTzid","parseRDate","rrulestr","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rdateval","parm","createGetterSetter","fieldName","field","_rrule","field_1","_rdate","_exrule","_exdate","_exdateHash","_accept","evalExdate","zonedDate","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","rule","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","touch_tooltip","onmouseleave","onmousemove","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","gplExtensions","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","_agendaScrollTop","agenda_area","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","ignore_agenda","renderDay","calendarEvent","selectedId","all_timed_month","is_event_short","_safe_copy","proto","isPrototypeOf","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","recurring_event_id","_roll_back_dates","_check_sections_collision","evs_dates","getRecDates","tevs","concurrent","_pid_time","checked_mode","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","year_y","cur_height","week_agenda_scale_height","eventsContainer","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","cookie_param","old_load","drag_between","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","selected_id","addOption","disable","selectOption","setComboValue","all_options","single_option","getIndexByValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","getTimeline","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","info","_plain_export_copy","$text","_create_hidden_form","submit","_hidden_export_form","_get_export_size","footer","A5","A4","A3","A2","A1","A0","dataX","cSize","parseFloat","smartRendering","initialSizes","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","grid_view","html_templates","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","createCommand","modifiers","alt","ctrl","meta","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","printableKey","fromCharCode","getHashFromEvent","getHash","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","EventHandler","_handlers","doAction","returnValue","bindAll","initKeys","nextItem","currentFocus","currentIndex","renderMultiple","currentStart","currentEnd","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","tempStart","tempEnd","_timeline_getX","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","globalNode","_getGrid","_getNode","enabled","newRow","newCol","blurNode","editor","defaultPrevented","schedulerNode","_timeout","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","cellIndex","td","renderMinical","cal","added","destroyMinical","_def_count","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","setupMapView","createAdapter","unmodifiedEvent","_eventLocationChanged","map_settings","resolve_event_location","_latLngUpdate","addEventWithLocation","updateEventMarker","newIdEvent","removeEventMarker","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","map_end","mapContainer","adapter","elem_id","marginRight","marginTop","destroy","initialize","geolocation","getCurrentPosition","coords","_updateEventLocation","_event_resolve_delay","ret","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","_render_calendar","unmarkCalendar","cont","tpos","_get_def_cont","$dom","dateAttribute","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_children","_mark_inputs","_ids","script_url","divLoading","multisource","mvc","update_timer","use_id","sanitize","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","last_event","dragger","dhtmlDragAndDropObject","stopDrag","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_end","xml_top","profile","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","to_pdf","objects","getPDFData","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","fitQIInsideWindow","quickInfoPopup","popupRect","offsetBottom","getPositionInsideScheduler","_$quickInfoHandler","eventElement","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","_quick_info_onscroll_handler","$testmode","_qi_button_click","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","txt_replace","txts","txtt","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","originalForm","readonlyForm","_lightbox_r","clearMilliseconds","isSeries","toUTCDate","old_add_event","groupExceptions","exceptions","original_start","_rec_temp","_rec_markers_pull","_rec_markers","_get_rec_marker","ch","_get_rec_markers","ev_id","_ignore_call","tev","_pid_changed","_is_modified_occurence","idTimestamp","nid","nev","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","repeat_date","old_update_event","toIcalString","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","non_render","maxCount","seriesExceptions","utcStart","parsedRRule","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","jsDaysToRRULEDays","RruleDayNumsToJs","formatDayNumber","repeat_monthly_date","repeat_monthly_weekday","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","formatFunc","endRule","NEVER","fillInDefaults","dayNum","dayLabel","dateOfMonth","nthWeekDayOfMonth","dateOfYear","nthWeekDayOfYear","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getFirstSectionOfType","rec","_get_node","_outer_html","loc","_init_set_value","_ds","weekly","monthly","yearly","_rec_init_done","rf","blocked","rruleset","topOption","rruleObj","untilDate","customFreq","actual_dates","timeControl","recurrence","_start","recurring_legacy","getRecurringSection","occurrence_timestamp_in_utc","outerHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","date_str","register_els","inps","change_current_view","set_end_rule","_get_repeat_code","get_rcode","str_date","transpose_type","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","_set_repeat_code","MouseEvent","elements","_toggle_block","_get_button","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","targetEventId","s2d","d2s","select_event","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","ignore_year","locateEvent","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"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","x_google_ignoreList":[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111]}
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 1 × Files: 7
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
sources
DIR
-
drwxr-xr-x
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.css
115.32 KB
lrw-r--r--
2026-04-28 09:11:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.d.ts
62.97 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.es.d.ts
62.97 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.es.js
642.74 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.es.js.map
1.71 MB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.js
504.70 KB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dhtmlxscheduler.js.map
1.69 MB
lrw-r--r--
2026-04-28 09:11:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).