dhtmlx-scheduler 6.0.4 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/bower.json +1 -1
- package/codebase/dhtmlxscheduler.css +1 -10
- package/codebase/dhtmlxscheduler.d.ts +192 -9
- package/codebase/dhtmlxscheduler.es.d.ts +2310 -0
- package/codebase/dhtmlxscheduler.es.js +8104 -0
- package/codebase/dhtmlxscheduler.es.js.map +1 -0
- package/codebase/dhtmlxscheduler.js +76 -36
- package/codebase/dhtmlxscheduler.js.map +1 -1
- package/codebase/sources/dhtmlxscheduler.css +3172 -2607
- package/codebase/sources/dhtmlxscheduler.es.js +16322 -0
- package/codebase/sources/dhtmlxscheduler.es.js.map +1 -0
- package/codebase/sources/dhtmlxscheduler.js +14670 -23427
- package/codebase/sources/dhtmlxscheduler.js.map +1 -0
- package/codebase/sources/less/package.json +2 -8
- package/codebase/sources/less/scripts.js +4 -3
- package/codebase/sources/less/src/agenda.less +70 -0
- package/codebase/sources/less/src/agenda_legacy.less +68 -0
- package/codebase/sources/less/src/base.less +415 -0
- package/codebase/sources/less/src/buttons.less +203 -0
- package/codebase/sources/less/src/columns_event.less +216 -0
- package/codebase/sources/less/src/columns_view.less +115 -0
- package/codebase/sources/less/src/datepicker.less +279 -0
- package/codebase/sources/less/src/grid_view.less +68 -0
- package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff +0 -0
- package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff2 +0 -0
- package/codebase/sources/less/src/icons.less +228 -0
- package/codebase/sources/less/src/imgs/alert.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/down.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/left.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/right.svg +3 -0
- package/codebase/sources/less/src/imgs/arrow/up.svg +3 -0
- package/codebase/sources/less/src/imgs/calendar.svg +3 -0
- package/codebase/sources/less/src/imgs/cancel.svg +3 -0
- package/codebase/sources/less/src/imgs/check.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/down.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/left.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/right.svg +3 -0
- package/codebase/sources/less/src/imgs/chevron/up.svg +3 -0
- package/codebase/sources/less/src/imgs/clock.svg +3 -0
- package/codebase/sources/less/src/imgs/close.svg +3 -0
- package/codebase/sources/less/src/imgs/delete.svg +3 -0
- package/codebase/sources/less/src/imgs/details.svg +3 -0
- package/codebase/sources/less/src/imgs/dots/h.svg +3 -0
- package/codebase/sources/less/src/imgs/dots/v.svg +3 -0
- package/codebase/sources/less/src/imgs/drag.svg +3 -0
- package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-horizontal.svg → src/imgs/drag_horizontal.svg} +1 -1
- package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-vertical.svg → src/imgs/drag_vertical.svg} +0 -3
- package/codebase/sources/less/src/imgs/edit.svg +4 -0
- package/codebase/sources/less/src/imgs/form.svg +3 -0
- package/codebase/sources/less/src/imgs/iclose.svg +3 -0
- package/codebase/sources/less/src/imgs/loading.svg +3 -0
- package/codebase/sources/less/src/imgs/menu/down.svg +3 -0
- package/codebase/sources/less/src/imgs/menu/right.svg +3 -0
- package/codebase/sources/less/src/imgs/menu.svg +1 -0
- package/codebase/sources/less/src/imgs/ok.svg +10 -0
- package/codebase/sources/less/src/imgs/plus.svg +3 -0
- package/codebase/sources/less/src/imgs/save.svg +3 -0
- package/codebase/sources/less/src/imgs/sort/asc.svg +3 -0
- package/codebase/sources/less/src/imgs/sort/desc.svg +3 -0
- package/codebase/sources/less/src/index.less +22 -0
- package/codebase/sources/less/src/layout.less +0 -0
- package/codebase/sources/less/src/lightbox.less +480 -0
- package/codebase/sources/less/src/misc.less +46 -0
- package/codebase/sources/less/src/modals.less +138 -0
- package/codebase/sources/less/src/month_event.less +85 -0
- package/codebase/sources/less/src/month_view.less +112 -0
- package/codebase/sources/less/src/quick_info.less +145 -0
- package/codebase/sources/less/src/themes/contrast_black.less +51 -0
- package/codebase/sources/less/src/themes/contrast_white.less +51 -0
- package/codebase/sources/less/src/themes/dark.less +34 -0
- package/codebase/sources/less/src/themes/flat.less +108 -0
- package/codebase/sources/less/src/themes/index.less +6 -0
- package/codebase/sources/less/src/themes/material.less +138 -0
- package/codebase/sources/less/src/themes/variables.less +263 -0
- package/codebase/sources/less/src/timeline.less +269 -0
- package/codebase/sources/less/src/tooltip.less +21 -0
- package/codebase/sources/less/src/week_agenda_view.less +80 -0
- package/codebase/sources/less/src/year_view.less +83 -0
- package/codebase/sources/less/theme.less +2 -0
- package/package.json +3 -3
- package/whatsnew.md +28 -0
- package/codebase/dhtmlxscheduler_contrast_black.css +0 -10
- package/codebase/dhtmlxscheduler_contrast_white.css +0 -10
- package/codebase/dhtmlxscheduler_flat.css +0 -10
- package/codebase/dhtmlxscheduler_material.css +0 -10
- package/codebase/dhtmlxscheduler_material_nofont.css +0 -10
- package/codebase/dhtmlxscheduler_terrace.css +0 -10
- package/codebase/sources/less/dhtmlxscheduler.less +0 -9
- package/codebase/sources/less/dhtmlxscheduler_contrast_black.less +0 -3
- package/codebase/sources/less/dhtmlxscheduler_contrast_white.less +0 -3
- package/codebase/sources/less/dhtmlxscheduler_flat.less +0 -2
- package/codebase/sources/less/dhtmlxscheduler_material.less +0 -5
- package/codebase/sources/less/dhtmlxscheduler_material_nofont.less +0 -3
- package/codebase/sources/less/dhtmlxscheduler_terrace.less +0 -2
- package/codebase/sources/less/skins/basic/clear.less +0 -106
- package/codebase/sources/less/skins/basic/ext.less +0 -1135
- package/codebase/sources/less/skins/basic/imgs/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/buttons.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/calendar.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/clock_big.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/clock_small.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/controls.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/databg.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/databg_now.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/export_ical.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/export_pdf.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/icon.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/images.png +0 -0
- package/codebase/sources/less/skins/basic/imgs/loading.gif +0 -0
- package/codebase/sources/less/skins/basic/imgs/resize_dots.png +0 -0
- package/codebase/sources/less/skins/basic/index.less +0 -7
- package/codebase/sources/less/skins/basic/layout.less +0 -638
- package/codebase/sources/less/skins/basic/lightbox.less +0 -423
- package/codebase/sources/less/skins/basic/lightbox_responsive.less +0 -322
- package/codebase/sources/less/skins/basic/message_default.less +0 -242
- package/codebase/sources/less/skins/basic/note.less +0 -272
- package/codebase/sources/less/skins/basic/recurring.less +0 -168
- package/codebase/sources/less/skins/basic/skin.less +0 -735
- package/codebase/sources/less/skins/basic/suite.less +0 -8
- package/codebase/sources/less/skins/contrast_black/add_styles.less +0 -519
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_left.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_right.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/calendar.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_big.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_small.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/close_icon.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/controls.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg_now.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_ical.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_pdf.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resize_dots.png +0 -0
- package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resizing.png +0 -0
- package/codebase/sources/less/skins/contrast_black/index.less +0 -4
- package/codebase/sources/less/skins/contrast_black/skin.less +0 -758
- package/codebase/sources/less/skins/contrast_white/dhx_skin_contrast_white.less +0 -1017
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_left.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_right.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/calendar.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_big.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_small.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/close_icon.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/controls.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/databg.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_ical.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_pdf.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/quick_info_edit.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resize_dots.png +0 -0
- package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resizing.png +0 -0
- package/codebase/sources/less/skins/contrast_white/index.less +0 -4
- package/codebase/sources/less/skins/flat/add_styles.less +0 -286
- package/codebase/sources/less/skins/flat/imgs_flat/agenda_bg.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/arrow_left.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/arrow_right.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/calendar.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/clock.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/clock_big.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/clock_small.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/close_icon.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/controls.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/databg.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/databg_now.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/export_ical.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/export_pdf.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/resize_dots.png +0 -0
- package/codebase/sources/less/skins/flat/imgs_flat/resizing.png +0 -0
- package/codebase/sources/less/skins/flat/index.less +0 -4
- package/codebase/sources/less/skins/flat/skin.less +0 -674
- package/codebase/sources/less/skins/material/add_styles.less +0 -2055
- package/codebase/sources/less/skins/material/imgs_dhx_material/Shape.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar-hov.svg +0 -4
- package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar.svg +0 -4
- package/codebase/sources/less/skins/material/imgs_dhx_material/agenda_bg.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left_hov.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right_hov.svg +0 -3
- package/codebase/sources/less/skins/material/imgs_dhx_material/but_repeat.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/calendar.svg +0 -4
- package/codebase/sources/less/skins/material/imgs_dhx_material/clock_big.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/clock_small.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/close_icon.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/collapse_expand_icon.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/controls.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/databg.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/export_ical.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/export_pdf.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/icon.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/menu-down.svg +0 -1
- package/codebase/sources/less/skins/material/imgs_dhx_material/resizing.png +0 -0
- package/codebase/sources/less/skins/material/imgs_dhx_material/time.svg +0 -24
- package/codebase/sources/less/skins/material/imgs_dhx_material/tree_arrow.svg +0 -3
- package/codebase/sources/less/skins/material/index.less +0 -10
- package/codebase/sources/less/skins/material/skin.less +0 -879
- package/codebase/sources/less/skins/terrace/add_styles.less +0 -351
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_left.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_right.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/but_repeat.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/calendar.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_big.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_small.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/close_icon.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/collapse_expand_icon.gif +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/controls.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg_now.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_ical.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_pdf.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resize_dots.png +0 -0
- package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resizing.png +0 -0
- package/codebase/sources/less/skins/terrace/index.less +0 -4
- package/codebase/sources/less/skins/terrace/skin.less +0 -687
- package/codebase/sources/skins/dhtmlxscheduler_contrast_black.css +0 -3218
- package/codebase/sources/skins/dhtmlxscheduler_contrast_white.css +0 -3644
- package/codebase/sources/skins/dhtmlxscheduler_flat.css +0 -2975
- package/codebase/sources/skins/dhtmlxscheduler_material.css +0 -4360
- package/codebase/sources/skins/dhtmlxscheduler_material_nofont.css +0 -4359
- package/codebase/sources/skins/dhtmlxscheduler_terrace.css +0 -3080
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dhtmlxscheduler.es.js","sources":["../sources/global.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/utils.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/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/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.js","../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/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 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\telement.addEventListener(\"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}","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","//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.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY + d.scrollTop - 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\tisIE6: isWindowAwailable && (!XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0),\r\n\tisIE7: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0),\r\n\tisIE8: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 8.0\") >= 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\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\t\tvar mask = format.match(/%[a-zA-Z]/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\nvar canUseCsp = false;\r\n(function() {\r\n\ttry {\r\n\t\tnew Function(\"canUseCsp = false;\");\r\n\t} catch(e) {\r\n\t\tcanUseCsp = true;\r\n\t}\r\n})();\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tresult = canUseCsp;\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\t_bind_host_object : function(method){\r\n\t\tif(method.bind){\r\n\t\t\treturn method.bind(scheduler);\r\n\t\t}else{\r\n\t\t\treturn function(){ return method.apply(scheduler, arguments); };\r\n\t\t}\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 scheduler.date._bind_host_object(func);\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//return scheduler.date._bind_host_object(func);\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\telement.addEventListener(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\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\nscheduler._is_new_skin = function(){\r\n\treturn scheduler._theme_info.cssVarTheme;\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\nwindow.addEventListener('DOMContentLoaded', refreshAfterLoad);\r\nwindow.addEventListener('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\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\t// if(this._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\tif(!this._theme_info.cssVarTheme){\r\n\t\tvar set = 0;\r\n\t\tif (scheduler.skin && (scheduler.skin === \"classic\" || scheduler.skin === \"glossy\")) set = 1;\r\n\r\n\r\n\t\tif(scheduler._is_material_skin()){\r\n\t\t\tvar defaultButtonsLeft = scheduler.config.buttons_left.$initial;\r\n\t\t\tvar defaultButtonsRight = scheduler.config.buttons_right.$initial;\r\n\t\t\tif(defaultButtonsLeft && scheduler.config.buttons_left.slice().join() == defaultButtonsLeft &&\r\n\t\t\t\tdefaultButtonsRight && scheduler.config.buttons_right.slice().join() == defaultButtonsRight){\r\n\t\t\t\tvar tmp = scheduler.config.buttons_left.slice();\r\n\t\t\t\tscheduler.config.buttons_left = scheduler.config.buttons_right.slice();\r\n\t\t\t\tscheduler.config.buttons_right = tmp;\r\n\t\t\t}\r\n\t\t\tscheduler.xy.event_header_height = 18;\r\n\t\t//\tscheduler.xy.menu_width = 25;\r\n\t\t\tscheduler.xy.week_agenda_scale_height = 35;\r\n\t\t\tscheduler.xy.map_icon_width = 38;\r\n\t\t\tscheduler._lightbox_controls.defaults.textarea.height = 64;\r\n\t\t\tscheduler._lightbox_controls.defaults.time.height = 'auto';\r\n\t\t}\r\n\r\n\t\t//apply skin related settings\r\n\r\n\r\n\r\n\t\tthis._configure(scheduler.config, scheduler._skin_settings, set);\r\n\t\tthis._configure(scheduler.xy, scheduler._skin_xy, set);\r\n\r\n\t\tif (scheduler.skin === \"flat\"){\r\n\t\t\tscheduler.xy.scale_height = 35;\r\n\t\t\tscheduler.templates.hour_scale = function(date){\r\n\t\t\t\tvar min = date.getMinutes();\r\n\t\t\t\tmin = min < 10 ? \"0\"+min : min;\r\n\t\t\t\tvar html = \"<span class='dhx_scale_h'>\"+ date.getHours() +\"</span>\"+\r\n\t\t\t\t\t\"<span class='dhx_scale_m'> \"+ min +\"</span>\";\r\n\t\t\t\treturn html;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t//classic skin need not any further customization\r\n\t\tif (set) return;\r\n\r\n\t}\r\n\r\n\tif(!this._theme_info.cssVarTheme){\r\n\t\tvar minic = scheduler.config.minicalendar;\r\n\t\tif (minic) minic.padding = 14;\r\n\t}\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\tglobal.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\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\r\n\t_prepareDataItem: function(item) {\r\n\t\tvar processedItem = {};\r\n\t\tvar scheduler = this.$scheduler;\r\n\t\tvar copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (copy[i]) {\r\n\t\t\t\tif(copy[i].getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(copy[i]);\r\n\t\t\t\t} else if(typeof copy[i] == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareDataItem(copy[i]);\r\n\t\t\t\t} else if(copy[i] === null) {\r\n\t\t\t\t\tprocessedItem[i] = \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = copy[i];\r\n\t\t\t\t}\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_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 () {\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) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id};\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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} = 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\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\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} = 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\tcontainer.appendChild(daysOfWeekContainer);\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\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\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\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\n\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\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\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default 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\nvar 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\tvar 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\tvar 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\tvar views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tvar date = [\r\n\t\t\"date\"\r\n\t];\r\n\tvar 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(var 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(var 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(var i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tvar 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\tvar h = this._y = this._obj.clientHeight-this.xy.margin_top;\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\tvar scale_s=this._table_view?-1:this.xy.scale_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\tif(!scheduler._is_new_skin()){\r\n\t\tthis.set_xy(this._els[\"dhx_cal_navline\"][0],w,this.xy.nav_height,0,0);\r\n\r\n\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0],w-scale_x + 1,this.xy.scale_height,scale_s,this.xy.nav_height+1);\r\n\t\t//to support alter-skin, we need a way to alter height directly from css\r\n\t\tvar actual_height = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\tif (actual_height > 0) this.xy.nav_height = actual_height;\r\n\r\n\t\tvar data_y=this.xy.scale_height+this.xy.nav_height;\r\n\t\tthis.set_xy(this._els[\"dhx_cal_data\"][0],w,h-(data_y+2),0,data_y+2);\r\n\t} else {\r\n\t\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\t\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\t\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\t\theader.style.left = ``;\r\n\t\theader.style.right = ``;\r\n\t\tif(!this._table_view){\r\n\t\t\tif(this.config.rtl){\r\n\t\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t\t}else{\r\n\t\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(!this.config.rtl){\r\n\t\t\t\theader.style.left = `-1px`;\r\n\t\t\t} else {\r\n\t\t\t\theader.style.right = `-1px`;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\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\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tvar els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++){\r\n\t\tvar class_name= scheduler._getClassName(els[i]);\r\n\t\tvar 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\tvar 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\nvar domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (var a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (var 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(e) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\tvar ev = e;\r\n\t\tvar src = ev.target||ev.srcElement;\r\n\t\tvar returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(src), ev]);\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) return;\r\n\tvar t=this._select_id;\r\n\tthis._select_id = null;\r\n\tif (t && this.getEvent(t)) this.updateEvent(t);\r\n\tthis.callEvent(\"onEventUnselected\", [t]);\r\n};\r\nscheduler.getState=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};\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\t\tvar trg = e.target;\r\n\t\tvar id = scheduler._locate_event(trg);\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 = trg.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tvar 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\tvar 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\tvar name = this.getAttribute(\"data-tab\");\r\n\t\tvar deprecated_name = this.getAttribute(\"name\");\r\n\t\tvar 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\tvar 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\tvar opts = { ...config, text: message };\r\n\tif (title)\r\n\t\topts.title = title;\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};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tvar 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\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\tvar start_date = new Date(start);\r\n\tif (!end){\r\n\t\tvar 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()+d;\r\n\t}\r\n\tvar 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()+d);\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\tvar 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||e.srcElement);\r\n\tif (this.config.readonly) return;\r\n\tvar 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\tvar 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\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault:\r\n\t\t\tvar t = this[\"dblclick_\"+name];\r\n\t\t\tif (t) {\r\n\t\t\t\tt.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}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tvar column = 0;\r\n\tif (this._cols){\r\n\t\tvar width = 0;\r\n\t\tvar 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\tvar 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\tvar pos;\r\n\tvar b=document.body;\r\n\tvar d = 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 + (b.scrollLeft||d.scrollLeft||0) - b.clientLeft,\r\n\t\ty:ev.clientY + (b.scrollTop||d.scrollTop||0) - b.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\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\tvar 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\tvar 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\tvar 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\tvar 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\tvar c=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_closing, callback: function() { scheduler.editStop(scheduler.config.positive_closing); }});\r\n\t\tif(c){\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\tvar delay = 100,\r\n\t\td_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\tvar 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\tvar 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\tvar 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\tvar 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};\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\t\r\n\tif(scheduler._is_new_skin()){\r\n\t\tthis.set_xy(head, width, this.xy.scale_height-1, left, offset_top);\r\n\t}else{\r\n\t\tthis.set_xy(head, width - 1, this.xy.scale_height-2, left, offset_top);//-1 for border\r\n\t}\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\tif(this._is_new_skin()){\r\n\t\t\t\tfor (let i=this.config.first_hour*1; i < this.config.last_hour; i++) {\r\n\t\t\t\t\tconst firstHalf = document.createElement(\"div\");\r\n\t\t\t\t\tfirstHalf.className=\"dhx_scale_time_slot dhx_scale_time_slot_hour_start\";\r\n\t\t\t\t\tfirstHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet slotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 0);\r\n\t\t\t\t\tfirstHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\r\n\t\t\t\t\tlet htmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\t\tif(htmlContent){\r\n\t\t\t\t\t\tfirstHalf.innerHTML = htmlContent;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet cssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\t\tif(cssClass){\r\n\t\t\t\t\t\tfirstHalf.classList.add(cssClass);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tscales.appendChild(firstHalf);\r\n\r\n\t\t\t\t\tconst secondHalf = document.createElement(\"div\");\r\n\t\t\t\t\tsecondHalf.className=\"dhx_scale_time_slot\";\r\n\t\t\t\t\tslotDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), i, 30);\r\n\t\t\t\t\tsecondHalf.setAttribute('data-slot-date', this.templates.format_date(slotDate));\r\n\t\t\t\t\tsecondHalf.style.height=this.config.hour_size_px/2+\"px\";\r\n\t\t\t\t\thtmlContent = this.templates.time_slot_text(slotDate);\r\n\t\t\t\t\tif(htmlContent){\r\n\t\t\t\t\t\tsecondHalf.innerHTML = htmlContent;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcssClass = this.templates.time_slot_class(slotDate);\r\n\t\t\t\t\tif(cssClass){\r\n\t\t\t\t\t\tsecondHalf.classList.add(cssClass);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscales.appendChild(secondHalf);\r\n\t\t\t\t}\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 navline = this._els[\"dhx_cal_navline\"][0];\r\n\t\t\tvar top = navline.offsetHeight + this._els[\"dhx_cal_header\"][0].offsetHeight+1;\r\n\t\t\tif(this._is_new_skin()){\r\n\t\t\t\ttop = undefined;\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, top); // 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, top); // 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);\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);\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\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\t\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: 0,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\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\tif(!scheduler._is_new_skin()){\r\n\t\t\t\t\t\tdata.style.top = (this._els[\"dhx_cal_navline\"][0].offsetHeight + this._els[\"dhx_cal_header\"][0].offsetHeight + used_multi_day_height ) + 'px';\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - parseInt(data.style.top, 10) - (this.xy.margin_top || 0)) + '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\t\t\t\t\t\tif(!scheduler._is_new_skin()){\r\n\t\t\t\t\t\t\tdata.style.top = (parseInt(data.style.top) + 2) + \"px\";\r\n\t\t\t\t\t\t}\r\n\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\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 + (ev_sorder > 0 ? 2 : 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;\r\n\r\n\tvar html = '<div event_id=\"' + id + '\" ' + this.config.event_attribute + '=\"' + id + '\" class=\"' + cs +\r\n\t\t\t\t'\" style=\"position:absolute; top:' + y + 'px; ' +\r\n\t\t\t\t((this.config.rtl) ? 'right:':'left:') + x + 'px; width:' + boxWidth + 'px; height:' + h + 'px;' +\r\n\t\t\t\t(style || \"\") + '\"></div>';\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-text:\" + 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\treturn \"<div class='dhx_cal_ltext'><textarea></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\t\t\tif(scheduler._is_new_skin()){\r\n\t\t\t\thtml += \"<div class='dhx_cal_lcontrols_push_right'></div>\";\r\n\t\t\t}\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'>\"+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\r\n\t\t\tif(scheduler.config.multisection)\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\r\n\t\tvar dataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_data\"));\r\n\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}","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\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 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\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\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}\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\">\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\t\t\treturn `<div class=\"dhx_cal_agenda_event_line ${cls||\"\"} ${calendarEvent.id == selectedId ? \"dhx_cal_agenda_event_line_selected\" : \"\"}\" ${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.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.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) != 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\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}\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) {\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 = 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\tif(last.style.visibility == \"hidden\"){\r\n\t\t\t\t\t\t\tlast.style.display = \"none\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tlast.style.display = \"\";\r\n\t\t\t\t\t\t}\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\tsetInterval(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\r\n\t\t})();\r\n\t/*\tif(window.Scheduler && window.Scheduler.plugin){\r\n\t\t\twindow.Scheduler.plugin(setupKeyNav);\r\n\t\t}else{\r\n\t\t\tsetupKeyNav(window.scheduler);\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\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](section.key, section.label, section);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](section.key, section.label, section);\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\tvar start_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts)-1;\r\n\t\tvar end_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts)-1;\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\tblock.style.cssText = \"height: \"+height+\"px; left: \"+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(\"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\nscheduler.config.mark_now = true;\r\nscheduler.config.display_marked_timespans = true;\r\nscheduler.config.overwrite_marked_timespans = true;\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\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\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.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\tvar blocker = scheduler.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) {\r\n\t\t\tvar dates = scheduler.getRecDates(event);\r\n\t\t\tfor(var i=0; i < dates.length; i++){\r\n\t\t\t\tvar ev = scheduler._copy_event(event);\r\n\t\t\t\tscheduler._lame_copy(ev, dates[i]);\r\n\t\t\t\tevs.push(ev);\r\n\t\t\t}\r\n\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.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 blocker(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn blocker(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 blocker(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 blocker(data_copy);\r\n\t\t}\r\n\t\treturn blocker(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 (!blocker(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 (!blocker(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 blocker(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 blocker(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\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\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};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","export default function(scheduler){\r\n /* global google */\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tgeocoder: null,\r\n\tmap: null,\r\n\tpoints: null,\r\n\tmarkers: null,\r\n\tinfoWindow: null,\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t}\r\n};\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\n\r\nscheduler.config.map_resolve_event_location = true; // if events in database doesn't have lat and lng values there will be an attempt to resolve them on event loading, useful for migration\r\nscheduler.config.map_resolve_user_location = true; // if user will be promted to share his location to display it on the map\r\n\r\nscheduler.config.map_initial_position = new google.maps.LatLng(48.724, 8.215); // initial position of the map\r\nscheduler.config.map_error_position = new google.maps.LatLng(15, 15); // this position will be displayed in case if event doesn't have corresponding coordinates\r\n\r\nscheduler.config.map_infowindow_max_width = 300;\r\n\r\nscheduler.config.map_type = google.maps.MapTypeId.ROADMAP;\r\n\r\nscheduler.config.map_zoom_after_resolve = 15;\r\n\r\nscheduler.locale.labels.marker_geo_success = \"It seems you are here.\";\r\nscheduler.locale.labels.marker_geo_fail = \"Sorry, could not get your current position using geolocation.\";\r\n\r\nscheduler.templates.marker_date = scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"); // date for map's infowindow will be formatted following way\r\n\r\nscheduler.templates.marker_text = function(start, end, ev) {\r\n\treturn \"<div><b>\" + ev.text + \"</b><br/><br/>\" + (ev.event_location || '') + \"<br/><br/>\" + scheduler.templates.marker_date(start) + \" - \" + scheduler.templates.marker_date(end) + \"</div>\";\r\n};\r\nscheduler.dblclick_dhx_map_area = function() {\r\n\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler._date,\r\n\t\t\tend_date: scheduler.date.add(scheduler._date, scheduler.config.time_step, \"minute\")\r\n\t\t});\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\n\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\n\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\n\r\nscheduler._latLngUpdate = false; // flag for not displaying event second time in case of coordinates update\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\tscheduler._isMapPositionSet = false; // if user actual (geolocation) position was set on the map\r\n\r\n\tconst gmap = document.createElement('div');\r\n\tgmap.className = 'dhx_map';\r\n\tgmap.id = 'dhx_gmap';\r\n\tgmap.style.display = \"none\";\r\n\r\n\tscheduler._obj.appendChild(gmap);\r\n\r\n\tscheduler._els.dhx_gmap = [];\r\n\tscheduler._els.dhx_gmap.push(gmap);\r\n\r\n\t_setMapSize('dhx_gmap');\r\n\r\n\tconst mapOptions = {\r\n\t\tzoom: scheduler.config.map_initial_zoom || 10,\r\n\t\tcenter: scheduler.config.map_initial_position,\r\n\t\tmapTypeId: scheduler.config.map_type || google.maps.MapTypeId.ROADMAP\r\n\t};\r\n\tconst map = new google.maps.Map(document.getElementById('dhx_gmap'), mapOptions);\r\n\tmap.disableDefaultUI = false;\r\n\tmap.disableDoubleClickZoom = !scheduler.config.readonly;\r\n\r\n\tgoogle.maps.event.addListener(map, \"dblclick\", function(event) {\r\n\t\tconst geocoder = scheduler.ext.mapView.geocoder;\r\n\r\n\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\tvar point = event.latLng;\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'latLng': point },\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\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\tstart_date: scheduler._date,\r\n\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler._date, scheduler.config.time_step, \"minute\")\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\tvar infoWindowOptions = {\r\n\t\tcontent: ''\r\n\t};\r\n\r\n\tif (scheduler.config.map_infowindow_max_width) {\r\n\t\tinfoWindowOptions.maxWidth = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\r\n\tscheduler.map = {\r\n\t\t_points: [],\r\n\t\t_markers: [],\r\n\t\t_infowindow: new google.maps.InfoWindow(infoWindowOptions),\r\n\t\t_infowindows_content: [],\r\n\t\t_initialization_count: -1,\r\n\t\t_obj: map\r\n\t};\r\n\r\n\tscheduler.ext.mapView.geocoder = new google.maps.Geocoder();\r\n\tscheduler.ext.mapView.map = map;\r\n\tscheduler.ext.mapView.points = scheduler.map._points;\r\n\tscheduler.ext.mapView.markers = scheduler.map._markers;\r\n\tscheduler.ext.mapView.infoWindow = scheduler.map._infowindow;\r\n\r\n\tif (scheduler.config.map_resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tif (!scheduler._isMapPositionSet) {\r\n\t\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\t\tvar _userLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\r\n\t\t\t\t\tmap.setCenter(_userLocation);\r\n\t\t\t\t\tmap.setZoom(scheduler.config.map_zoom_after_resolve || 10);\r\n\t\t\t\t\tscheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_success);\r\n\t\t\t\t\tscheduler.map._infowindow.position = map.getCenter();\r\n\t\t\t\t\tscheduler.map._infowindow.open(map);\r\n\r\n\t\t\t\t\tscheduler._isMapPositionSet = true;\r\n\t\t\t\t},\r\n\t\t\t\t\t\tfunction() {\r\n\t\t\t\t\t\t\tscheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_fail);\r\n\t\t\t\t\t\t\tscheduler.map._infowindow.setPosition(map.getCenter());\r\n\t\t\t\t\t\t\tscheduler.map._infowindow.open(map);\r\n\t\t\t\t\t\t\tscheduler._isMapPositionSet = true;\r\n\t\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tgoogle.maps.event.addListener(map, \"resize\", function(event) {\r\n\t\tgmap.style.zIndex = '5';\r\n\t\tmap.setZoom(map.getZoom());\r\n\r\n\t});\r\n\tgoogle.maps.event.addListener(map, \"tilesloaded\", function(event) {\r\n\t\tgmap.style.zIndex = '5';\r\n\t});\r\n\r\n\tgmap.style.display = 'none'; // property was changed after attaching 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\tvar events = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\t\tif (!scheduler.map._markers[events[i].id]) {\r\n\t\t\t\t\tshowAddress(events[i], false, false);\r\n\t\t\t\t}\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\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tvar 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\r\n\tfunction clear_map_tab() {\r\n\t\tscheduler._selected_event_id = null;\r\n\t\tscheduler.map._infowindow.close();\r\n\t\tvar markers = scheduler.map._markers;\r\n\t\tfor (var key in markers) {\r\n\t\t\tif (markers.hasOwnProperty(key)) {\r\n\t\t\t\tmarkers[key].setMap(null);\r\n\t\t\t\tdelete scheduler.map._markers[key];\r\n\t\t\t\tif (scheduler.map._infowindows_content[key])\r\n\t\t\t\t\tdelete scheduler.map._infowindows_content[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tvar 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\tvar ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tvar html = \"<div \"+ariaAttr+\" class='dhx_map_area'>\";\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar ev = events[i];\r\n\t\t\tvar event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\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\tvar ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tvar 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\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[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 (var 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\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tvar map = document.getElementById(elem_id);\r\n\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\tvar height = scheduler._y - nav_height;\r\n\t\tif (height < 0)\r\n\t\t\theight = 0;\r\n\t\tvar width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\tif (width < 0)\r\n\t\t\twidth = 0;\r\n\t\tmap.style.height = height + 'px';\r\n\t\tmap.style.width = width + 'px';\r\n\t\tmap.style.position = \"absolute\";\r\n\t\tmap.style.top = nav_height + \"px\";\r\n\t\tif (scheduler.config.rtl) {\r\n\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t} else {\r\n\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t}\r\n\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t}\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler.map._initialization_count++;\r\n\t\tvar gmap = scheduler._els.dhx_gmap[0];\r\n\t\tvar temp_center;\r\n\t\t//scheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\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\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\r\n\t\tif (mode) { //map tab activated\r\n\t\t\tclear_map_tab();\r\n\t\t\tfill_map_tab();\r\n\t\t\tgmap.style.display = 'block';\r\n\r\n\t\t\t// need to resize block every time window is resized\r\n\t\t\t_setMapSize('dhx_gmap');\r\n\t\t\ttemp_center = scheduler.map._obj.getCenter();\r\n\r\n\t\t\tvar events = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\t\tif (!scheduler.map._markers[events[i].id]) {\r\n\t\t\t\t\tshowAddress(events[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else { //map tab de-activated\r\n\t\t\tgmap.style.display = 'none';\r\n\t\t}\r\n\t\tgoogle.maps.event.trigger(scheduler.map._obj, 'resize');\r\n\r\n\t\tif (scheduler.map._initialization_count === 0 && temp_center) { // if tab is activated for the first time need to fix position\r\n\t\t\tscheduler.map._obj.setCenter(temp_center);\r\n\t\t}\r\n\r\n\t\tif (scheduler._selected_event_id) {\r\n\t\t\tselectEvent(scheduler._selected_event_id);\r\n\t\t}\r\n\t};\r\n\r\n\tvar selectEvent = function(event_id) {\r\n\t\tscheduler.map._obj.setCenter(scheduler.map._points[event_id]);\r\n\t\tscheduler.callEvent(\"onClick\", [event_id]);\r\n\t};\r\n\r\n\tvar showAddress = function(event, setCenter, performClick) { // what if event have incorrect position from the start?\r\n\t\tvar point = scheduler.config.map_error_position;\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tpoint = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t}\r\n\t\tvar message = scheduler.templates.marker_text(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._new_event) {\r\n\r\n\t\t\tscheduler.map._infowindows_content[event.id] = message;\r\n\r\n\t\t\tif (scheduler.map._markers[event.id])\r\n\t\t\t\tscheduler.map._markers[event.id].setMap(null);\r\n\r\n\t\t\tscheduler.map._markers[event.id] = scheduler.ext.mapView.createMarker({\r\n\t\t\t\tposition: point,\r\n\t\t\t\tmap: scheduler.map._obj\r\n\t\t\t});\r\n\r\n\t\t\tgoogle.maps.event.addListener(scheduler.map._markers[event.id], 'click', function() {\r\n\t\t\t\tscheduler.map._infowindow.setContent(scheduler.map._infowindows_content[event.id]);\r\n\t\t\t\tscheduler.map._infowindow.open(scheduler.map._obj, scheduler.map._markers[event.id]);\r\n\t\t\t\tscheduler._selected_event_id = event.id;\r\n\t\t\t\tscheduler.render_data();\r\n\t\t\t});\r\n\t\t\tscheduler.map._points[event.id] = point;\r\n\r\n\t\t\tif (setCenter) scheduler.map._obj.setCenter(scheduler.map._points[event.id]);\r\n\t\t\tif (performClick) scheduler.callEvent(\"onClick\", [event.id]);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onClick\", function(id, domEvent) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tscheduler._selected_event_id = id;\r\n\t\t\tfor (var i = 0; i < scheduler._rendered.length; i++) {\r\n\t\t\t\tscheduler._rendered[i].className = 'dhx_map_line';\r\n\t\t\t\tif (scheduler._rendered[i].getAttribute(scheduler.config.event_attribute) == id) {\r\n\t\t\t\t\tscheduler._rendered[i].className += \" highlight\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (scheduler.map._points[id] && scheduler.map._markers[id]) {\r\n\t\t\t\tscheduler.map._obj.setCenter(scheduler.map._points[id]); // was panTo\r\n\t\t\t\tgoogle.maps.event.trigger(scheduler.map._markers[id], 'click');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tvar _displayEventOnMap = function(event) {\r\n\t\tconst geocoder = scheduler.ext.mapView.geocoder;\r\n\t\tif (event.event_location && geocoder) {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{\r\n\t\t\t\t\t'address': event.event_location,\r\n\t\t\t\t\t'language': scheduler.uid().toString()\r\n\t\t\t\t},\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tvar point = {};\r\n\t\t\t\t\tif (status != google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tpoint = scheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\t\t\tif (!point || point === true)\r\n\t\t\t\t\t\t\tpoint = scheduler.config.map_error_position;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tevent.lat = point.lat();\r\n\t\t\t\t\tevent.lng = point.lng();\r\n\r\n\t\t\t\t\tscheduler._selected_event_id = event.id;\r\n\r\n\t\t\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t\t\t\tshowAddress(event, true, true);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tshowAddress(event, true, true);\r\n\t\t}\r\n\t};\r\n\r\n\tvar _updateEventLocation = function(event) { // update lat and lng in database\r\n\t\tconst geocoder = scheduler.ext.mapView.geocoder;\r\n\t\tif (event.event_location && geocoder) {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{\r\n\t\t\t\t\t'address': event.event_location,\r\n\t\t\t\t\t'language': scheduler.uid().toString()\r\n\t\t\t\t},\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tvar point = {};\r\n\t\t\t\t\tif (status != google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tpoint = scheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\t\t\tif (!point || point === true)\r\n\t\t\t\t\t\t\tpoint = scheduler.config.map_error_position;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tevent.lat = point.lat();\r\n\t\t\t\t\tevent.lng = point.lng();\r\n\t\t\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tvar _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\tvar 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\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\t\tif (!this._latLngUpdate) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tif ((event.start_date < scheduler._min_date && event.end_date > scheduler._min_date) || (event.start_date < scheduler._max_date && event.end_date > scheduler._max_date) || (event.start_date.valueOf() >= scheduler._min_date && event.end_date.valueOf() <= scheduler._max_date)) {\r\n\t\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\t\t_displayEventOnMap(event);\r\n\t\t\t} else { // event no longer should be displayed on the map view\r\n\t\t\t\tscheduler._selected_event_id = null;\r\n\t\t\t\tscheduler.map._infowindow.close();\r\n\t\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._latLngUpdate = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_event_id, new_event_id) {\r\n\t\tvar event = scheduler.getEvent(new_event_id);\r\n\t\tif ((event.start_date < scheduler._min_date && event.end_date > scheduler._min_date) || (event.start_date < scheduler._max_date && event.end_date > scheduler._max_date) || (event.start_date.valueOf() >= scheduler._min_date && event.end_date.valueOf() <= scheduler._max_date)) {\r\n\t\t\tif (scheduler.map._markers[old_event_id]) {\r\n\t\t\t\tscheduler.map._markers[old_event_id].setMap(null);\r\n\t\t\t\tdelete scheduler.map._markers[old_event_id];\r\n\t\t\t}\r\n\t\t\tif (scheduler.map._infowindows_content[old_event_id])\r\n\t\t\t\tdelete scheduler.map._infowindows_content[old_event_id];\r\n\t\t\t_displayEventOnMap(event);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id, event) {\r\n\t\tif (!scheduler._dataprocessor) {\r\n\t\t\tif ((event.start_date < scheduler._min_date && event.end_date > scheduler._min_date) || (event.start_date < scheduler._max_date && event.end_date > scheduler._max_date) || (event.start_date.valueOf() >= scheduler._min_date && event.end_date.valueOf() <= scheduler._max_date)) {\r\n\t\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\t\t_displayEventOnMap(event);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\t/* Test/example\r\n\t scheduler.attachEvent(\"onLocationError\", function(event_id,event_object){\r\n\t return new google.maps.LatLng(8, 8);\r\n\t });\r\n\t */\r\n\r\n\tscheduler.attachEvent(\"onBeforeEventDelete\", function(id, event) {\r\n\t\tif (scheduler.map._markers[id]) {\r\n\t\t\tscheduler.map._markers[id].setMap(null); // if new event is deleted tab != map then it doesn't have marker yet\r\n\t\t}\r\n\t\tscheduler._selected_event_id = null;\r\n\t\tscheduler.map._infowindow.close();\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (scheduler.config.map_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\tscheduler.attachEvent(\"onEventCancel\", function(id, is_new) {\r\n\t\tif (is_new) {\r\n\t\t\tif (scheduler.map._markers[id])\r\n\t\t\t\tscheduler.map._markers[id].setMap(null);\r\n\t\t\tscheduler.map._infowindow.close();\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n});\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}\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\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\tvar pos = this._get_event_counter_part(id);\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\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\t\tqi.style.top = this.xy.scale_height+this.xy.nav_height + 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\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\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\tvar left = 0;\r\n\tvar top = 0;\r\n\r\n\tvar node = domEv;\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\tvar dx = (left + domEv.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tvar dy = (top + domEv.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:domEv.offsetWidth, height:domEv.offsetHeight };\r\n\t}\r\n\treturn 0;\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}","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\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_month_head = 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 dx = Math.floor(parseInt(dataArea.style.width) / c.year_x);\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\tdx = Math.floor((parseInt(dataArea.style.width) - scheduler.xy.scroll_width) / c.year_x);\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\tif(!this._is_new_skin()){\r\n\t\t\t\t\tyearBox.style.cssText = \"position:absolute;\";\r\n\t\t\t\t}\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 weekHeader = yearBox.querySelector(\".dhx_year_week\");\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\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\t\t\t\tif(!this._is_new_skin()){\r\n\t\t\t\t\tweekHeader.style.height = weekHeader.childNodes[0].offsetHeight + \"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\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tvar dt = Math.round((dy - 190) / 2);\r\n\t\t\t\t\tyearBox.style.marginTop = dt + \"px\";\r\n\t\t\t\t\tthis.set_xy(yearBox, dx - 10, dy - dt - 10, dx * j + 5, dy * i + 5 + scheduler.xy.year_top);\r\n\t\t\t\t}\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\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","extend","scheduler","div","className","element","document","createElement","split","forEach","cssClass","classList","add","itemTypes","rows_container","row","view","config","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","date","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","event","isCalendarVisible","destroyCalendar","renderCalendar","position","this","getState","navigation","handler","calendar","setCurrentView","html_element","renderElement","renderer","rows","cols","css","width","value","style","height","addEventListener","html","innerHTML","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","Array","isArray","i","length","next","appendChild","_init_nav_bar","navBar","$container","querySelector","_update_nav_bar","previousHeight","container","heightChanged","newHeight","xy","nav_height","unset_actions","_els","get_elements","set_actions","display","isAttachedNode","root","body","parentNode","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","clearTimeout","setTimeout","$destroyed","a","b","newSize","triggerSchedulerResize","$root","callEvent","updateView","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","removeChild","EventHost","_silent_mode","listeners","createEventStorage","obj","handlers","index","eventStorage","combinedResult","handlerResult","apply","arguments","addEvent","settings","e","handlerId","id","once","originalHandler","removeEvent","clear","makeEventable","eventHost","attachEvent","eventName","toLowerCase","thisObject","bind","attachAll","callback","name","eventArguments","handlerName","concat","checkEvent","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","push","detach","splice","detachAll","staticArray","slice","undefined","_eventRemoveAll","_createDomEventScope","_trim","str","String","prototype","trim","replace","_isDate","getFullYear","getMonth","getDate","_isObject","uidSeed","Date","now","isDate","utils","uid","mixin","target","source","force","f","copy","object","result","pop","Function","toString","call","constructor","Number","Boolean","varType","Object","hasOwnProperty","defined","delay","timeout","timer","$cancelTimeout","$pending","args","$execute","getClassName","node","baseVal","indexOf","locateCss","classname","strict","trg","srcElement","ind","left","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","area","nodeName","loLowerCase","isEnabled","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","top","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","Math","round","closest","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","parent","contains","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","ev","d","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","data","key","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","canUseCsp","useCsp","csp","init","s","month_short","t","month_full","_bind_host_object","method","date_part","old","setHours","setMinutes","setSeconds","setMilliseconds","getHours","setTime","getTime","time_part","valueOf","getTimezoneOffset","week_start","shift","getDay","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","mode","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","func","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","floor","convert_to_utc","getSerializator","res","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_date","_load_mode","lf","templates","load_format","_min_date","cache_line","_max_date","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","firstChild","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","k","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","text","evs","_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","error","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","render_view_data","_after_call","_tagvalue","start_date","_init_date","end_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","type","load","setLoadMode","array","childNodes","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_id","_drag_mode","_drag_pos","_pointerDragId","acc","dnd","timeline","matrix","_mode","original_render","drag_id","getEvent","property","y_property","getEvents","_sorder","_count","render_data","_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","_getClassName","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","updateEvent","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","_timed","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","min","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","hour_size_px","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","_build_skin_info","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","_theme_info","theme","cssVarTheme","values","themeVariables","_is_new_skin","_configure","col","setSkin","_skin_init","render","hour_scale","hour_date","defaultButtonsLeft","buttons_left","$initial","defaultButtonsRight","buttons_right","tmp","event_header_height","week_agenda_scale_height","map_icon_width","_lightbox_controls","defaults","scale_height","minic","minicalendar","padding","_old_month_day","month_day","old_month_day","_currentDate","dhx_cal_today_button","tab","header","tabs","specialTabs","map","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","updateMode","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","message","boxAttribute","_dhx_msg_cfg","usercall","modalBox","hide","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","expire","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","setUpdateMode","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","sendData","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","ids","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","Error","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_type","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","_dp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","setInterval","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","_prepareDataItem","item","processedItem","formatDate","dataItem","ar","day_tab","week_tab","month_tab","new_event","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","day","hour","minute","be","agenda_tab","description","year_tab","week_agenda_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","month_for_recurring","day_for_recurring","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","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","max","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","_weeksBetween","currDate","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","commonViews","agenda","grid","unit","week_agenda","anythingElse","requiredExtensions","limit","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","addMarkedTimespan","exportToPNG","exportToPDF","common","nav_bar","_detachDomEvent","_init_once","scheduler_resize_listener","layout","hasSchedulerMarkup","console","wai_aria_application_role","views","_props","_grid","viewName","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","edit_save","edit_cancel","functor","scale_x","_table_view","scale_s","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","actual_height","data_y","prepareValue","prepared","els","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","start","differenceInDays","src","_select_id","_close_not_saved","unselect","min_date","max_date","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","getActionData","icon","def_step","dhx_cal_tab","deprecated_name","substring","c","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","addEventNow","end","base","event_duration","time_step","start_hour","first_hour","_drag_event","dblclick_create","details_on_dblclick","_get_column_index","x_pos","column","_cols","_ignores","_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","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","len","_start_correction","_end_correction","last_hour","_get_fictional_event_length","_correct_drag_end_date","duration","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","getView","_allow_dnd","update_render","sx","update_view","drag_event_body","_lame_clone","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","isOneDayEvent","_lame_copy","_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","_scales","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","offset","hiddenWidth","c2","cloneNode","cc","hourScaleAttr","scroll_hour","now_date","n","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","sections","lightbox","map_to","options","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","section","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","days","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","isActive","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","methods","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","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_display","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","quick_info_detached","drag_highlight","icons_edit","icons_select","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","event_attribute","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","containers","render_event_bar","max_evs","max_month_events","locate_holder","real","render_event","_get_first_visible_cell","cells","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","locate_holder_day","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","setProperty","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","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","section_delimiter","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","size","getLightboxRoot","cspEnvironment","salesforceEnvironment","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","template","sns","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","cfg","dt","last","limit_time_select","p","selectBoxClass","range","start_year","end_year","year_range","g","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","block","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","batchUpdate","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","ext","activePlugins","plugins","extensionList","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","multisection","_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","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","_getViewPort","viewport","_getViewPortSize","tooltipNode","tooltip","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","clone","delayShow","utils.default","setContent","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","l","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","eventStart","renderDay","calendarEvent","dates","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","before","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","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","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","o","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","zoom","_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","all","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","parts","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","divs","renderMultiple","currentStart","currentEnd","_modes","_getMode","units","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","areas","round_position","blocks","_trace_x","_is_column_visible","start_pos","_timeline_getX","end_pos","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","inner_index","all_hours_height","hour_ms","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","eventNode","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","sectionId","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","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_start","limit_end","limit_view","check_limits","mark_now","display_marked_timespans","overwrite_marked_timespans","_temp_limit_scope","dhx_time_block","default_timespan_type","get_resulting_options","zones","blockTime","unblockTime","deleteMarkedTimespan","om","od","nm","nd","isBlocked","date_end","resetDate","checkInMarkedTimespan","timespan_type","on_overlap","temp_start_date","temp_end_date","timespans","_marked_timespans","day_value","getZones","_get_zone_minutes","eventEnd","markerStart","markerEnd","blocker","checkLimitViolation","complete_res","allow","day_index","linker","_add_timespan_zones","_get_blocked_zones","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","resultZones","is_new_event","data_copy","native_object","_mark_now","_mark_now_timer","dhx_now_time","_remove_mark_now","_append_mark_now","zone_start","start_index","end_index","units_l","r_divs","t_day","t_div","_render_marked_timespan","_prepare_timespan_options","r_configs","temp_configs","t_days","cloned_config","invert_zones","invertZones","view_key","t_config","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","start_day","delta","t_date","_get_css_classes_by_config","css_classes","_get_block_by_config","date_to_display","min_day","sday","block_proto","_mark_timespans","_on_scale_add_marker","markTimespan","configuration","rebuild_els","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","unmarkTimespan","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","_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","types","typedConfig","_get_types_to_render","specific","types_to_render","_get_configs_to_render","_get_unit_index","day_ind","unitsPerDay","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","map_view","mapView","geocoder","points","markers","infoWindow","createMarker","google","maps","Marker","map_date_width","map_description_width","map_resolve_event_location","map_resolve_user_location","map_initial_position","LatLng","map_error_position","map_infowindow_max_width","map_type","MapTypeId","ROADMAP","map_zoom_after_resolve","marker_geo_success","marker_geo_fail","marker_date","marker_text","event_location","dblclick_dhx_map_area","map_time","map_text","map_start","add_map","map_date","_latLngUpdate","_isMapPositionSet","gmap","dhx_gmap","_setMapSize","mapOptions","map_initial_zoom","center","mapTypeId","Map","disableDefaultUI","disableDoubleClickZoom","addListener","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","lat","lng","formatted_address","infoWindowOptions","maxWidth","_points","_markers","_infowindow","InfoWindow","_infowindows_content","_initialization_count","Geocoder","geolocation","getCurrentPosition","_userLocation","coords","latitude","longitude","setCenter","setZoom","getCenter","setPosition","getZoom","fill_map_tab","_selected_event_id","ariaButtonAttr","elem_id","marginRight","marginLeft","marginTop","showAddress","temp_center","map_end","close","setMap","clear_map_tab","trigger","selectEvent","performClick","_displayEventOnMap","address","language","_updateEventLocation","old_event_id","new_event_id","_event_resolve_delay","ret","minical","minicalDomEvents","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","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_result","_children","_mark_inputs","_ids","delimiter","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","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","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","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","getRecurringSection","getFirstSectionOfType","clearMilliseconds","old_add_event","occurrence_timestamp_in_utc","recurring_workdays","_get_node","_outer_html","outerHTML","rec","loc","repeat_date_of_end","_ds","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","_init_set_value","_end_date","str_date_format","repeat_date","date_str","register_els","inps","formatter","change_current_view","set_end_rule","_get_repeat_code","get_rcode","repeat","str_date","include_end_by","transpose_type","get_numeric_value","repeat_precise","_start","start_exists","transpose_day_week","set_rcode","_set_repeat_code","dispatchEvent","MouseEvent","elements","_rec_init_done","rf","blocked","_is_modified_occurence","_toggle_block","actual_dates","timeControl","getTimeSection","_start_date","_get_button","_get_form","backgroundPosition","_rec_markers","_rec_markers_pull","_pid_time","_get_rec_marker","ch","_get_rec_markers","_rec_temp","ev_id","_ignore_call","tev","_pid_changed","nid","nev","sub","isEventFound","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","old_update_event","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","getMilliseconds","non_render","maxCount","startHour","visibleCount","_fix_daylight_saving_date","ted","recurrings","sev","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","s2d","d2s","select_event","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_month_head","_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_x","year_top","ssd","yearBox","yearStart","datepicker","locateEvent","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"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"}
|