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.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","extend$l","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","layout","navbar","render","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","matrix","push","_props","_grid","names","optionalViews","viewName","_currentDate","_obj","getElementById","error","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","object","_x","_y","scale_x","_table_view","scale_s","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","_is_new_skin","actual_height","data_y","left","right","node","x","y","prepareValue","val","prepared","isNaN","Number","Math","max","direction","undefined","top","els","getElementsByTagName","class_name","_getClassName","attr_value","getAttribute","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","e","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","ev","src","target","srcElement","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","unselect","updateEvent","t","getEvent","_mode","Date","_date","min_date","_min_date","max_date","_max_date","editor_id","_edit_id","lightbox_id","_lightbox_id","new_event","_new_event","select_id","expanded","drag_id","_drag_id","drag_mode","_drag_mode","dhx_cal_data","cancelBubble","trg","getActionData","readonly","icon","closest","mask","indexOf","buttons","replace","valueOf","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","result","confirm","addEventNow","start","end","base","_isObject","_isDate","d","event_duration","time_step","start_date","round","start_hour","first_hour","getHours","setHours","end_date","setTime","uid","_loading","_drag_event","dblclick_create","details_on_dblclick","_timed","call","_get_column_index","x_pos","column","_cols","_ignores","floor","_week_indexes_from_pos","pos","min","ceil","hour_size_px","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","delay","d_pos","has_moved","_correct_drag_start_date","len","_start_correction","_end_correction","last_hour","getMinutes","_get_fictional_event_length","_correct_drag_end_date","duration","mousedownPos","_get_date_from_pos","_drag_start","res","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","date_part","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","getView","getDate","_allow_dnd","update_render","sx","update_view","for_rendered","r","classname","drag_event_body","fullClass","_lame_clone","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","_lame_copy","edit_on_create","details_on_create","isOneDayEvent","render_view_data","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","getFullYear","getMonth","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","_scales","week_start","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","navline","c1","visibility","totalWidth","col_length","offset","hiddenWidth","c2","cloneNode","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","cells","querySelectorAll","parse_date","getLabel","property","key","sections","lightbox","map_to","options","updateCollection","list_name","collection","serverList","splice","resetLightbox","hideCover","cache","Object","create","String","Boolean","prototype","hasOwnProperty","source","n_ev","section","_focus","focus","getDaysDifference","startDate","endDate","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","days","fd","start_slot","end_slot","_get_section_property","y_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","slice","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","isActive","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","uidSeed","now","pop","isStringObject","Function","toString","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","extend$a","extend$9","extend$8","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","cfg","dt","last","limit_time_select","p","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","block","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","defaultButtonsLeft","defaultButtonsRight","tmp","week_agenda_scale_height","map_icon_width","minic","minicalendar","padding","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","methods","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_type","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","updateMode","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","setUpdateMode","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","sendData","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","ids","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","setInterval","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","_prepareDataItem","item","processedItem","dataItem","createDataProcessor","tMode","batchUpdate","boxAttribute","_dhx_msg_cfg","usercall","modalBox","hide","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","be","agenda_tab","description","year_tab","week_agenda_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","month_for_recurring","day_for_recurring","ca","cn","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","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","viewport","_getViewPortSize","tooltipNode","tooltip","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","hideTooltip","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_month_head","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_x","year_top","ssd","yearBox","yearStart","datepicker","locateEvent","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":"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"}