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.js","sources":["../../sources/dhtmlx_hook.js","../../sources/global.js","../../sources/core/common/assert.js","../../sources/core/common_errors.js","../../sources/core/connector.js","../../sources/core/nav_bar.js","../../sources/core/scheduler_resize_listener.js","../../sources/utils/eventable.js","../../sources/core/scheduler.js","../../sources/core/utils/event.js","../../sources/core/utils/scoped_event.js","../../sources/core/common.js","../../sources/core/wai_aria.js","../../sources/core/utils/utils.js","../../sources/core/utils/dom_helpers.js","../../sources/utils/env.js","../../sources/core/destructor.js","../../sources/core/common/url_serialize.js","../../sources/core/utils/ajax.js","../../sources/core/base.js","../../sources/core/config.js","../../sources/core/event.js","../../sources/core/event_highlight.js","../../sources/core/loaders/xml.js","../../sources/core/loaders/json.js","../../sources/core/loaders/ical.js","../../sources/core/common/get_serializable_events.js","../../sources/core/load.js","../../sources/core/lightbox.js","../../sources/core/touch.js","../../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../../sources/core/skins.js","../../sources/core/jquery.js","../../sources/core/delay_render.js","../../sources/core/dataprocessor/dataprocessor_hooks.js","../../sources/core/dataprocessor/dataprocessor.js","../../sources/core/message.js","../../sources/locale/locale_ar.js","../../sources/locale/locale_be.js","../../sources/locale/locale_ca.js","../../sources/locale/locale_cn.js","../../sources/locale/locale_cs.js","../../sources/locale/locale_da.js","../../sources/locale/locale_de.js","../../sources/locale/locale_el.js","../../sources/locale/locale_en.js","../../sources/locale/locale_es.js","../../sources/locale/locale_fi.js","../../sources/locale/locale_fr.js","../../sources/locale/locale_he.js","../../sources/locale/locale_hu.js","../../sources/locale/locale_id.js","../../sources/locale/locale_it.js","../../sources/locale/locale_jp.js","../../sources/locale/locale_manager.js","../../sources/locale/locale_nb.js","../../sources/locale/locale_nl.js","../../sources/locale/locale_no.js","../../sources/locale/locale_pl.js","../../sources/locale/locale_pt.js","../../sources/locale/locale_ro.js","../../sources/locale/locale_ru.js","../../sources/locale/locale_si.js","../../sources/locale/locale_sk.js","../../sources/locale/locale_sv.js","../../sources/locale/locale_tr.js","../../sources/locale/locale_ua.js","../../sources/locale/index.js","../../sources/core/datepicker.js","../../sources/scheduler_factory_method.js","../../sources/ext/extension_manager.js","../../sources/scheduler_factory.js","../../sources/ext/active_links.js","../../sources/ext/agenda_legacy_view.js","../../sources/ext/agenda.js","../../sources/ext/all_timed.js","../../sources/ext/collision.js","../../sources/ext/container_autoresize.js","../../sources/ext/cookie.js","../../sources/ext/restricted_extensions/not_implemented_extension.js","../../sources/ext/restricted_extensions/daytimeline.js","../../sources/ext/restricted_extensions/drag_between.js","../../sources/ext/editors.js","../../sources/ext/expand.js","../../sources/ext/restricted_extensions/grid_view.js","../../sources/ext/html_templates.js","../../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../../sources/ext/keyboard_navigation/common/eventhandler.js","../../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../../sources/ext/keyboard_navigation/marker.js","../../sources/ext/keyboard_navigation/elements/scheduler_node.js","../../sources/ext/keyboard_navigation/elements/nav_node.js","../../sources/ext/keyboard_navigation/elements/header_cell.js","../../sources/ext/keyboard_navigation/elements/event.js","../../sources/ext/keyboard_navigation/elements/time_slot.js","../../sources/ext/keyboard_navigation/elements/minical_button.js","../../sources/ext/keyboard_navigation/elements/minical_cell.js","../../sources/ext/keyboard_navigation/elements/data_area.js","../../sources/ext/keyboard_navigation/modals.js","../../sources/ext/keyboard_navigation/core.js","../../sources/ext/keyboard_navigation/key_nav_legacy.js","../../sources/ext/keyboard_navigation/scheduler_handlers.js","../../sources/ext/keyboard_navigation/minical_handlers.js","../../sources/ext/key_nav.js","../../sources/ext/layer.js","../../sources/ext/limit.js","../../sources/ext/map_view.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/tooltip.ts","../../sources/ext/tooltip/tooltipManager.ts","../../sources/ext/tooltip/index.ts","../../sources/ext/restricted_extensions/treetimeline.js","../../sources/ext/restricted_extensions/units.js","../../sources/ext/url.js","../../sources/ext/restricted_extensions/week_agenda.js","../../sources/ext/wp.js","../../sources/ext/year_view.js","../../sources/ext/export_api/index.js","../../sources/ext/extensions_gpl.js","../../sources/dhtmlxscheduler.gpl.js"],"sourcesContent":["\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '<div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div>';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '<div id=\"' + obj.id + '\" class=\"dhx_cal_container\" style=\"width:100%; height:100%;\"><div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div>' + tabs + '</div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div></div>';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"<div id='scheduler_here' class='dhx_cal_container' style='width:100%; height:600px;'> \\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\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;","\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 {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\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}","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 extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\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 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\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"<div class='dhx_cal_ltext dhx_cal_template' ></div>\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\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\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\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '<div class=\"dhx_cal_navline\">' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_prev_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_next_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_today_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_date\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"day\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"week\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"month\"></div>' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_header\">' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_data\">' +\r\n\t\t\t\t\t'</div>';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\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 extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '<div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div><div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div></div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div>';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\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 ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\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 class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"<a data-link-date='\" + d_s(date) + \"' href='#'>\" + week_x(date) + \"</a>\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+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}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.<br>\r\n\t\tYou may need a <a href=\"https://docs.dhtmlx.com/scheduler/editions_comparison.html\" target=\"_blank\">Professional version of the component</a>.<br>\r\n\t\tContact us at <a href=\"https://dhtmlx.com/docs/contact.shtml\" target=\"_blank\">https://dhtmlx.com/docs/contact.shtml</a> if you have any questions.`);\r\n\t}\r\n};","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"<div class='\"+sns.type+\"' ></div>\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `<div class='dhx_cal_ltext dhx_cal_radio ${sns.vertical ? \"dhx_cal_radio_vertical\": \"\"}' style='max-height:${sns.height}px;'>`;\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\tvar id = scheduler.uid();\r\n\t\t\tres += \"<label class='dhx_cal_radio_item' for='\"+id+\"'><input id='\"+id+\"' type='radio' name='\"+sns.name+\"' value='\"+sns.options[i].key+\"'><span>\"+\" \"+sns.options[i].label+\"</span></label>\";\r\n\t\t}\r\n\t\tres += \"</div>\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i<radiobuttons.length; i++) {\r\n\t\t\tif(radiobuttons[i].checked) {\r\n\t\t\t\treturn radiobuttons[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['checkbox']={\r\n\trender:function(sns) {\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\treturn '<div class=\"dhx_cal_wide_checkbox\"></div>';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"<input id='\"+id+\"' type='checkbox' value='true' name='\"+config.name+\"'\"+((isChecked)?\"checked='true'\":'')+\"'>\";\r\n\t\tvar label_html = \"<label for='\"+id+\"'>\"+(scheduler.locale.labels[\"section_\"+config.name]||config.name)+\"</label>\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t<g>\r\n\t<line x1=\"0.5\" y1=\"5\" x2=\"0.5\" y2=\"3.0598e-08\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"0.5\" x2=\"5\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"0.5\" y1=\"11\" x2=\"0.5\" y2=\"16\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"15.5\" x2=\"5\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"0.5\" x2=\"16\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"2.18557e-08\" x2=\"15.5\" y2=\"5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"15.5\" x2=\"16\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"16\" x2=\"15.5\" y2=\"11\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t</g>\r\n\t</svg>\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\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\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\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}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\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.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}","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 { 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}","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"<form method='POST' target='_blank'><input type='text' name='data'><input type='hidden' name='type' value=''></form>\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport 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};","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };"],"names":["dhtmlxHook","dhtmlx","attaches","attachScheduler","day","mode","tabs","scheduler","obj","document","createElement","id","this","_genStr","innerHTML","body","appendChild","firstChild","attachObject","vs","av","sched","schedId","setSizes","updateView","destructor","init","_viewRestore","globalScope","window","global","global$1","assert","check","message","config","show_errors","callEvent","type","text","expire","console","log","extend","commonViews","agenda","grid","map","unit","timeline","week_agenda","year","anythingElse","requiredExtensions","limit","_commonErrorMessages","unknownView","view","relatedDoc","relatedExtension","collapsedContainer","div","createTimelineView","Error","createUnitsView","createGridView","addMarkedTimespan","renderCalendar","exportToPNG","join","exportToPDF","attachEvent","dhtmlxError","catchError","a","b","c","responseText","ajax_error","alert","className","element","classes","split","forEach","cssClass","classList","add","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","date","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","event","isCalendarVisible","destroyCalendar","position","getState","navigation","handler","calendar","setCurrentView","html_element","findRenderer","renderer","rows","cols","renderElement","css","width","value","style","height","addEventListener","html","align","justifyContent","prepareConfig","renderLayout","fragment","createDocumentFragment","items","Array","isArray","i","length","next","_init_nav_bar","navBar","$container","querySelector","_update_nav_bar","previousHeight","container","heightChanged","configChanged","newHeight","xy","nav_height","unset_actions","_els","get_elements","set_actions","display","isAttachedNode","root","parentNode","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","equals","listenWindowResize","oldSize","resizeDelay","clearTimeout","setTimeout","$destroyed","newSize","triggerSchedulerResize","$root","watchNodeResize","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","addResizeListener","containerStyles","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","salesforce_environment","contentWindow","removeChild","EventHost","constructor","_silent_mode","listeners","_silentEnd","createEventStorage","handlers","index","eventStorage","combinedResult","handlerResult","apply","arguments","addEvent","settings","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","innerId","attachAll","callback","name","eventArguments","handlerName","concat","checkEvent","detachEvent","list","eventId","detachAllEvents","extend$l","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","layout","navbar","render","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","matrix","push","_props","_grid","names","optionalViews","viewName","_currentDate","_obj","getElementById","error","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","object","_x","_y","scale_x","_table_view","scale_s","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","_is_new_skin","actual_height","data_y","left","right","node","x","y","prepareValue","val","prepared","isNaN","Number","Math","max","direction","undefined","top","els","getElementsByTagName","class_name","_getClassName","attr_value","getAttribute","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","e","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","ev","src","target","srcElement","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","unselect","updateEvent","t","getEvent","_mode","Date","_date","min_date","_min_date","max_date","_max_date","editor_id","_edit_id","lightbox_id","_lightbox_id","new_event","_new_event","select_id","expanded","drag_id","_drag_id","drag_mode","_drag_mode","dhx_cal_data","cancelBubble","trg","getActionData","readonly","icon","closest","mask","indexOf","buttons","replace","valueOf","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","result","confirm","addEventNow","start","end","base","_isObject","_isDate","d","event_duration","time_step","start_date","round","start_hour","first_hour","getHours","setHours","end_date","setTime","uid","_loading","_drag_event","dblclick_create","details_on_dblclick","_timed","call","_get_column_index","x_pos","column","_cols","_ignores","floor","_week_indexes_from_pos","pos","min","ceil","hour_size_px","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","delay","d_pos","has_moved","_correct_drag_start_date","len","_start_correction","_end_correction","last_hour","getMinutes","_get_fictional_event_length","_correct_drag_end_date","duration","mousedownPos","_get_date_from_pos","_drag_start","res","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","date_part","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","getView","getDate","_allow_dnd","update_render","sx","update_view","for_rendered","r","classname","drag_event_body","fullClass","_lame_clone","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","_lame_copy","edit_on_create","details_on_create","isOneDayEvent","render_view_data","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","getFullYear","getMonth","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","_scales","week_start","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","navline","c1","visibility","totalWidth","col_length","offset","hiddenWidth","c2","cloneNode","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","cells","querySelectorAll","parse_date","getLabel","property","key","sections","lightbox","map_to","options","updateCollection","list_name","collection","serverList","splice","resetLightbox","hideCover","cache","Object","create","String","Boolean","prototype","hasOwnProperty","source","n_ev","section","_focus","focus","getDaysDifference","startDate","endDate","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","days","fd","start_slot","end_slot","_get_section_property","y_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","slice","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","isActive","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","uidSeed","now","pop","isStringObject","Function","toString","isNumberObject","isBooleanObject","isDate","defined","timeout","timer","$cancelTimeout","$pending","args","$execute","utils","mixin","force","f","copy","varType","elementPosition","elem","bottom","getBoundingClientRect","box","docElem","pageYOffset","pageXOffset","offsetLeft","offsetParent","getRelativeEventPosition","getNodePosition","getClassName","baseVal","getTargetNode","tagName","shadowRoot","composedPath","locateCss","strict","ind","charAt","isVisible","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","hasHref","canHaveHref","area","nodeName","loLowerCase","isEnabled","canDisable","input","textarea","hasAttribute","getFocusableNodes","nodes","nodesArray","$position","sort","isValid","isShadowDomSupported","createShadowRoot","attachShadow","getActiveElement","activeElement","getSelection","focusNode","getRootNode","ShadowRoot","host","hasShadowParent","dom_helpers","htmlObject","getOffset","getOffsetSum","getOffsetRect","test","navigator","userAgent","dummyBox","selector","insertAfter","newNode","referenceNode","nextSibling","isChildOf","child","parent","contains","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","isEdge","isNode","clearAll","_dp","serialize$1","data","serialized","encodeURIComponent","Promise","createConfig","method","url","async","headers","serialize","ajax","serializeRequestParams","parse","DOMParser","parseFromString","ActiveXObject","loadXML","xmltop","tagname","xhr","status","xml","responseXML","xpath","xpathExp","docObj","selectNodes","first","col","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","query","_call","get","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","isQt","match","readyState","xmlDoc","filePath","open","setRequestHeader","toUpperCase","send","urlSeparator","$ajax","generateStringToDate","format","utc","splt","code","csp_date_to_str","to_fixed","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","getDay","day_full","month_short","month_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","csp_str_to_date","set","temp","month_short_hash","month_full_hash","UTC","canUseCsp","useCsp","csp","s","_bind_host_object","old","setMinutes","setSeconds","setMilliseconds","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","datesDiff","rest","hours","setYear","num","date_to_str","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","isYMDDate","datestr","isMDYDate","isDMYDate","isISO8601","parseYMD","parseMDY","parseDMY","parse_exact_format","nday","first_thursday","year_number","ordinal_date","week_number","convert_to_utc","default_date","month_date","load_date","week_date","hour_date","date_format","api_date","displayed_event_color","displayed_event_text_color","wide_form","day_column_padding","use_select_menu_space","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_display","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch","touch_tip","touch_drag","touch_swipe_dates","quick_info_detached","drag_highlight","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","timeline_swap_resize","event_attribute","$initial","_helpers","parseDate","xml_date","formatDate","xml_format","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","event_header","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","_events","_loaded","clear_view","extra_data","event_updated","silent","setEvent","hash","_rendered","changeEventId","new_id","create_getter","create_setter","_changed","is_visible_events","clear_event","in_visible_range","evFirstHour","evLastHour","end_dates_visible","hidden_duration","checkEndDate","get_visible_events","only_timed","stack","filter_event","filter","_is_main_area_event","evs","hold","full","_not_render","_recalculate_timed","tvs","tvd","_rendered_location","render_data","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","containers","render_event_bar","max_evs","max_month_events","_sorder","locate_holder","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_line","_pre_render_events_table","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","k","_max_sorder","max_count","_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","cellIndex","locate_holder_day","weekCellIndex","out","weeks","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","parentPosition","zIndex","color","setProperty","tplClass","cssText","_editor","shiftKey","keyCode","icons","icons_str","ariaAttr","currentIcon","textColor","highlightEventPosition","contentA","contentB","cs","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","childNodes","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","restoreOriginalColors","section_delimiter","getSectionTop","posFromDate","dx","_smartRenderingEnabled","scrollTo","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","size","_parsers","canParse","topElement","loader","csrfToken","security_key","arr","itms","itm","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","option","option_key","ical","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","dh","dm","utcMark","dn","getSerializator","_load_url","prevent_cache","ajaxCallback","response","on_load","lf","cache_line","temp_to","extend$a","extend$9","extend$8","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","_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","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","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","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","defaultButtonsLeft","defaultButtonsRight","tmp","week_agenda_scale_height","map_icon_width","minic","minicalendar","padding","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","methods","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_type","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","updateMode","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","setUpdateMode","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","sendData","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","ids","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","setInterval","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","_prepareDataItem","item","processedItem","dataItem","createDataProcessor","tMode","batchUpdate","boxAttribute","_dhx_msg_cfg","usercall","modalBox","hide","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","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","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","_toggleMode","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","labelFormat","dayElement","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","dayStart","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","_weeksBetween","currDate","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","common_errors","common","schedulerCore","wai_aria","dom","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","event_highlight","dhtmlx_suite_hooks","skins","jquery","dataProcessorExtend","connector","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","ext","activePlugins","plugins","extensionList","getExtensionList","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","ExtensionsManager","_extensions","SchedulerFactory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","calendars","addCalendar","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","_agendaScrollTop","set_full_view","l","rowAttr","dateHeader","descriptionHeader","tableAttr","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","agenda_area","v_border","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","eventStart","renderEmptyView","renderDay","calendarEvent","renderOneEvent","dates","selectedId","all_timed_month","is_event_short","_safe_copy","proto","event_pid","isPrototypeOf","event_length","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","collision_limit","_setTempSection","event_id","checked_mode","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","rows_length","year_y","cur_height","eventsContainer","g","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","setCookie","cookie_param","getCookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","old_load","notImplemented","daytimeline_restricted","drag_between_restricted","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","all_options","single_option","addOption","getIndexByValue","selectOption","selected_id","disable","setComboValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","grid_view","html_templates","all","keyboard_shortcuts","$keyboardNavigation","shortcuts","createCommand","modifiers","alt","ctrl","meta","shortcut","commands","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","ctrlKey","metaKey","printableKey","fromCharCode","getHashFromEvent","getHash","parts","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","eventhandler","EventHandler","_handlers","findHandler","doAction","unbind","bindAll","initKeys","trap_modal_focus","trapFocus","currentFocus","currentIndex","nextIndex","nextItem","divs","renderMultiple","currentStart","currentEnd","TimeSlot","_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","scheduler_node","SchedulerNode","_compose","getDefaultNode","getMode","blur","enable","removeAttribute","_compareEvents","_pickEvent","startId","eventElement","Event","getNode","nextEventHandler","activeNode","dispatcher","nextEvent","currEvent","visibleDates","nextEv","setActiveNode","prevEventHandler","HeaderCell","getNodes","_key_nav_copy_paste","nav_node","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","header_cell","defaultCell","_getSection","_getNodes","eventNode","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","keepScrollPosition","_moveToSlot","slot","nextSlot","time_slot","movingDate","getDefaultDate","key_nav_step","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","clone","timeslot","_getMultisectionView","_getNextSection","sectionId","isInRange","defaultSlot","DataArea","smart_rendering","_pasteDate","_pasteSection","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","minical_button","MinicalButton","globalNode","MinicalCell","minical_cell","_getGrid","_getNode","enabled","newRow","newCol","modals","modalsStack","isModal","afterPopup","startModal","endModal","isTopModal","currentTarget","traceLightbox","_keyNavMessagePopup","focusElement","backupFocus","core","getActiveNode","setDefaultNode","focusGlobalNode","blurNode","editor","keyDownHandler","defaultPrevented","schedulerNode","_timeout","key_nav_legacy","_temp_key_scope","key_nav","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","clear_event_after","copyEvent","_make_pasted_event","multisection","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","getSelectedEvent","_buffer_event","new_ev","scheduler_handlers","attachSchedulerHandlers","focusHandler","waitCall","reFocusActiveNode","mousedownHandler","dataAreaClick","focusEvent","evNode","prevState","lastStart","lastEnd","lastSection","minical_handlers","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","td","renderMinical","cal","added","destroyMinical","_def_count","addShortcut","scope","scopeObject","getScope","getShortcutHandler","removeShortcut","disp","scopes","minicalButton","minicalDate","timeSlot","searchMap","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_start","limit_end","limit_view","check_limits","mark_now","display_marked_timespans","overwrite_marked_timespans","_temp_limit_scope","dhx_time_block","default_timespan_type","fix_options","zones","get_resulting_options","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","day_index","getZones","_get_zone_minutes","eventEnd","markerStart","markerEnd","blocker","checkLimitViolation","complete_res","allow","_get_blocked_zones","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","_add_timespan_zones","resultZones","view_config","linker","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","zoom","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","setContent","getCenter","setPosition","getZoom","fill_map_tab","showAddress","clear_map_tab","_selected_event_id","close","setMap","ariaButtonAttr","elem_id","marginRight","marginLeft","marginTop","temp_center","map_end","trigger","selectEvent","performClick","_displayEventOnMap","address","language","_updateEventLocation","_delay","ret","old_event_id","new_event_id","_event_resolve_delay","minical","minicalDomEvents","mark_events","_synced_minicalendars","_prev","is_refresh","cont","tpos","_get_def_cont","_render_calendar","$dom","cellRoot","dateAttribute","unmarkCalendar","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","refreshOnLoad","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","noHighlight","monthheight","old_s","multisection_restricted","multiselect","parseXMLOptions","parseJSONOptions","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","backup","mvc","use_id","sanitize","update_timer","_start_ext_load","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","dragger","dhtmlDragAndDropObject","stopDrag","last_event","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","parseFloat","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_start","xml_end","xml_top","profile","footer","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","getPDFData","send_xml","submit","to_pdf","schedulersToPdf","objects","toPDF","toPDFRange","quick_info","show_quick_info","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","titleContent","titleDate","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","txt_replace","txts","txtt","originalForm","readonlyForm","_lightbox_r","occurrence_timestamp_in_utc","recurring_workdays","_get_node","_outer_html","outerHTML","getOuterHTML","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","str_date","include_end_by","date_str","register_els","inps","formatter","change_current_view","get_repeat_code","get_rcode","repeat","get_end_rule","transpose_type","transp","set_end_rule","has_values","_get_repeat_code","get_numeric_value","repeat_precise","_start","start_exists","transpose_day_week","set_rcode","set_repeat_code","dispatchEvent","MouseEvent","_set_repeat_code","elements","_rec_init_done","rf","blocked","_is_modified_occurence","_toggle_block","actual_dates","timeControl","getTimeSection","_start_date","_get_button","getRecurringSection","_get_form","backgroundPosition","getFirstSectionOfType","_rec_markers","_rec_markers_pull","_pid_time","_get_rec_marker","ch","_get_rec_markers","clearMilliseconds","_rec_temp","old_add_event","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","cday","newMonth","cor","cor2","transposeRecurring","recurringParts","dayDurationMs","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","maxCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","getMilliseconds","non_render","startHour","visibleCount","_fix_daylight_saving_date","ted","recurrings","sev","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","timeline_restricted","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","tooltip","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","hideTooltip","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_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","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":"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"}
|