dhtmlx-scheduler 6.0.5 → 7.0.1

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.
Files changed (227) hide show
  1. package/README.md +4 -4
  2. package/bower.json +1 -1
  3. package/codebase/dhtmlxscheduler.css +1 -10
  4. package/codebase/dhtmlxscheduler.d.ts +92 -45
  5. package/codebase/dhtmlxscheduler.es.d.ts +2310 -0
  6. package/codebase/dhtmlxscheduler.es.js +8107 -0
  7. package/codebase/dhtmlxscheduler.es.js.map +1 -0
  8. package/codebase/dhtmlxscheduler.js +76 -36
  9. package/codebase/dhtmlxscheduler.js.map +1 -1
  10. package/codebase/sources/dhtmlxscheduler.css +3214 -2633
  11. package/codebase/sources/dhtmlxscheduler.es.js +16337 -0
  12. package/codebase/sources/dhtmlxscheduler.es.js.map +1 -0
  13. package/codebase/sources/dhtmlxscheduler.js +14654 -23417
  14. package/codebase/sources/dhtmlxscheduler.js.map +1 -0
  15. package/codebase/sources/less/package.json +2 -8
  16. package/codebase/sources/less/scripts.js +4 -3
  17. package/codebase/sources/less/src/agenda.less +70 -0
  18. package/codebase/sources/less/src/agenda_legacy.less +68 -0
  19. package/codebase/sources/less/src/base.less +415 -0
  20. package/codebase/sources/less/src/buttons.less +203 -0
  21. package/codebase/sources/less/src/columns_event.less +216 -0
  22. package/codebase/sources/less/src/columns_view.less +116 -0
  23. package/codebase/sources/less/src/datepicker.less +279 -0
  24. package/codebase/sources/less/src/grid_view.less +68 -0
  25. package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff +0 -0
  26. package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff2 +0 -0
  27. package/codebase/sources/less/src/icons.less +232 -0
  28. package/codebase/sources/less/src/imgs/alert.svg +3 -0
  29. package/codebase/sources/less/src/imgs/arrow/down.svg +3 -0
  30. package/codebase/sources/less/src/imgs/arrow/left.svg +3 -0
  31. package/codebase/sources/less/src/imgs/arrow/right.svg +3 -0
  32. package/codebase/sources/less/src/imgs/arrow/up.svg +3 -0
  33. package/codebase/sources/less/src/imgs/calendar.svg +3 -0
  34. package/codebase/sources/less/src/imgs/cancel.svg +3 -0
  35. package/codebase/sources/less/src/imgs/check.svg +3 -0
  36. package/codebase/sources/less/src/imgs/chevron/down.svg +3 -0
  37. package/codebase/sources/less/src/imgs/chevron/left.svg +3 -0
  38. package/codebase/sources/less/src/imgs/chevron/right.svg +3 -0
  39. package/codebase/sources/less/src/imgs/chevron/up.svg +3 -0
  40. package/codebase/sources/less/src/imgs/clock.svg +3 -0
  41. package/codebase/sources/less/src/imgs/close.svg +3 -0
  42. package/codebase/sources/less/src/imgs/delete.svg +3 -0
  43. package/codebase/sources/less/src/imgs/details.svg +3 -0
  44. package/codebase/sources/less/src/imgs/dots/h.svg +3 -0
  45. package/codebase/sources/less/src/imgs/dots/v.svg +3 -0
  46. package/codebase/sources/less/src/imgs/drag.svg +3 -0
  47. package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-horizontal.svg → src/imgs/drag_horizontal.svg} +1 -1
  48. package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-vertical.svg → src/imgs/drag_vertical.svg} +0 -3
  49. package/codebase/sources/less/src/imgs/edit.svg +4 -0
  50. package/codebase/sources/less/src/imgs/form.svg +3 -0
  51. package/codebase/sources/less/src/imgs/iclose.svg +3 -0
  52. package/codebase/sources/less/src/imgs/loading.svg +3 -0
  53. package/codebase/sources/less/src/imgs/menu/down.svg +3 -0
  54. package/codebase/sources/less/src/imgs/menu/right.svg +3 -0
  55. package/codebase/sources/less/src/imgs/menu.svg +1 -0
  56. package/codebase/sources/less/src/imgs/ok.svg +10 -0
  57. package/codebase/sources/less/src/imgs/plus.svg +3 -0
  58. package/codebase/sources/less/src/imgs/save.svg +3 -0
  59. package/codebase/sources/less/src/imgs/sort/asc.svg +3 -0
  60. package/codebase/sources/less/src/imgs/sort/desc.svg +3 -0
  61. package/codebase/sources/less/src/index.less +22 -0
  62. package/codebase/sources/less/src/layout.less +0 -0
  63. package/codebase/sources/less/src/lightbox.less +480 -0
  64. package/codebase/sources/less/src/misc.less +46 -0
  65. package/codebase/sources/less/src/modals.less +138 -0
  66. package/codebase/sources/less/src/month_event.less +85 -0
  67. package/codebase/sources/less/src/month_view.less +112 -0
  68. package/codebase/sources/less/src/quick_info.less +145 -0
  69. package/codebase/sources/less/src/themes/contrast_black.less +51 -0
  70. package/codebase/sources/less/src/themes/contrast_white.less +51 -0
  71. package/codebase/sources/less/src/themes/dark.less +34 -0
  72. package/codebase/sources/less/src/themes/flat.less +108 -0
  73. package/codebase/sources/less/src/themes/index.less +6 -0
  74. package/codebase/sources/less/src/themes/material.less +138 -0
  75. package/codebase/sources/less/src/themes/variables.less +263 -0
  76. package/codebase/sources/less/src/timeline.less +281 -0
  77. package/codebase/sources/less/src/tooltip.less +21 -0
  78. package/codebase/sources/less/src/week_agenda_view.less +80 -0
  79. package/codebase/sources/less/src/year_view.less +83 -0
  80. package/codebase/sources/less/theme.less +2 -0
  81. package/package.json +3 -3
  82. package/whatsnew.md +30 -0
  83. package/codebase/dhtmlxscheduler_contrast_black.css +0 -10
  84. package/codebase/dhtmlxscheduler_contrast_white.css +0 -10
  85. package/codebase/dhtmlxscheduler_flat.css +0 -10
  86. package/codebase/dhtmlxscheduler_material.css +0 -10
  87. package/codebase/dhtmlxscheduler_material_nofont.css +0 -10
  88. package/codebase/dhtmlxscheduler_terrace.css +0 -10
  89. package/codebase/sources/less/dhtmlxscheduler.less +0 -9
  90. package/codebase/sources/less/dhtmlxscheduler_contrast_black.less +0 -3
  91. package/codebase/sources/less/dhtmlxscheduler_contrast_white.less +0 -3
  92. package/codebase/sources/less/dhtmlxscheduler_flat.less +0 -2
  93. package/codebase/sources/less/dhtmlxscheduler_material.less +0 -5
  94. package/codebase/sources/less/dhtmlxscheduler_material_nofont.less +0 -3
  95. package/codebase/sources/less/dhtmlxscheduler_terrace.less +0 -2
  96. package/codebase/sources/less/dhtmlxscheduler_terrace.new.less +0 -1
  97. package/codebase/sources/less/skins/basic/clear.less +0 -106
  98. package/codebase/sources/less/skins/basic/ext.less +0 -1135
  99. package/codebase/sources/less/skins/basic/imgs/but_repeat.gif +0 -0
  100. package/codebase/sources/less/skins/basic/imgs/buttons.png +0 -0
  101. package/codebase/sources/less/skins/basic/imgs/calendar.gif +0 -0
  102. package/codebase/sources/less/skins/basic/imgs/clock_big.gif +0 -0
  103. package/codebase/sources/less/skins/basic/imgs/clock_small.gif +0 -0
  104. package/codebase/sources/less/skins/basic/imgs/collapse_expand_icon.gif +0 -0
  105. package/codebase/sources/less/skins/basic/imgs/controls.gif +0 -0
  106. package/codebase/sources/less/skins/basic/imgs/databg.png +0 -0
  107. package/codebase/sources/less/skins/basic/imgs/databg_now.png +0 -0
  108. package/codebase/sources/less/skins/basic/imgs/export_ical.png +0 -0
  109. package/codebase/sources/less/skins/basic/imgs/export_pdf.png +0 -0
  110. package/codebase/sources/less/skins/basic/imgs/icon.png +0 -0
  111. package/codebase/sources/less/skins/basic/imgs/images.png +0 -0
  112. package/codebase/sources/less/skins/basic/imgs/loading.gif +0 -0
  113. package/codebase/sources/less/skins/basic/imgs/resize_dots.png +0 -0
  114. package/codebase/sources/less/skins/basic/index.less +0 -7
  115. package/codebase/sources/less/skins/basic/layout.less +0 -638
  116. package/codebase/sources/less/skins/basic/lightbox.less +0 -423
  117. package/codebase/sources/less/skins/basic/lightbox_responsive.less +0 -322
  118. package/codebase/sources/less/skins/basic/message_default.less +0 -242
  119. package/codebase/sources/less/skins/basic/note.less +0 -272
  120. package/codebase/sources/less/skins/basic/recurring.less +0 -168
  121. package/codebase/sources/less/skins/basic/skin.less +0 -735
  122. package/codebase/sources/less/skins/basic/suite.less +0 -8
  123. package/codebase/sources/less/skins/contrast_black/add_styles.less +0 -519
  124. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_left.png +0 -0
  125. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_right.png +0 -0
  126. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/but_repeat.gif +0 -0
  127. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/calendar.gif +0 -0
  128. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_big.gif +0 -0
  129. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_small.gif +0 -0
  130. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/close_icon.png +0 -0
  131. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/collapse_expand_icon.gif +0 -0
  132. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/controls.png +0 -0
  133. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg.png +0 -0
  134. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg_now.png +0 -0
  135. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_ical.png +0 -0
  136. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_pdf.png +0 -0
  137. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resize_dots.png +0 -0
  138. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resizing.png +0 -0
  139. package/codebase/sources/less/skins/contrast_black/index.less +0 -4
  140. package/codebase/sources/less/skins/contrast_black/skin.less +0 -758
  141. package/codebase/sources/less/skins/contrast_white/dhx_skin_contrast_white.less +0 -1017
  142. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_left.png +0 -0
  143. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_right.png +0 -0
  144. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/but_repeat.gif +0 -0
  145. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/calendar.gif +0 -0
  146. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_big.gif +0 -0
  147. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_small.gif +0 -0
  148. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/close_icon.png +0 -0
  149. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/collapse_expand_icon.gif +0 -0
  150. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/controls.png +0 -0
  151. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/databg.png +0 -0
  152. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_ical.png +0 -0
  153. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_pdf.png +0 -0
  154. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/quick_info_edit.png +0 -0
  155. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resize_dots.png +0 -0
  156. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resizing.png +0 -0
  157. package/codebase/sources/less/skins/contrast_white/index.less +0 -4
  158. package/codebase/sources/less/skins/flat/add_styles.less +0 -286
  159. package/codebase/sources/less/skins/flat/imgs_flat/agenda_bg.gif +0 -0
  160. package/codebase/sources/less/skins/flat/imgs_flat/arrow_left.png +0 -0
  161. package/codebase/sources/less/skins/flat/imgs_flat/arrow_right.png +0 -0
  162. package/codebase/sources/less/skins/flat/imgs_flat/but_repeat.gif +0 -0
  163. package/codebase/sources/less/skins/flat/imgs_flat/calendar.gif +0 -0
  164. package/codebase/sources/less/skins/flat/imgs_flat/clock.png +0 -0
  165. package/codebase/sources/less/skins/flat/imgs_flat/clock_big.gif +0 -0
  166. package/codebase/sources/less/skins/flat/imgs_flat/clock_small.gif +0 -0
  167. package/codebase/sources/less/skins/flat/imgs_flat/close_icon.png +0 -0
  168. package/codebase/sources/less/skins/flat/imgs_flat/collapse_expand_icon.gif +0 -0
  169. package/codebase/sources/less/skins/flat/imgs_flat/controls.png +0 -0
  170. package/codebase/sources/less/skins/flat/imgs_flat/databg.png +0 -0
  171. package/codebase/sources/less/skins/flat/imgs_flat/databg_now.png +0 -0
  172. package/codebase/sources/less/skins/flat/imgs_flat/export_ical.png +0 -0
  173. package/codebase/sources/less/skins/flat/imgs_flat/export_pdf.png +0 -0
  174. package/codebase/sources/less/skins/flat/imgs_flat/resize_dots.png +0 -0
  175. package/codebase/sources/less/skins/flat/imgs_flat/resizing.png +0 -0
  176. package/codebase/sources/less/skins/flat/index.less +0 -4
  177. package/codebase/sources/less/skins/flat/skin.less +0 -674
  178. package/codebase/sources/less/skins/material/add_styles.less +0 -2055
  179. package/codebase/sources/less/skins/material/imgs_dhx_material/Shape.svg +0 -3
  180. package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar-hov.svg +0 -4
  181. package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar.svg +0 -4
  182. package/codebase/sources/less/skins/material/imgs_dhx_material/agenda_bg.png +0 -0
  183. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left.svg +0 -3
  184. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left_hov.svg +0 -3
  185. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right.svg +0 -3
  186. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right_hov.svg +0 -3
  187. package/codebase/sources/less/skins/material/imgs_dhx_material/but_repeat.png +0 -0
  188. package/codebase/sources/less/skins/material/imgs_dhx_material/calendar.svg +0 -4
  189. package/codebase/sources/less/skins/material/imgs_dhx_material/clock_big.png +0 -0
  190. package/codebase/sources/less/skins/material/imgs_dhx_material/clock_small.png +0 -0
  191. package/codebase/sources/less/skins/material/imgs_dhx_material/close_icon.png +0 -0
  192. package/codebase/sources/less/skins/material/imgs_dhx_material/collapse_expand_icon.png +0 -0
  193. package/codebase/sources/less/skins/material/imgs_dhx_material/controls.png +0 -0
  194. package/codebase/sources/less/skins/material/imgs_dhx_material/databg.png +0 -0
  195. package/codebase/sources/less/skins/material/imgs_dhx_material/export_ical.png +0 -0
  196. package/codebase/sources/less/skins/material/imgs_dhx_material/export_pdf.png +0 -0
  197. package/codebase/sources/less/skins/material/imgs_dhx_material/icon.png +0 -0
  198. package/codebase/sources/less/skins/material/imgs_dhx_material/menu-down.svg +0 -1
  199. package/codebase/sources/less/skins/material/imgs_dhx_material/resizing.png +0 -0
  200. package/codebase/sources/less/skins/material/imgs_dhx_material/time.svg +0 -24
  201. package/codebase/sources/less/skins/material/imgs_dhx_material/tree_arrow.svg +0 -3
  202. package/codebase/sources/less/skins/material/index.less +0 -10
  203. package/codebase/sources/less/skins/material/skin.less +0 -879
  204. package/codebase/sources/less/skins/terrace/add_styles.less +0 -351
  205. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_left.png +0 -0
  206. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_right.png +0 -0
  207. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/but_repeat.gif +0 -0
  208. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/calendar.gif +0 -0
  209. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_big.gif +0 -0
  210. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_small.gif +0 -0
  211. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/close_icon.png +0 -0
  212. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/collapse_expand_icon.gif +0 -0
  213. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/controls.png +0 -0
  214. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg.png +0 -0
  215. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg_now.png +0 -0
  216. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_ical.png +0 -0
  217. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_pdf.png +0 -0
  218. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resize_dots.png +0 -0
  219. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resizing.png +0 -0
  220. package/codebase/sources/less/skins/terrace/index.less +0 -4
  221. package/codebase/sources/less/skins/terrace/skin.less +0 -687
  222. package/codebase/sources/skins/dhtmlxscheduler_contrast_black.css +0 -3218
  223. package/codebase/sources/skins/dhtmlxscheduler_contrast_white.css +0 -3644
  224. package/codebase/sources/skins/dhtmlxscheduler_flat.css +0 -2975
  225. package/codebase/sources/skins/dhtmlxscheduler_material.css +0 -4360
  226. package/codebase/sources/skins/dhtmlxscheduler_material_nofont.css +0 -4359
  227. package/codebase/sources/skins/dhtmlxscheduler_terrace.css +0 -3080
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dhtmlxscheduler.es.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\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\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\tthis._drag_event = null;\r\n\tthis._drag_from_start = null;\r\n};\r\n\r\nscheduler._trigger_dyn_loading = function(){\r\n\tif (this._load_mode && this._load()){\r\n\t\tthis._render_wait = true;\r\n\t\treturn true;\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.update_view=function(){\r\n\tthis._reset_ignores();\r\n\tthis._update_nav_bar(\r\n\t\tthis.config.header,\r\n\t\tthis.$container.querySelector(\".dhx_cal_navline\"));\r\n\r\n\tvar view = this[this._mode + \"_view\"];\r\n\tif(view){\r\n\t\tview.call(this, true);\r\n\t}else{\r\n\t\tthis._reset_scale();\r\n\t}\r\n\r\n\tif (this._trigger_dyn_loading()){\r\n\t\treturn true;\r\n\t}\r\n\tthis.render_view_data();\r\n};\r\n\r\nscheduler.isViewExists = function(mode){\r\n\treturn !!(scheduler[mode+ \"_view\"] ||\r\n\t\t(scheduler.date[mode+ \"_start\"] && scheduler.templates[mode+ \"_date\"] && scheduler.templates[mode+ \"_scale_date\"]));\r\n};\r\n\r\nscheduler._set_aria_buttons_attrs = function(){\r\n\tvar buttonGroups = [\"dhx_cal_next_button\", \"dhx_cal_prev_button\", \"dhx_cal_tab\", \"dhx_cal_today_button\"];\r\n\tfor(var i = 0; i < buttonGroups.length; i++){\r\n\t\tvar group = this._els[buttonGroups[i]];\r\n\t\tfor(var j = 0; group && j < group.length; j++ ){\r\n\t\t\tvar name = group[j].getAttribute(\"data-tab\") || group[j].getAttribute(\"name\");\r\n\t\t\tvar label = this.locale.labels[buttonGroups[i]];\r\n\t\t\tif(name){\r\n\t\t\t\tlabel = this.locale.labels[name + \"_tab\"] || this.locale.labels[name] || label;\r\n\t\t\t}\r\n\t\t\tif(buttonGroups[i] == \"dhx_cal_next_button\"){\r\n\t\t\t\tlabel = this.locale.labels.next;\r\n\t\t\t}else if(buttonGroups[i] == \"dhx_cal_prev_button\"){\r\n\t\t\t\tlabel = this.locale.labels.prev;\r\n\t\t\t}\r\n\t\t\tthis._waiAria.headerButtonsAttributes(group[j], label || \"\");\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.updateView = function(date, mode) {\r\n\r\n\tif (!this.$container) {\r\n\t\tthrow new Error(\"The scheduler is not initialized. \\n **scheduler.updateView** or **scheduler.setCurrentView** can be called only after **scheduler.init**\");\r\n\t}\r\n\r\n\tdate = date || this._date;\r\n\tmode = mode || this._mode;\r\n\tvar dhx_cal_data = 'dhx_cal_data';\r\n\r\n\tif(!this.locale.labels.icon_form){\r\n\t\tthis.locale.labels.icon_form = this.locale.labels.icon_edit;\r\n\t}\r\n\r\n\tvar container = this._obj;\r\n\tvar oldClass = \"dhx_scheduler_\" + this._mode;\r\n\tvar newClass = \"dhx_scheduler_\" + mode;\r\n\r\n\tif (!this._mode || (container.className.indexOf(oldClass) == -1)){\r\n\t\tcontainer.className += \" \" + newClass;\r\n\t} else {\r\n\t\tcontainer.className = container.className.replace(oldClass, newClass);\r\n\t}\r\n\r\n\tvar dhx_multi_day = 'dhx_multi_day';\r\n\r\n\tvar prev_scroll = (this._mode == mode && this.config.preserve_scroll) ? this._els[dhx_cal_data][0].scrollTop : false; // saving current scroll\r\n\r\n\tvar multidayScroll;\r\n\tif(this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tmultidayScroll = this._els[dhx_multi_day][0].scrollTop;\r\n\t}\r\n\r\n\t//hide old custom view\r\n\tif (this[this._mode + \"_view\"] && mode && this._mode != mode)\r\n\t\tthis[this._mode + \"_view\"](false);\r\n\r\n\tthis._close_not_saved();\r\n\r\n\tif (this._els[dhx_multi_day]) {\r\n\t\tthis._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);\r\n\t\tthis._els[dhx_multi_day] = null;\r\n\t}\r\n\r\n\tthis._mode = mode;\r\n\tthis._date = date;\r\n\tthis._table_view = (this._mode == \"month\");\r\n\r\n\tthis._dy_shift = 0;//correction for multiday section in week/day views\r\n\r\n\t//show new view\r\n\tthis.update_view();\r\n\r\n\tthis._set_aria_buttons_attrs();\r\n\r\n\tvar tabs = this._els[\"dhx_cal_tab\"];\r\n\tif(tabs){//calendar can work without view tabs\r\n\t\tfor (var i = 0; i < tabs.length; i++) {\r\n\t\t\tvar tab = tabs[i];\r\n\r\n\t\t\tif (tab.getAttribute(\"data-tab\") == this._mode || tab.getAttribute(\"name\") == this._mode + \"_tab\"){\r\n\t\t\t\ttab.classList.add(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, true);\r\n\t\t\t}else{\r\n\t\t\t\ttab.classList.remove(\"active\");\r\n\t\t\t\tthis._waiAria.headerToggleState(tab, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (typeof prev_scroll == \"number\") // if we are updating or working with the same view scrollTop should be saved\r\n\t\tthis._els[dhx_cal_data][0].scrollTop = prev_scroll; // restoring original scroll\r\n\r\n\tif(typeof multidayScroll == \"number\" && this._els[dhx_multi_day] && this._els[dhx_multi_day][0]){\r\n\t\tthis._els[dhx_multi_day][0].scrollTop = multidayScroll;\r\n\t}\r\n\r\n};\r\nscheduler.setCurrentView = function(date, mode) {\r\n\tif (!this.callEvent(\"onBeforeViewChange\", [this._mode, this._date, mode || this._mode, date || this._date])) return;\r\n\tthis.updateView(date, mode);\r\n\tthis.callEvent(\"onViewChange\", [this._mode, this._date]);\r\n};\r\n\r\nscheduler.render = function(date, mode){\r\n\tscheduler.setCurrentView(date, mode);\r\n};\r\n\r\nscheduler._render_x_header = function(i,left,date,container, offset_top){\r\n\toffset_top = offset_top || 0;\r\n\t//header scale\r\n\tvar head=document.createElement(\"div\");\r\n\thead.className = \"dhx_scale_bar\";\r\n\r\n\tif(this.templates[this._mode+\"_scalex_class\"]){\r\n\t\t//'_scalex_class' - timeline already have similar template, use the same name\r\n\t\thead.className += ' ' + this.templates[this._mode+\"_scalex_class\"](date);\r\n\t}\r\n\r\n\tvar width = this._cols[i];\r\n\r\n\tif (this._mode == \"month\" && i === 0 && this.config.left_border) {\r\n\t\thead.className += \" dhx_scale_bar_border\";\r\n\t\tleft = left+1;\r\n\t}\r\n\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, \"&#39;\");\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: 200,\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\"))+\" &ndash; \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" &ndash; \"+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\" >&nbsp;</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'> &nbsp;&ndash;&nbsp; </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+\"&nbsp;</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'>&nbsp;</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'>&nbsp;\"+ 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'>&nbsp;\"+ 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'>&nbsp;</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&auml;kuu\", \"Hein&auml;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&auml;yt&ouml;ss&auml;\",\r\n\t\tbutton_recurring_open: \"K&auml;yt&ouml;ss&auml;\",\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&auml;ivitt&auml;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&auml;iv&auml;\",\r\n\t\trepeat_radio_day_type2: \"Joka arkip&auml;iv&auml;\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko n&auml;in&auml; p&auml;ivin&auml;:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"p&auml;iv&auml;n&auml; 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&auml;iv&auml;\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston j&auml;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&auml;kuu\", \"Hein&auml;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&quot;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)+\" &ndash; \"+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\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\"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}\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;\" >&nbsp;</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) + \" &ndash; \" + 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) + \" &ndash; \" + 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 = [\"&nbsp;\", \"&nbsp;\"];\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'> &nbsp;&ndash;&nbsp; </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 + \"&nbsp;</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\tif(scheduler.getView() && scheduler.getView()._x_scroll){\r\n\t\t\t// scrollable timeline\r\n\t\t\tif(scheduler.config.rtl){\r\n\t\t\t\tleft += scheduler.getView()._x_scroll;\r\n\t\t\t}else{\r\n\t\t\t\tleft -= scheduler.getView()._x_scroll;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tvar right = left + width;\r\n\t\tif(right > window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n};\r\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'>&nbsp;</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","_silent_mode","listeners","_silentStart","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","eventable","nav_bar","_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","constructor","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","xmlLoaded","jsonLoader","iCalLoader","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","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","_x_scroll","dataPos","_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","_getViewPort","viewport","_getViewPortSize","tooltipNode","tooltip","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","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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"}