dhtmlx-scheduler 6.0.5 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +4 -4
  2. package/bower.json +1 -1
  3. package/codebase/dhtmlxscheduler.css +1 -10
  4. package/codebase/dhtmlxscheduler.d.ts +92 -45
  5. package/codebase/dhtmlxscheduler.es.d.ts +2310 -0
  6. package/codebase/dhtmlxscheduler.es.js +8107 -0
  7. package/codebase/dhtmlxscheduler.es.js.map +1 -0
  8. package/codebase/dhtmlxscheduler.js +76 -36
  9. package/codebase/dhtmlxscheduler.js.map +1 -1
  10. package/codebase/sources/dhtmlxscheduler.css +3214 -2633
  11. package/codebase/sources/dhtmlxscheduler.es.js +16337 -0
  12. package/codebase/sources/dhtmlxscheduler.es.js.map +1 -0
  13. package/codebase/sources/dhtmlxscheduler.js +14654 -23417
  14. package/codebase/sources/dhtmlxscheduler.js.map +1 -0
  15. package/codebase/sources/less/package.json +2 -8
  16. package/codebase/sources/less/scripts.js +4 -3
  17. package/codebase/sources/less/src/agenda.less +70 -0
  18. package/codebase/sources/less/src/agenda_legacy.less +68 -0
  19. package/codebase/sources/less/src/base.less +415 -0
  20. package/codebase/sources/less/src/buttons.less +203 -0
  21. package/codebase/sources/less/src/columns_event.less +216 -0
  22. package/codebase/sources/less/src/columns_view.less +116 -0
  23. package/codebase/sources/less/src/datepicker.less +279 -0
  24. package/codebase/sources/less/src/grid_view.less +68 -0
  25. package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff +0 -0
  26. package/codebase/sources/less/src/iconfont/dhx-scheduler-icons.woff2 +0 -0
  27. package/codebase/sources/less/src/icons.less +232 -0
  28. package/codebase/sources/less/src/imgs/alert.svg +3 -0
  29. package/codebase/sources/less/src/imgs/arrow/down.svg +3 -0
  30. package/codebase/sources/less/src/imgs/arrow/left.svg +3 -0
  31. package/codebase/sources/less/src/imgs/arrow/right.svg +3 -0
  32. package/codebase/sources/less/src/imgs/arrow/up.svg +3 -0
  33. package/codebase/sources/less/src/imgs/calendar.svg +3 -0
  34. package/codebase/sources/less/src/imgs/cancel.svg +3 -0
  35. package/codebase/sources/less/src/imgs/check.svg +3 -0
  36. package/codebase/sources/less/src/imgs/chevron/down.svg +3 -0
  37. package/codebase/sources/less/src/imgs/chevron/left.svg +3 -0
  38. package/codebase/sources/less/src/imgs/chevron/right.svg +3 -0
  39. package/codebase/sources/less/src/imgs/chevron/up.svg +3 -0
  40. package/codebase/sources/less/src/imgs/clock.svg +3 -0
  41. package/codebase/sources/less/src/imgs/close.svg +3 -0
  42. package/codebase/sources/less/src/imgs/delete.svg +3 -0
  43. package/codebase/sources/less/src/imgs/details.svg +3 -0
  44. package/codebase/sources/less/src/imgs/dots/h.svg +3 -0
  45. package/codebase/sources/less/src/imgs/dots/v.svg +3 -0
  46. package/codebase/sources/less/src/imgs/drag.svg +3 -0
  47. package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-horizontal.svg → src/imgs/drag_horizontal.svg} +1 -1
  48. package/codebase/sources/less/{skins/material/imgs_dhx_material/drag-vertical.svg → src/imgs/drag_vertical.svg} +0 -3
  49. package/codebase/sources/less/src/imgs/edit.svg +4 -0
  50. package/codebase/sources/less/src/imgs/form.svg +3 -0
  51. package/codebase/sources/less/src/imgs/iclose.svg +3 -0
  52. package/codebase/sources/less/src/imgs/loading.svg +3 -0
  53. package/codebase/sources/less/src/imgs/menu/down.svg +3 -0
  54. package/codebase/sources/less/src/imgs/menu/right.svg +3 -0
  55. package/codebase/sources/less/src/imgs/menu.svg +1 -0
  56. package/codebase/sources/less/src/imgs/ok.svg +10 -0
  57. package/codebase/sources/less/src/imgs/plus.svg +3 -0
  58. package/codebase/sources/less/src/imgs/save.svg +3 -0
  59. package/codebase/sources/less/src/imgs/sort/asc.svg +3 -0
  60. package/codebase/sources/less/src/imgs/sort/desc.svg +3 -0
  61. package/codebase/sources/less/src/index.less +22 -0
  62. package/codebase/sources/less/src/layout.less +0 -0
  63. package/codebase/sources/less/src/lightbox.less +480 -0
  64. package/codebase/sources/less/src/misc.less +46 -0
  65. package/codebase/sources/less/src/modals.less +138 -0
  66. package/codebase/sources/less/src/month_event.less +85 -0
  67. package/codebase/sources/less/src/month_view.less +112 -0
  68. package/codebase/sources/less/src/quick_info.less +145 -0
  69. package/codebase/sources/less/src/themes/contrast_black.less +51 -0
  70. package/codebase/sources/less/src/themes/contrast_white.less +51 -0
  71. package/codebase/sources/less/src/themes/dark.less +34 -0
  72. package/codebase/sources/less/src/themes/flat.less +108 -0
  73. package/codebase/sources/less/src/themes/index.less +6 -0
  74. package/codebase/sources/less/src/themes/material.less +138 -0
  75. package/codebase/sources/less/src/themes/variables.less +263 -0
  76. package/codebase/sources/less/src/timeline.less +281 -0
  77. package/codebase/sources/less/src/tooltip.less +21 -0
  78. package/codebase/sources/less/src/week_agenda_view.less +80 -0
  79. package/codebase/sources/less/src/year_view.less +83 -0
  80. package/codebase/sources/less/theme.less +2 -0
  81. package/package.json +3 -3
  82. package/whatsnew.md +30 -0
  83. package/codebase/dhtmlxscheduler_contrast_black.css +0 -10
  84. package/codebase/dhtmlxscheduler_contrast_white.css +0 -10
  85. package/codebase/dhtmlxscheduler_flat.css +0 -10
  86. package/codebase/dhtmlxscheduler_material.css +0 -10
  87. package/codebase/dhtmlxscheduler_material_nofont.css +0 -10
  88. package/codebase/dhtmlxscheduler_terrace.css +0 -10
  89. package/codebase/sources/less/dhtmlxscheduler.less +0 -9
  90. package/codebase/sources/less/dhtmlxscheduler_contrast_black.less +0 -3
  91. package/codebase/sources/less/dhtmlxscheduler_contrast_white.less +0 -3
  92. package/codebase/sources/less/dhtmlxscheduler_flat.less +0 -2
  93. package/codebase/sources/less/dhtmlxscheduler_material.less +0 -5
  94. package/codebase/sources/less/dhtmlxscheduler_material_nofont.less +0 -3
  95. package/codebase/sources/less/dhtmlxscheduler_terrace.less +0 -2
  96. package/codebase/sources/less/dhtmlxscheduler_terrace.new.less +0 -1
  97. package/codebase/sources/less/skins/basic/clear.less +0 -106
  98. package/codebase/sources/less/skins/basic/ext.less +0 -1135
  99. package/codebase/sources/less/skins/basic/imgs/but_repeat.gif +0 -0
  100. package/codebase/sources/less/skins/basic/imgs/buttons.png +0 -0
  101. package/codebase/sources/less/skins/basic/imgs/calendar.gif +0 -0
  102. package/codebase/sources/less/skins/basic/imgs/clock_big.gif +0 -0
  103. package/codebase/sources/less/skins/basic/imgs/clock_small.gif +0 -0
  104. package/codebase/sources/less/skins/basic/imgs/collapse_expand_icon.gif +0 -0
  105. package/codebase/sources/less/skins/basic/imgs/controls.gif +0 -0
  106. package/codebase/sources/less/skins/basic/imgs/databg.png +0 -0
  107. package/codebase/sources/less/skins/basic/imgs/databg_now.png +0 -0
  108. package/codebase/sources/less/skins/basic/imgs/export_ical.png +0 -0
  109. package/codebase/sources/less/skins/basic/imgs/export_pdf.png +0 -0
  110. package/codebase/sources/less/skins/basic/imgs/icon.png +0 -0
  111. package/codebase/sources/less/skins/basic/imgs/images.png +0 -0
  112. package/codebase/sources/less/skins/basic/imgs/loading.gif +0 -0
  113. package/codebase/sources/less/skins/basic/imgs/resize_dots.png +0 -0
  114. package/codebase/sources/less/skins/basic/index.less +0 -7
  115. package/codebase/sources/less/skins/basic/layout.less +0 -638
  116. package/codebase/sources/less/skins/basic/lightbox.less +0 -423
  117. package/codebase/sources/less/skins/basic/lightbox_responsive.less +0 -322
  118. package/codebase/sources/less/skins/basic/message_default.less +0 -242
  119. package/codebase/sources/less/skins/basic/note.less +0 -272
  120. package/codebase/sources/less/skins/basic/recurring.less +0 -168
  121. package/codebase/sources/less/skins/basic/skin.less +0 -735
  122. package/codebase/sources/less/skins/basic/suite.less +0 -8
  123. package/codebase/sources/less/skins/contrast_black/add_styles.less +0 -519
  124. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_left.png +0 -0
  125. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/arrow_right.png +0 -0
  126. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/but_repeat.gif +0 -0
  127. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/calendar.gif +0 -0
  128. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_big.gif +0 -0
  129. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/clock_small.gif +0 -0
  130. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/close_icon.png +0 -0
  131. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/collapse_expand_icon.gif +0 -0
  132. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/controls.png +0 -0
  133. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg.png +0 -0
  134. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/databg_now.png +0 -0
  135. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_ical.png +0 -0
  136. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/export_pdf.png +0 -0
  137. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resize_dots.png +0 -0
  138. package/codebase/sources/less/skins/contrast_black/imgs_contrast_black/resizing.png +0 -0
  139. package/codebase/sources/less/skins/contrast_black/index.less +0 -4
  140. package/codebase/sources/less/skins/contrast_black/skin.less +0 -758
  141. package/codebase/sources/less/skins/contrast_white/dhx_skin_contrast_white.less +0 -1017
  142. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_left.png +0 -0
  143. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/arrow_right.png +0 -0
  144. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/but_repeat.gif +0 -0
  145. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/calendar.gif +0 -0
  146. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_big.gif +0 -0
  147. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/clock_small.gif +0 -0
  148. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/close_icon.png +0 -0
  149. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/collapse_expand_icon.gif +0 -0
  150. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/controls.png +0 -0
  151. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/databg.png +0 -0
  152. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_ical.png +0 -0
  153. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/export_pdf.png +0 -0
  154. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/quick_info_edit.png +0 -0
  155. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resize_dots.png +0 -0
  156. package/codebase/sources/less/skins/contrast_white/imgs_contrast_white/resizing.png +0 -0
  157. package/codebase/sources/less/skins/contrast_white/index.less +0 -4
  158. package/codebase/sources/less/skins/flat/add_styles.less +0 -286
  159. package/codebase/sources/less/skins/flat/imgs_flat/agenda_bg.gif +0 -0
  160. package/codebase/sources/less/skins/flat/imgs_flat/arrow_left.png +0 -0
  161. package/codebase/sources/less/skins/flat/imgs_flat/arrow_right.png +0 -0
  162. package/codebase/sources/less/skins/flat/imgs_flat/but_repeat.gif +0 -0
  163. package/codebase/sources/less/skins/flat/imgs_flat/calendar.gif +0 -0
  164. package/codebase/sources/less/skins/flat/imgs_flat/clock.png +0 -0
  165. package/codebase/sources/less/skins/flat/imgs_flat/clock_big.gif +0 -0
  166. package/codebase/sources/less/skins/flat/imgs_flat/clock_small.gif +0 -0
  167. package/codebase/sources/less/skins/flat/imgs_flat/close_icon.png +0 -0
  168. package/codebase/sources/less/skins/flat/imgs_flat/collapse_expand_icon.gif +0 -0
  169. package/codebase/sources/less/skins/flat/imgs_flat/controls.png +0 -0
  170. package/codebase/sources/less/skins/flat/imgs_flat/databg.png +0 -0
  171. package/codebase/sources/less/skins/flat/imgs_flat/databg_now.png +0 -0
  172. package/codebase/sources/less/skins/flat/imgs_flat/export_ical.png +0 -0
  173. package/codebase/sources/less/skins/flat/imgs_flat/export_pdf.png +0 -0
  174. package/codebase/sources/less/skins/flat/imgs_flat/resize_dots.png +0 -0
  175. package/codebase/sources/less/skins/flat/imgs_flat/resizing.png +0 -0
  176. package/codebase/sources/less/skins/flat/index.less +0 -4
  177. package/codebase/sources/less/skins/flat/skin.less +0 -674
  178. package/codebase/sources/less/skins/material/add_styles.less +0 -2055
  179. package/codebase/sources/less/skins/material/imgs_dhx_material/Shape.svg +0 -3
  180. package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar-hov.svg +0 -4
  181. package/codebase/sources/less/skins/material/imgs_dhx_material/agenda-calendar.svg +0 -4
  182. package/codebase/sources/less/skins/material/imgs_dhx_material/agenda_bg.png +0 -0
  183. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left.svg +0 -3
  184. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_left_hov.svg +0 -3
  185. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right.svg +0 -3
  186. package/codebase/sources/less/skins/material/imgs_dhx_material/arrow_right_hov.svg +0 -3
  187. package/codebase/sources/less/skins/material/imgs_dhx_material/but_repeat.png +0 -0
  188. package/codebase/sources/less/skins/material/imgs_dhx_material/calendar.svg +0 -4
  189. package/codebase/sources/less/skins/material/imgs_dhx_material/clock_big.png +0 -0
  190. package/codebase/sources/less/skins/material/imgs_dhx_material/clock_small.png +0 -0
  191. package/codebase/sources/less/skins/material/imgs_dhx_material/close_icon.png +0 -0
  192. package/codebase/sources/less/skins/material/imgs_dhx_material/collapse_expand_icon.png +0 -0
  193. package/codebase/sources/less/skins/material/imgs_dhx_material/controls.png +0 -0
  194. package/codebase/sources/less/skins/material/imgs_dhx_material/databg.png +0 -0
  195. package/codebase/sources/less/skins/material/imgs_dhx_material/export_ical.png +0 -0
  196. package/codebase/sources/less/skins/material/imgs_dhx_material/export_pdf.png +0 -0
  197. package/codebase/sources/less/skins/material/imgs_dhx_material/icon.png +0 -0
  198. package/codebase/sources/less/skins/material/imgs_dhx_material/menu-down.svg +0 -1
  199. package/codebase/sources/less/skins/material/imgs_dhx_material/resizing.png +0 -0
  200. package/codebase/sources/less/skins/material/imgs_dhx_material/time.svg +0 -24
  201. package/codebase/sources/less/skins/material/imgs_dhx_material/tree_arrow.svg +0 -3
  202. package/codebase/sources/less/skins/material/index.less +0 -10
  203. package/codebase/sources/less/skins/material/skin.less +0 -879
  204. package/codebase/sources/less/skins/terrace/add_styles.less +0 -351
  205. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_left.png +0 -0
  206. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/arrow_right.png +0 -0
  207. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/but_repeat.gif +0 -0
  208. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/calendar.gif +0 -0
  209. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_big.gif +0 -0
  210. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/clock_small.gif +0 -0
  211. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/close_icon.png +0 -0
  212. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/collapse_expand_icon.gif +0 -0
  213. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/controls.png +0 -0
  214. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg.png +0 -0
  215. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/databg_now.png +0 -0
  216. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_ical.png +0 -0
  217. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/export_pdf.png +0 -0
  218. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resize_dots.png +0 -0
  219. package/codebase/sources/less/skins/terrace/imgs_dhx_terrace/resizing.png +0 -0
  220. package/codebase/sources/less/skins/terrace/index.less +0 -4
  221. package/codebase/sources/less/skins/terrace/skin.less +0 -687
  222. package/codebase/sources/skins/dhtmlxscheduler_contrast_black.css +0 -3218
  223. package/codebase/sources/skins/dhtmlxscheduler_contrast_white.css +0 -3644
  224. package/codebase/sources/skins/dhtmlxscheduler_flat.css +0 -2975
  225. package/codebase/sources/skins/dhtmlxscheduler_material.css +0 -4360
  226. package/codebase/sources/skins/dhtmlxscheduler_material_nofont.css +0 -4359
  227. package/codebase/sources/skins/dhtmlxscheduler_terrace.css +0 -3080
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dhtmlxscheduler.es.js","sources":["../sources/global.js","../sources/core/nav_bar.js","../sources/core/scheduler_resize_listener.js","../sources/utils/eventable.js","../sources/core/utils/event.js","../sources/core/common.js","../sources/core/utils/scoped_event.js","../sources/core/utils/utils.js","../sources/core/utils/dom_helpers.js","../sources/utils/env.js","../sources/core/common/url_serialize.js","../sources/core/base.js","../sources/core/common/get_serializable_events.js","../sources/core/load.js","../sources/core/loaders/xml.js","../sources/core/loaders/json.js","../sources/core/loaders/ical.js","../sources/core/touch.js","../sources/core/skins.js","../sources/core/dataprocessor/dataprocessor_hooks.js","../sources/core/dataprocessor/dataprocessor.js","../sources/core/message.js","../sources/locale/locale_ar.js","../sources/locale/locale_be.js","../sources/locale/locale_ca.js","../sources/locale/locale_cn.js","../sources/locale/locale_cs.js","../sources/locale/locale_da.js","../sources/locale/locale_de.js","../sources/locale/locale_el.js","../sources/locale/locale_en.js","../sources/locale/locale_es.js","../sources/locale/locale_fi.js","../sources/locale/locale_fr.js","../sources/locale/locale_he.js","../sources/locale/locale_hu.js","../sources/locale/locale_id.js","../sources/locale/locale_it.js","../sources/locale/locale_jp.js","../sources/locale/locale_manager.js","../sources/locale/locale_nb.js","../sources/locale/locale_nl.js","../sources/locale/locale_no.js","../sources/locale/locale_pl.js","../sources/locale/locale_pt.js","../sources/locale/locale_ro.js","../sources/locale/locale_ru.js","../sources/locale/locale_si.js","../sources/locale/locale_sk.js","../sources/locale/locale_sv.js","../sources/locale/locale_tr.js","../sources/locale/locale_ua.js","../sources/core/datepicker.js","../sources/scheduler_factory_method.js","../sources/core/common_errors.js","../sources/core/scheduler.js","../sources/core/wai_aria.js","../sources/core/common/assert.js","../sources/core/jquery.js","../sources/core/destructor.js","../sources/core/utils/ajax.js","../sources/core/config.js","../sources/core/event.js","../sources/core/event_highlight.js","../sources/core/lightbox.js","../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../sources/core/delay_render.js","../sources/core/connector.js","../sources/locale/index.js","../sources/ext/extension_manager.js","../sources/dhtmlx_hook.js","../sources/ext/restricted_extensions/not_implemented_extension.js","../sources/ext/keyboard_navigation/modals.js","../sources/ext/keyboard_navigation/key_nav_legacy.js","../sources/ext/keyboard_navigation/scheduler_handlers.js","../sources/ext/tooltip/tooltip.ts","../sources/ext/tooltip/tooltipManager.ts","../sources/ext/extensions_gpl.js","../sources/ext/active_links.js","../sources/ext/agenda_legacy_view.js","../sources/ext/agenda.js","../sources/ext/all_timed.js","../sources/ext/collision.js","../sources/ext/container_autoresize.js","../sources/ext/cookie.js","../sources/ext/restricted_extensions/daytimeline.js","../sources/ext/restricted_extensions/drag_between.js","../sources/ext/editors.js","../sources/ext/expand.js","../sources/ext/export_api/index.js","../sources/ext/restricted_extensions/grid_view.js","../sources/ext/html_templates.js","../sources/ext/key_nav.js","../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../sources/ext/keyboard_navigation/common/eventhandler.js","../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../sources/ext/keyboard_navigation/marker.js","../sources/ext/keyboard_navigation/elements/scheduler_node.js","../sources/ext/keyboard_navigation/elements/nav_node.js","../sources/ext/keyboard_navigation/elements/header_cell.js","../sources/ext/keyboard_navigation/elements/event.js","../sources/ext/keyboard_navigation/elements/time_slot.js","../sources/ext/keyboard_navigation/elements/minical_button.js","../sources/ext/keyboard_navigation/elements/minical_cell.js","../sources/ext/keyboard_navigation/elements/data_area.js","../sources/ext/keyboard_navigation/core.js","../sources/ext/keyboard_navigation/minical_handlers.js","../sources/ext/layer.js","../sources/ext/limit.js","../sources/ext/map_view.js","../sources/ext/minical.js","../sources/ext/monthheight.js","../sources/ext/restricted_extensions/multisection.js","../sources/ext/multiselect.js","../sources/ext/multisource.js","../sources/ext/mvc.js","../sources/ext/outerdrag.js","../sources/ext/pdf.js","../sources/ext/quick_info.js","../sources/ext/readonly.js","../sources/ext/recurring.js","../sources/ext/serialize.js","../sources/ext/restricted_extensions/timeline.js","../sources/ext/tooltip/index.ts","../sources/ext/restricted_extensions/treetimeline.js","../sources/ext/restricted_extensions/units.js","../sources/ext/url.js","../sources/ext/restricted_extensions/week_agenda.js","../sources/ext/wp.js","../sources/ext/year_view.js","../sources/dhtmlxscheduler.gpl.js","../sources/scheduler_factory.js"],"sourcesContent":["\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\telement.addEventListener(\"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisIE6: isWindowAwailable && (!XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0),\r\n\tisIE7: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0),\r\n\tisIE8: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\t\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nvar canUseCsp = false;\r\n(function() {\r\n\ttry {\r\n\t\tnew Function(\"canUseCsp = false;\");\r\n\t} catch(e) {\r\n\t\tcanUseCsp = true;\r\n\t}\r\n})();\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tresult = canUseCsp;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\t_bind_host_object : function(method){\r\n\t\tif(method.bind){\r\n\t\t\treturn method.bind(scheduler);\r\n\t\t}else{\r\n\t\t\treturn function(){ return method.apply(scheduler, arguments); };\r\n\t\t}\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn scheduler.date._bind_host_object(func);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t//return scheduler.date._bind_host_object(func);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\telement.addEventListener(name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"<div>\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"</div>\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._is_new_skin = function(){\r\n\treturn scheduler._theme_info.cssVarTheme;\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\"<div class='dhx_cal_scale_placeholder'>\" +\r\n\t\t\t\"</div>\"+\r\n\t\t\"<div>\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"<div class='dhx_cal_container'>\" +\r\n\t\t\t\t\"<div class='dhx_cal_data'>\" +\r\n\t\t\t\t\t\"<div class='dhx_cal_event'><div class='dhx_body'></div>\"+\r\n\t\t\t\t\"</div>\"+\r\n\t\t\t\"<div>\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nwindow.addEventListener('DOMContentLoaded', refreshAfterLoad);\r\nwindow.addEventListener('load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"<span class='dhx_scale_h'>\"+ date.getHours() +\"</span>\"+\r\n\t\t\"<span class='dhx_scale_m'>&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 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 eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\n\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"<div id='scheduler_here' class='dhx_cal_container' style='width:100%; height:600px;'> \\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nvar layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tvar element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tvar element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tvar views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tvar date = [\r\n\t\t\"date\"\r\n\t];\r\n\tvar nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(var i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(var i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(var i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tvar optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\tvar h = this._y = this._obj.clientHeight-this.xy.margin_top;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\tvar scale_s=this._table_view?-1:this.xy.scale_width;\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\tif(!scheduler._is_new_skin()){\r\n\t\tthis.set_xy(this._els[\"dhx_cal_navline\"][0],w,this.xy.nav_height,0,0);\r\n\r\n\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0],w-scale_x + 1,this.xy.scale_height,scale_s,this.xy.nav_height+1);\r\n\t\t//to support alter-skin, we need a way to alter height directly from css\r\n\t\tvar actual_height = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\tif (actual_height > 0) this.xy.nav_height = actual_height;\r\n\r\n\t\tvar data_y=this.xy.scale_height+this.xy.nav_height;\r\n\t\tthis.set_xy(this._els[\"dhx_cal_data\"][0],w,h-(data_y+2),0,data_y+2);\r\n\t} else {\r\n\t\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\t\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\t\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\t\theader.style.left = ``;\r\n\t\theader.style.right = ``;\r\n\t\tif(!this._table_view){\r\n\t\t\tif(this.config.rtl){\r\n\t\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t\t}else{\r\n\t\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(!this.config.rtl){\r\n\t\t\t\theader.style.left = `-1px`;\r\n\t\t\t} else {\r\n\t\t\t\theader.style.right = `-1px`;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tvar els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++){\r\n\t\tvar class_name= scheduler._getClassName(els[i]);\r\n\t\tvar attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tvar label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nvar domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (var a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (var i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(e) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\tvar ev = e;\r\n\t\tvar src = ev.target||ev.srcElement;\r\n\t\tvar returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(src), ev]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) return;\r\n\tvar t=this._select_id;\r\n\tthis._select_id = null;\r\n\tif (t && this.getEvent(t)) this.updateEvent(t);\r\n\tthis.callEvent(\"onEventUnselected\", [t]);\r\n};\r\nscheduler.getState=function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n};\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar trg = e.target;\r\n\t\tvar id = scheduler._locate_event(trg);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = trg.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tvar mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tvar def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tvar name = this.getAttribute(\"data-tab\");\r\n\t\tvar deprecated_name = this.getAttribute(\"name\");\r\n\t\tvar mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tvar c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tvar opts = { ...config, text: message };\r\n\tif (title)\r\n\t\topts.title = title;\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result)\r\n\t\t\t\tcallback();\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tvar base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\tvar start_date = new Date(start);\r\n\tif (!end){\r\n\t\tvar start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+d;\r\n\t}\r\n\tvar end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+d);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tvar eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src||(e.target||e.srcElement);\r\n\tif (this.config.readonly) return;\r\n\tvar name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\":\r\n\t\t\tvar id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault:\r\n\t\t\tvar t = this[\"dblclick_\"+name];\r\n\t\t\tif (t) {\r\n\t\t\t\tt.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tvar column = 0;\r\n\tif (this._cols){\r\n\t\tvar width = 0;\r\n\t\tvar i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tvar column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tvar pos;\r\n\tvar b=document.body;\r\n\tvar d = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (b.scrollLeft||d.scrollLeft||0) - b.clientLeft,\r\n\t\ty:ev.clientY + (b.scrollTop||d.scrollTop||0) - b.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\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 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}","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '<div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div><div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div></div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div>';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\t\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 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\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\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '<div class=\"dhx_cal_navline\">' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_prev_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_next_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_today_button\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_date\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"day\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"week\"></div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_tab\" data-tab=\"month\"></div>' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_header\">' +\r\n\t\t\t\t\t'</div>' +\r\n\t\t\t\t\t'<div class=\"dhx_cal_data\">' +\r\n\t\t\t\t\t'</div>';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '<div class=\"dhx_cal_tab\" name=\"day_tab\" data-tab=\"day\" style=\"right:204px;\"></div><div class=\"dhx_cal_tab\" name=\"week_tab\" data-tab=\"week\" style=\"right:140px;\"></div><div class=\"dhx_cal_tab\" name=\"month_tab\" data-tab=\"month\" style=\"right:76px;\"></div>';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '<div id=\"' + obj.id + '\" class=\"dhx_cal_container\" style=\"width:100%; height:100%;\"><div class=\"dhx_cal_navline\"><div class=\"dhx_cal_prev_button\"></div><div class=\"dhx_cal_next_button\"></div><div class=\"dhx_cal_today_button\"></div><div class=\"dhx_cal_date\"></div>' + tabs + '</div><div class=\"dhx_cal_header\"></div><div class=\"dhx_cal_data\"></div></div>';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.<br>\r\n\t\tYou may need a <a href=\"https://docs.dhtmlx.com/scheduler/editions_comparison.html\" target=\"_blank\">Professional version of the component</a>.<br>\r\n\t\tContact us at <a href=\"https://dhtmlx.com/docs/contact.shtml\" target=\"_blank\">https://dhtmlx.com/docs/contact.shtml</a> if you have any questions.`);\r\n\t}\r\n};","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\r\n\t\tvar dataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_data\"));\r\n\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"<a data-link-date='\" + d_s(date) + \"' href='#'>\" + week_x(date) + \"</a>\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" &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}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"<div class='\"+sns.type+\"' ></div>\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `<div class='dhx_cal_ltext dhx_cal_radio ${sns.vertical ? \"dhx_cal_radio_vertical\": \"\"}' style='max-height:${sns.height}px;'>`;\r\n\t\tfor (var i=0; i<sns.options.length; i++) {\r\n\t\t\tvar id = scheduler.uid();\r\n\t\t\tres += \"<label class='dhx_cal_radio_item' for='\"+id+\"'><input id='\"+id+\"' type='radio' name='\"+sns.name+\"' value='\"+sns.options[i].key+\"'><span>\"+\" \"+sns.options[i].label+\"</span></label>\";\r\n\t\t}\r\n\t\tres += \"</div>\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i<radiobuttons.length; i++) {\r\n\t\t\tif(radiobuttons[i].checked) {\r\n\t\t\t\treturn radiobuttons[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['checkbox']={\r\n\trender:function(sns) {\r\n\t\tif (scheduler.config.wide_form)\r\n\t\t\treturn '<div class=\"dhx_cal_wide_checkbox\"></div>';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"<input id='\"+id+\"' type='checkbox' value='true' name='\"+config.name+\"'\"+((isChecked)?\"checked='true'\":'')+\"'>\";\r\n\t\tvar label_html = \"<label for='\"+id+\"'>\"+(scheduler.locale.labels[\"section_\"+config.name]||config.name)+\"</label>\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t<g>\r\n\t<line x1=\"0.5\" y1=\"5\" x2=\"0.5\" y2=\"3.0598e-08\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"0.5\" x2=\"5\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"0.5\" y1=\"11\" x2=\"0.5\" y2=\"16\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line y1=\"15.5\" x2=\"5\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"0.5\" x2=\"16\" y2=\"0.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"2.18557e-08\" x2=\"15.5\" y2=\"5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"11\" y1=\"15.5\" x2=\"16\" y2=\"15.5\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t<line x1=\"15.5\" y1=\"16\" x2=\"15.5\" y2=\"11\" stroke=\"var(--dhx-scheduler-base-colors-icons)\"/>\r\n\t</g>\r\n\t</svg>\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"<form method='POST' target='_blank'><input type='text' name='data'><input type='hidden' name='type' value=''></form>\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsetInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\r\n\t\t})();\r\n\t}\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\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tscheduler.config['lightbox_'+scheduler.layers[i].name] = { };\r\n scheduler.config['lightbox_'+scheduler.layers[i].name].sections = _cloneObj(scheduler.config.lightbox.sections);\r\n\t\t\tscheduler._layers_zindex[scheduler.layers[i].name] = scheduler.config.initial_layer_zindex||5 + i*3;\r\n\t\t\tif(scheduler.layers[i].url) {\r\n\t\t\t\tvar dp = scheduler.createDataProcessor({\r\n\t\t\t\t\turl: scheduler.layers[i].url\r\n\t\t\t\t});\r\n\t\t\t\tdp.layer = scheduler.layers[i].name;\r\n\t\t\t\tscheduler._dataprocessors.push(dp);\r\n\t\t\t\tscheduler._dataprocessors[i].init(scheduler);\r\n\t\t\t}\r\n\t\t\tif(scheduler.layers[i].isDefault)\r\n\t\t\t\tscheduler.defaultLayer = scheduler.layers[i].name;\r\n\t\t}\r\n\t})();\r\n\r\n\r\n\tscheduler.showLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, true);\r\n\t};\r\n\r\n\tscheduler.hideLayer = function(tlayer) {\r\n\t\tthis.toggleLayer(tlayer, false);\r\n\t};\r\n\r\n\tscheduler.toggleLayer = function(tlayer, visible) { // visible is optional\r\n\t\tvar layer = this.getLayer(tlayer);\r\n\r\n\t\tif(typeof visible != 'undefined')\r\n\t\t\tlayer.visible = !!visible;\r\n\t\telse\r\n\t\t\tlayer.visible = !layer.visible;\r\n\r\n\t\tthis.setCurrentView(this._date, this._mode);\r\n\t};\r\n\r\n\tscheduler.getLayer = function(tlayer) { // either string with layer name or event with layer property\r\n\t\tvar layer,\r\n\t\t\tlayer_name;\r\n\t\tif(typeof tlayer == 'string')\r\n\t\t\tlayer_name = tlayer;\r\n\t\tif(typeof tlayer == 'object')\r\n\t\t\tlayer_name = tlayer.layer;\r\n\t\tfor (var i=0; i<scheduler.layers.length; i++) {\r\n\t\t\tif(scheduler.layers[i].name == layer_name)\r\n\t\t\t\tlayer = scheduler.layers[i];\r\n\t\t}\r\n\t\treturn layer;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function (event_id){\r\n\t\tvar ev = this.getEvent(event_id);\r\n this.config.lightbox.sections = this.config['lightbox_'+ev.layer].sections;\r\n scheduler.resetLightbox();\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\tvar ev = scheduler.getEvent(event_id);\r\n return !scheduler.getLayer(ev.layer).noMenu;\r\n\t});\r\n\r\n\tscheduler.attachEvent('onEventCollision', function(ev, evs) {\r\n\t\tvar layer = this.getLayer(ev);\r\n\t\tif(!layer.checkCollision)\r\n\t\t\treturn false;\r\n\t\tvar count = 0;\r\n\t\tfor(var i = 0; i<evs.length; i++) {\r\n\t\t\tif(evs[i].layer == layer.name && evs[i].id != ev.id)\r\n\t\t\t\tcount++;\r\n\t\t}\r\n\t\treturn (count >= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('<div class=') == -1)\r\n\t\t\tcontentA = (scheduler.templates['event_header_'+ev.layer])?scheduler.templates['event_header_'+ev.layer](ev.start_date,ev.end_date,ev):contentA;\r\n\t\tif(contentB.indexOf('<div class=') == -1)\r\n\t\tcontentB = (scheduler.templates['event_text_'+ev.layer])?scheduler.templates['event_text_'+ev.layer](ev.start_date,ev.end_date,ev):contentB;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = \"dhx_cal_event\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar borderBox = scheduler._border_box_events();\r\n\r\n\t\tvar borderBoxWidth = w - 2;\r\n\t\tvar boxWidth = borderBox ? borderBoxWidth : (w-4),\r\n\t\theaderWidth = borderBox ? borderBoxWidth : (w-6),\r\n\t\tbodyWidth = borderBox ? borderBoxWidth : (w-14),\r\n\t\tfooterWidth = borderBox ? (borderBoxWidth - 2) : (w-8);\r\n\r\n\t\tvar bodyHeight = borderBox ? (h - this.xy.event_header_height) : (h-30 + 1);\r\n\r\n\t\tvar html='<div event_id=\"'+id+'\" '+scheduler.config.event_attribute+'=\"'+id+'\" class=\"'+cs+'\" style=\"position:absolute; top:'+y+'px; left:'+x+'px; width:'+boxWidth+'px; height:'+h+'px;'+(style||\"\")+'\">';\r\n\t\thtml+='<div class=\"dhx_header\" style=\" width:'+headerWidth+'px;\" >&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}","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}","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;"],"names":["global$1","window","global","extend","scheduler","div","className","element","document","createElement","split","forEach","cssClass","classList","add","itemTypes","rows_container","row","view","config","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","date","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","event","isCalendarVisible","destroyCalendar","renderCalendar","position","this","getState","navigation","handler","calendar","setCurrentView","html_element","renderElement","renderer","rows","cols","css","width","value","style","height","addEventListener","html","innerHTML","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","Array","isArray","i","length","next","appendChild","_init_nav_bar","navBar","$container","querySelector","_update_nav_bar","previousHeight","container","heightChanged","newHeight","xy","nav_height","unset_actions","_els","get_elements","set_actions","display","isAttachedNode","root","body","parentNode","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","clearTimeout","setTimeout","$destroyed","a","b","newSize","triggerSchedulerResize","$root","callEvent","updateView","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","removeChild","EventHost","_silent_mode","listeners","createEventStorage","obj","handlers","index","eventStorage","combinedResult","handlerResult","apply","arguments","addEvent","settings","e","handlerId","id","once","originalHandler","removeEvent","clear","makeEventable","eventHost","attachEvent","eventName","toLowerCase","thisObject","bind","attachAll","callback","name","eventArguments","handlerName","concat","checkEvent","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","push","detach","splice","detachAll","staticArray","slice","createEventScope","_eventRemoveAll","_createDomEventScope","_trim","str","String","prototype","trim","replace","_isDate","getFullYear","getMonth","getDate","_isObject","uidSeed","Date","now","isDate","utils","uid","mixin","target","source","force","f","undefined","copy","object","result","pop","Function","toString","call","constructor","Number","Boolean","varType","Object","hasOwnProperty","defined","delay","timeout","timer","$cancelTimeout","$pending","args","$execute","getClassName","node","baseVal","indexOf","locateCss","classname","strict","trg","srcElement","ind","left","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","area","nodeName","loLowerCase","isEnabled","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","top","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","Math","round","closest","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","parent","contains","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","ev","d","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","data","key","serialized","encodeURIComponent","JSON","stringify","generateStringToDate","format","utc","splt","mask","match","code","csp_str_to_date","set","temp","locale","month_short_hash","month_full_hash","UTC","canUseCsp","useCsp","csp","init","s","month_short","t","month_full","_bind_host_object","method","date_part","old","setHours","setMinutes","setSeconds","setMilliseconds","getHours","setTime","getTime","time_part","valueOf","getTimezoneOffset","week_start","shift","getDay","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","mode","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","func","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","parseYMD","parseMDY","parseDMY","dateString","parse_exact_format","datestr","nday","first_thursday","year_number","ordinal_date","floor","convert_to_utc","getSerializator","res","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_date","_load_mode","lf","templates","load_format","_min_date","cache_line","_max_date","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","firstChild","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","k","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","text","evs","_init_event","json","events","dhx_security","collections","collections_loaded","collection","option","option_key","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","parse_date","dh","dm","utcMark","dy","dn","dd","server_utc","error","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","render_view_data","_after_call","_tagvalue","start_date","_init_date","end_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","type","load","setLoadMode","array","childNodes","show_loading","_x","_y","_obj","_init_touch_events","touch","MSStream","platform","maxTouchPoints","scroll_width","_mobile","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","names","accessor","ignore","tracker","drag_mode","scroll_mode","action_mode","dblclicktime","attachTouchEvent","_is_lightbox_open","passive","drag_cancel","_hide_global_tip","_on_mouse_up","_temp_touch_block","_drag_id","_drag_mode","_drag_pos","_pointerDragId","acc","dnd","timeline","matrix","_mode","original_render","drag_id","getEvent","property","y_property","getEvents","_sorder","_count","render_data","_on_mouse_move","preventDefault","cancelBubble","_update_global_tip","abs","fake_event","pointerId","_click","dhx_cal_data","_on_dbl_click","_block_next_stop","touch_drag","actTask","_locate_event","fakeTask","sourceTask","_ignore_next_click","_getClassName","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","updateEvent","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","_timed","event_header","day_date","labels","drag_to_create","drag_to_move","calculatedMaterial","cachedBorderBoxValue","checkIfBorderBoxStyling","_is_material_skin","probe","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","flatSkinHourScale","min","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","hour_size_px","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","checkIfMaterialSkin","_build_skin_info","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","themeNameFromFile","_theme_info","theme","cssVarTheme","values","themeVariables","_is_new_skin","_configure","col","setSkin","_skin_init","render","hour_scale","hour_date","defaultButtonsLeft","buttons_left","$initial","defaultButtonsRight","buttons_right","tmp","event_header_height","week_agenda_scale_height","map_icon_width","_lightbox_controls","defaults","scale_height","minic","minicalendar","padding","_old_month_day","month_day","old_month_day","_currentDate","dhx_cal_today_button","tab","header","tabs","specialTabs","map","tabName","find","filter","firstTab","reverse","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_new_event","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","deleteEvent","_add_rec_marker","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","updateMode","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","message","boxAttribute","_dhx_msg_cfg","usercall","modalBox","hide","modal_key","which","keyCode","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","_waiAria","messageButtonAttrString","getFirstDefined","_createBox","ok","cancel","contentId","messageModalAttr","inner","title","content","message_ok","message_cancel","buttons","btn","getElementById","hidden","focus","alertPopup","confirmPopup","boxPopup","box_params","params","expire","focusable","messageInfoAttr","timers","pull","seed","hideAll","popups","alert","confirm","modalbox","setTransactionMode","total","headers","payload","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","setUpdateMode","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","sendData","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","ids","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","Error","catch","valid","_forEachUpdatedRow","_getAllData","out","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","_is_virtual_event","_set_event_text_style","r","cssText","event_updated","rec_type","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","_dp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","setInterval","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","_prepareDataItem","item","processedItem","formatDate","dataItem","ar","day_tab","week_tab","month_tab","new_event","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","prev","year","month","day","hour","minute","be","agenda_tab","description","year_tab","week_agenda_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","month_for_recurring","day_for_recurring","ca","cn","cs","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","_toggleMode","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","max","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","_weeksBetween","currDate","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","commonViews","agenda","grid","unit","week_agenda","anythingElse","requiredExtensions","limit","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","addMarkedTimespan","exportToPNG","exportToPDF","common","nav_bar","_detachDomEvent","_init_once","scheduler_resize_listener","layout","hasSchedulerMarkup","console","wai_aria_application_role","views","_props","_grid","viewName","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","edit_save","edit_cancel","functor","scale_x","_table_view","scale_s","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","actual_height","data_y","prepareValue","prepared","els","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","start","differenceInDays","src","_select_id","_close_not_saved","unselect","min_date","max_date","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","getActionData","icon","def_step","dhx_cal_tab","deprecated_name","substring","c","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","addEventNow","end","base","event_duration","time_step","start_hour","first_hour","_drag_event","dblclick_create","details_on_dblclick","_get_column_index","x_pos","column","_cols","_ignores","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","_colsS","$domHelpers","dataArea","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","title_confirm_closing","positive_closing","_correct_shift","back","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","has_moved","_correct_drag_start_date","len","_start_correction","_end_correction","last_hour","_get_fictional_event_length","_correct_drag_end_date","duration","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","maxY","precisePos","minDate","preciseDate","cursor","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","getView","_allow_dnd","update_render","sx","update_view","drag_event_body","_lame_clone","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","isOneDayEvent","_lame_copy","_trigger_dyn_loading","_reset_ignores","_reset_scale","isViewExists","_set_aria_buttons_attrs","buttonGroups","group","headerButtonsAttributes","icon_form","oldClass","newClass","multidayScroll","dhx_multi_day","prev_scroll","preserve_scroll","_dy_shift","headerToggleState","_render_x_header","offset_top","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","count","count_n","_get_timeunit_start","_get_view_end","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","scales","cls","firstHalf","slotDate","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","_getNavDateElement","drag_resize","drag_move","_scales","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","offset","hiddenWidth","c2","cloneNode","cc","hourScaleAttr","scroll_hour","now_date","n","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","sections","lightbox","map_to","options","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","section","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","days","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","isActive","getHeaderCellAttr","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","agendaDetailsBtnString","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","buttonLabel","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","dom","assert","show_errors","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","$","counter","methods","Promise","clearAll","createConfig","async","serializeRequestParams","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xpathExp","docObj","selectNodes","first","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","isQt","readyState","filePath","open","toUpperCase","send","$ajax","default_date","month_date","load_date","week_date","date_format","api_date","day_column_padding","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_display","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","quick_info_detached","drag_highlight","icons_edit","icons_select","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","event_attribute","xml_date","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","clear_view","extra_data","silent","setEvent","hash","create_getter","create_setter","is_visible_events","clear_event","evFirstHour","evLastHour","lastHour","checkEndDate","get_visible_events","only_timed","filter_event","_is_main_area_event","hold","full","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","_get_event_bar_pos","widt","x2","_pre_render_events","containers","render_event_bar","max_evs","max_month_events","locate_holder","real","render_event","_get_first_visible_cell","cells","hb","h_old","_pre_render_events_table","_pre_render_events_line","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","weekCellIndex","locate_holder_day","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","zIndex","color","setProperty","tplClass","_editor","shiftKey","ariaAttr","icons","icons_str","currentIcon","textColor","highlightEventPosition","contentA","contentB","_","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","section_delimiter","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","size","getLightboxRoot","cspEnvironment","salesforceEnvironment","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","template","sns","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","cfg","dt","last","limit_time_select","p","selectBoxClass","range","start_year","end_year","year_range","g","tdate","_time_values","ariaAttrs","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","block","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","inputBlock","fallback","inputId","old_id","getRootView","hooks","didInsert","cmp","skins","jQuery","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","oldDate","oldMode","updateFlags","lazy_updateView","ars","createDataProcessor","tMode","batchUpdate","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","ext","activePlugins","plugins","extensionList","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","multisection","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","ctrlKey","metaKey","_buffer_event","_key_nav_copy_paste","getActiveNode","new_ev","scheduler_handlers","attachSchedulerHandlers","waitCall","keyDownHandler","focusHandler","keepScrollPosition","focusGlobalNode","enable","reFocusActiveNode","activeNode","isValid","MinicalButton","MinicalCell","mousedownHandler","dataAreaClick","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","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","clone","delayShow","utils.default","setContent","show","tooltip_timeout","tooltip_hide_timeout","gplExtensions","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","_agendaScrollTop","agenda_area","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","l","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","eventStart","renderDay","calendarEvent","dates","selectedId","all_timed_month","is_event_short","_safe_copy","proto","isPrototypeOf","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","checked_mode","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","year_y","cur_height","eventsContainer","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","cookie_param","old_load","drag_between","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","selected_id","addOption","disable","selectOption","setComboValue","all_options","single_option","getIndexByValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","o","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","getTimeline","orientation","dpi","zoom","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","info","_plain_export_copy","$text","_create_hidden_form","submit","_hidden_export_form","_get_export_size","footer","A5","A4","A3","A2","A1","A0","dataX","cSize","parseFloat","smartRendering","initialSizes","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","grid_view","html_templates","all","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","parts","createCommand","modifiers","alt","ctrl","meta","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","printableKey","fromCharCode","getHashFromEvent","getHash","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","EventHandler","_handlers","doAction","returnValue","bindAll","initKeys","nextItem","currentFocus","currentIndex","divs","renderMultiple","currentStart","currentEnd","_modes","_getMode","units","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","areas","round_position","blocks","_trace_x","_is_column_visible","start_pos","_timeline_getX","end_pos","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","inner_index","all_hours_height","hour_ms","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","eventNode","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","sectionId","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","globalNode","_getGrid","_getNode","enabled","newRow","newCol","blurNode","editor","defaultPrevented","schedulerNode","_timeout","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","cellIndex","td","renderMinical","cal","added","destroyMinical","_def_count","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_start","limit_end","limit_view","check_limits","mark_now","display_marked_timespans","overwrite_marked_timespans","_temp_limit_scope","dhx_time_block","default_timespan_type","get_resulting_options","zones","blockTime","unblockTime","deleteMarkedTimespan","om","od","nm","nd","isBlocked","date_end","resetDate","checkInMarkedTimespan","timespan_type","on_overlap","temp_start_date","temp_end_date","timespans","_marked_timespans","day_value","getZones","_get_zone_minutes","eventEnd","markerStart","markerEnd","blocker","checkLimitViolation","complete_res","allow","day_index","linker","_add_timespan_zones","_get_blocked_zones","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","resultZones","is_new_event","data_copy","native_object","_mark_now","_mark_now_timer","dhx_now_time","_remove_mark_now","_append_mark_now","zone_start","start_index","end_index","units_l","r_divs","t_day","t_div","_render_marked_timespan","_prepare_timespan_options","r_configs","temp_configs","t_days","cloned_config","invert_zones","invertZones","view_key","t_config","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","start_day","delta","t_date","_get_css_classes_by_config","css_classes","_get_block_by_config","date_to_display","min_day","sday","block_proto","_mark_timespans","_on_scale_add_marker","markTimespan","configuration","rebuild_els","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","unmarkTimespan","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","dayConfig","day_timespans","d_t","related_zones","types","typedConfig","_get_types_to_render","specific","types_to_render","_get_configs_to_render","_get_unit_index","day_ind","unitsPerDay","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","map_view","mapView","geocoder","points","markers","infoWindow","createMarker","google","maps","Marker","map_date_width","map_description_width","map_resolve_event_location","map_resolve_user_location","map_initial_position","LatLng","map_error_position","map_infowindow_max_width","map_type","MapTypeId","ROADMAP","map_zoom_after_resolve","marker_geo_success","marker_geo_fail","marker_date","marker_text","event_location","dblclick_dhx_map_area","map_time","map_text","map_start","add_map","map_date","_latLngUpdate","_isMapPositionSet","gmap","dhx_gmap","_setMapSize","mapOptions","map_initial_zoom","center","mapTypeId","Map","disableDefaultUI","disableDoubleClickZoom","addListener","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","lat","lng","formatted_address","infoWindowOptions","maxWidth","_points","_markers","_infowindow","InfoWindow","_infowindows_content","_initialization_count","Geocoder","geolocation","getCurrentPosition","_userLocation","coords","latitude","longitude","setCenter","setZoom","getCenter","setPosition","getZoom","fill_map_tab","_selected_event_id","ariaButtonAttr","elem_id","marginRight","marginLeft","marginTop","showAddress","temp_center","map_end","close","setMap","clear_map_tab","trigger","selectEvent","performClick","_displayEventOnMap","address","language","_updateEventLocation","old_event_id","new_event_id","_event_resolve_delay","ret","minical","minicalDomEvents","mark_events","_synced_minicalendars","_prev","is_refresh","_render_calendar","unmarkCalendar","cont","tpos","_get_def_cont","$dom","dateAttribute","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","mvc","update_timer","use_id","sanitize","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","last_event","dragger","dhtmlDragAndDropObject","stopDrag","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_end","xml_top","profile","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","to_pdf","objects","getPDFData","toPDF","toPDFRange","quick_info","show_quick_info","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","txt_replace","txts","txtt","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","originalForm","readonlyForm","_lightbox_r","getRecurringSection","getFirstSectionOfType","clearMilliseconds","old_add_event","occurrence_timestamp_in_utc","recurring_workdays","_get_node","_outer_html","outerHTML","rec","loc","repeat_date_of_end","_ds","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","_init_set_value","_end_date","str_date_format","repeat_date","date_str","register_els","inps","formatter","change_current_view","set_end_rule","_get_repeat_code","get_rcode","repeat","str_date","include_end_by","transpose_type","get_numeric_value","repeat_precise","_start","start_exists","transpose_day_week","set_rcode","_set_repeat_code","dispatchEvent","MouseEvent","elements","_rec_init_done","rf","blocked","_is_modified_occurence","_toggle_block","actual_dates","timeControl","getTimeSection","_start_date","_get_button","_get_form","backgroundPosition","_rec_markers","_rec_markers_pull","_pid_time","_get_rec_marker","ch","_get_rec_markers","_rec_temp","ev_id","_ignore_call","tev","_pid_changed","nid","nev","sub","isEventFound","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","old_update_event","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","getMilliseconds","non_render","maxCount","startHour","visibleCount","_fix_daylight_saving_date","ted","recurrings","sev","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","hideTooltip","s2d","d2s","select_event","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_month_head","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_x","year_top","ssd","yearBox","yearStart","datepicker","locateEvent","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"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"}