From aec3f44946f3be67fd35fe02eeb71d840bcf4fa1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Thu, 29 Sep 2016 08:49:39 +0000
Subject: [PATCH] dhtmlx_cheduler initial submission

http://dhtmlx.com/docs/products/dhtmlxScheduler/ integration for ERP5
---
 .../portal_skins/erp5_dhtmlx_scheduler.xml    |   26 +
 .../erp5_dhtmlx_scheduler/dhtmlxscheduler.xml |   26 +
 .../dhtmlxscheduler/dhtmlxscheduler.css.css   |    9 +
 .../dhtmlxscheduler/dhtmlxscheduler.css.xml   |   28 +
 .../dhtmlxscheduler/dhtmlxscheduler.js.js     |  318 +
 .../dhtmlxscheduler/dhtmlxscheduler.js.xml    |   28 +
 .../dhtmlxscheduler_classic.css.css           |    9 +
 .../dhtmlxscheduler_classic.css.xml           |   28 +
 .../dhtmlxscheduler_flat.css.css              |    9 +
 .../dhtmlxscheduler_flat.css.xml              |   28 +
 .../dhtmlxscheduler_glossy.css.css            |    9 +
 .../dhtmlxscheduler_glossy.css.xml            |   28 +
 .../dhtmlxscheduler/ext.xml                   |   26 +
 .../ext/dhtmlxscheduler_active_links.js.js    |   12 +
 .../ext/dhtmlxscheduler_active_links.js.xml   |   28 +
 .../ext/dhtmlxscheduler_agenda_view.js.js     |   17 +
 .../ext/dhtmlxscheduler_agenda_view.js.xml    |   28 +
 .../ext/dhtmlxscheduler_all_timed.js.js       |   18 +
 .../ext/dhtmlxscheduler_all_timed.js.xml      |   28 +
 .../ext/dhtmlxscheduler_collision.js.js       |   15 +
 .../ext/dhtmlxscheduler_collision.js.xml      |   28 +
 ...dhtmlxscheduler_container_autoresize.js.js |   20 +
 ...htmlxscheduler_container_autoresize.js.xml |   28 +
 .../ext/dhtmlxscheduler_cookie.js.js          |   13 +
 .../ext/dhtmlxscheduler_cookie.js.xml         |   28 +
 .../ext/dhtmlxscheduler_editors.js.js         |   18 +
 .../ext/dhtmlxscheduler_editors.js.xml        |   28 +
 .../ext/dhtmlxscheduler_expand.js.js          |   13 +
 .../ext/dhtmlxscheduler_expand.js.xml         |   28 +
 .../ext/dhtmlxscheduler_html_templates.js.js  |   10 +
 .../ext/dhtmlxscheduler_html_templates.js.xml |   28 +
 .../ext/dhtmlxscheduler_key_nav.js.js         |   15 +
 .../ext/dhtmlxscheduler_key_nav.js.xml        |   28 +
 .../ext/dhtmlxscheduler_layer.js.js           |   37 +
 .../ext/dhtmlxscheduler_layer.js.xml          |   28 +
 .../ext/dhtmlxscheduler_limit.js.js           |   50 +
 .../ext/dhtmlxscheduler_limit.js.xml          |   28 +
 .../ext/dhtmlxscheduler_map_view.js.js        |   40 +
 .../ext/dhtmlxscheduler_map_view.js.xml       |   28 +
 .../ext/dhtmlxscheduler_minical.js.js         |   37 +
 .../ext/dhtmlxscheduler_minical.js.xml        |   28 +
 .../ext/dhtmlxscheduler_monthheight.js.js     |   11 +
 .../ext/dhtmlxscheduler_monthheight.js.xml    |   28 +
 .../ext/dhtmlxscheduler_multiselect.js.js     |   13 +
 .../ext/dhtmlxscheduler_multiselect.js.xml    |   28 +
 .../ext/dhtmlxscheduler_multisource.js.js     |   10 +
 .../ext/dhtmlxscheduler_multisource.js.xml    |   28 +
 .../ext/dhtmlxscheduler_mvc.js.js             |   15 +
 .../ext/dhtmlxscheduler_mvc.js.xml            |   28 +
 .../ext/dhtmlxscheduler_offline.js.js         |   16 +
 .../ext/dhtmlxscheduler_offline.js.xml        |   28 +
 .../ext/dhtmlxscheduler_outerdrag.js.js       |   13 +
 .../ext/dhtmlxscheduler_outerdrag.js.xml      |   28 +
 .../ext/dhtmlxscheduler_pdf.js.js             |   32 +
 .../ext/dhtmlxscheduler_pdf.js.xml            |   28 +
 .../ext/dhtmlxscheduler_quick_info.js.js      |   21 +
 .../ext/dhtmlxscheduler_quick_info.js.xml     |   28 +
 .../ext/dhtmlxscheduler_readonly.js.js        |   16 +
 .../ext/dhtmlxscheduler_readonly.js.xml       |   28 +
 .../ext/dhtmlxscheduler_recurring.js.js       |   59 +
 .../ext/dhtmlxscheduler_recurring.js.xml      |   28 +
 .../ext/dhtmlxscheduler_serialize.js.js       |   15 +
 .../ext/dhtmlxscheduler_serialize.js.xml      |   28 +
 .../ext/dhtmlxscheduler_tooltip.js.js         |   21 +
 .../ext/dhtmlxscheduler_tooltip.js.xml        |   28 +
 .../ext/dhtmlxscheduler_url.js.js             |   12 +
 .../ext/dhtmlxscheduler_url.js.xml            |   28 +
 .../ext/dhtmlxscheduler_wp.js.js              |   10 +
 .../ext/dhtmlxscheduler_wp.js.xml             |   28 +
 .../ext/dhtmlxscheduler_year_view.js.js       |   31 +
 .../ext/dhtmlxscheduler_year_view.js.xml      |   28 +
 .../dhtmlxscheduler/imgs.xml                  |   26 +
 .../dhtmlxscheduler/imgs/but_repeat.gif.gif   |  Bin 0 -> 1149 bytes
 .../dhtmlxscheduler/imgs/but_repeat.gif.xml   |   36 +
 .../dhtmlxscheduler/imgs/buttons.png.png      |  Bin 0 -> 281 bytes
 .../dhtmlxscheduler/imgs/buttons.png.xml      |   36 +
 .../dhtmlxscheduler/imgs/calendar.gif.gif     |  Bin 0 -> 622 bytes
 .../dhtmlxscheduler/imgs/calendar.gif.xml     |   36 +
 .../dhtmlxscheduler/imgs/clock_big.gif.gif    |  Bin 0 -> 1321 bytes
 .../dhtmlxscheduler/imgs/clock_big.gif.xml    |   36 +
 .../dhtmlxscheduler/imgs/clock_small.gif.gif  |  Bin 0 -> 388 bytes
 .../dhtmlxscheduler/imgs/clock_small.gif.xml  |   36 +
 .../imgs/collapse_expand_icon.gif.gif         |  Bin 0 -> 452 bytes
 .../imgs/collapse_expand_icon.gif.xml         |   36 +
 .../dhtmlxscheduler/imgs/controls.gif.gif     |  Bin 0 -> 2496 bytes
 .../dhtmlxscheduler/imgs/controls.gif.xml     |   36 +
 .../dhtmlxscheduler/imgs/databg.png.png       |  Bin 0 -> 152 bytes
 .../dhtmlxscheduler/imgs/databg.png.xml       |   36 +
 .../dhtmlxscheduler/imgs/databg_now.png.png   |  Bin 0 -> 152 bytes
 .../dhtmlxscheduler/imgs/databg_now.png.xml   |   36 +
 .../dhtmlxscheduler/imgs/export_ical.png.png  |  Bin 0 -> 1323 bytes
 .../dhtmlxscheduler/imgs/export_ical.png.xml  |   36 +
 .../dhtmlxscheduler/imgs/export_pdf.png.png   |  Bin 0 -> 1395 bytes
 .../dhtmlxscheduler/imgs/export_pdf.png.xml   |   36 +
 .../dhtmlxscheduler/imgs/icon.png.png         |  Bin 0 -> 230 bytes
 .../dhtmlxscheduler/imgs/icon.png.xml         |   36 +
 .../dhtmlxscheduler/imgs/images.png.png       |  Bin 0 -> 1581 bytes
 .../dhtmlxscheduler/imgs/images.png.xml       |   36 +
 .../dhtmlxscheduler/imgs/loading.gif.gif      |  Bin 0 -> 3951 bytes
 .../dhtmlxscheduler/imgs/loading.gif.xml      |   36 +
 .../dhtmlxscheduler/imgs/resize_dots.png.png  |  Bin 0 -> 111 bytes
 .../dhtmlxscheduler/imgs/resize_dots.png.xml  |   36 +
 .../dhtmlxscheduler/imgs_dhx_terrace.xml      |   26 +
 .../imgs_dhx_terrace/arrow_left.png.png       |  Bin 0 -> 198 bytes
 .../imgs_dhx_terrace/arrow_left.png.xml       |   36 +
 .../imgs_dhx_terrace/arrow_right.png.png      |  Bin 0 -> 189 bytes
 .../imgs_dhx_terrace/arrow_right.png.xml      |   36 +
 .../imgs_dhx_terrace/but_repeat.gif.gif       |  Bin 0 -> 1472 bytes
 .../imgs_dhx_terrace/but_repeat.gif.xml       |   36 +
 .../imgs_dhx_terrace/calendar.gif.gif         |  Bin 0 -> 1018 bytes
 .../imgs_dhx_terrace/calendar.gif.xml         |   36 +
 .../imgs_dhx_terrace/clock_big.gif.gif        |  Bin 0 -> 1958 bytes
 .../imgs_dhx_terrace/clock_big.gif.xml        |   36 +
 .../imgs_dhx_terrace/clock_small.gif.gif      |  Bin 0 -> 588 bytes
 .../imgs_dhx_terrace/clock_small.gif.xml      |   36 +
 .../imgs_dhx_terrace/close_icon.png.png       |  Bin 0 -> 162 bytes
 .../imgs_dhx_terrace/close_icon.png.xml       |   36 +
 .../collapse_expand_icon.gif.gif              |  Bin 0 -> 1192 bytes
 .../collapse_expand_icon.gif.xml              |   36 +
 .../imgs_dhx_terrace/controls.png.png         |  Bin 0 -> 761 bytes
 .../imgs_dhx_terrace/controls.png.xml         |   36 +
 .../imgs_dhx_terrace/databg.png.png           |  Bin 0 -> 103 bytes
 .../imgs_dhx_terrace/databg.png.xml           |   36 +
 .../imgs_dhx_terrace/databg_now.png.png       |  Bin 0 -> 103 bytes
 .../imgs_dhx_terrace/databg_now.png.xml       |   36 +
 .../imgs_dhx_terrace/export_ical.png.png      |  Bin 0 -> 1793 bytes
 .../imgs_dhx_terrace/export_ical.png.xml      |   36 +
 .../imgs_dhx_terrace/export_pdf.png.png       |  Bin 0 -> 1667 bytes
 .../imgs_dhx_terrace/export_pdf.png.xml       |   36 +
 .../imgs_dhx_terrace/resize_dots.png.png      |  Bin 0 -> 110 bytes
 .../imgs_dhx_terrace/resize_dots.png.xml      |   36 +
 .../imgs_dhx_terrace/resizing.png.png         |  Bin 0 -> 99 bytes
 .../imgs_dhx_terrace/resizing.png.xml         |   36 +
 .../dhtmlxscheduler/imgs_flat.xml             |   26 +
 .../imgs_flat/agenda_bg.gif.gif               |  Bin 0 -> 57 bytes
 .../imgs_flat/agenda_bg.gif.xml               |   36 +
 .../imgs_flat/arrow_left.png.png              |  Bin 0 -> 1119 bytes
 .../imgs_flat/arrow_left.png.xml              |   36 +
 .../imgs_flat/arrow_right.png.png             |  Bin 0 -> 1114 bytes
 .../imgs_flat/arrow_right.png.xml             |   36 +
 .../imgs_flat/but_repeat.gif.gif              |  Bin 0 -> 1472 bytes
 .../imgs_flat/but_repeat.gif.xml              |   36 +
 .../imgs_flat/calendar.gif.gif                |  Bin 0 -> 1018 bytes
 .../imgs_flat/calendar.gif.xml                |   36 +
 .../dhtmlxscheduler/imgs_flat/clock.png.png   |  Bin 0 -> 1290 bytes
 .../dhtmlxscheduler/imgs_flat/clock.png.xml   |   36 +
 .../imgs_flat/clock_big.gif.gif               |  Bin 0 -> 1958 bytes
 .../imgs_flat/clock_big.gif.xml               |   36 +
 .../imgs_flat/clock_small.gif.gif             |  Bin 0 -> 588 bytes
 .../imgs_flat/clock_small.gif.xml             |   36 +
 .../imgs_flat/close_icon.png.png              |  Bin 0 -> 162 bytes
 .../imgs_flat/close_icon.png.xml              |   36 +
 .../imgs_flat/collapse_expand_icon.gif.gif    |  Bin 0 -> 1192 bytes
 .../imgs_flat/collapse_expand_icon.gif.xml    |   36 +
 .../imgs_flat/controls.png.png                |  Bin 0 -> 761 bytes
 .../imgs_flat/controls.png.xml                |   36 +
 .../dhtmlxscheduler/imgs_flat/databg.png.png  |  Bin 0 -> 103 bytes
 .../dhtmlxscheduler/imgs_flat/databg.png.xml  |   36 +
 .../imgs_flat/databg_now.png.png              |  Bin 0 -> 103 bytes
 .../imgs_flat/databg_now.png.xml              |   36 +
 .../imgs_flat/export_ical.png.png             |  Bin 0 -> 1793 bytes
 .../imgs_flat/export_ical.png.xml             |   36 +
 .../imgs_flat/export_pdf.png.png              |  Bin 0 -> 1667 bytes
 .../imgs_flat/export_pdf.png.xml              |   36 +
 .../imgs_flat/resize_dots.png.png             |  Bin 0 -> 110 bytes
 .../imgs_flat/resize_dots.png.xml             |   36 +
 .../imgs_flat/resizing.png.png                |  Bin 0 -> 935 bytes
 .../imgs_flat/resizing.png.xml                |   36 +
 .../dhtmlxscheduler/imgs_glossy.xml           |   26 +
 .../imgs_glossy/blue_tab.png.png              |  Bin 0 -> 247 bytes
 .../imgs_glossy/blue_tab.png.xml              |   36 +
 .../imgs_glossy/blue_tab_wide.png.png         |  Bin 0 -> 252 bytes
 .../imgs_glossy/blue_tab_wide.png.xml         |   36 +
 .../imgs_glossy/but_repeat.gif.gif            |  Bin 0 -> 1149 bytes
 .../imgs_glossy/but_repeat.gif.xml            |   36 +
 .../imgs_glossy/buttons.gif.gif               |  Bin 0 -> 616 bytes
 .../imgs_glossy/buttons.gif.xml               |   36 +
 .../imgs_glossy/calendar.gif.gif              |  Bin 0 -> 622 bytes
 .../imgs_glossy/calendar.gif.xml              |   36 +
 .../imgs_glossy/clock_big.png.png             |  Bin 0 -> 1580 bytes
 .../imgs_glossy/clock_big.png.xml             |   36 +
 .../imgs_glossy/clock_small.png.png           |  Bin 0 -> 3809 bytes
 .../imgs_glossy/clock_small.png.xml           |   36 +
 .../imgs_glossy/collapse_expand_icon.gif.gif  |  Bin 0 -> 452 bytes
 .../imgs_glossy/collapse_expand_icon.gif.xml  |   36 +
 .../imgs_glossy/controlls5.png.png            |  Bin 0 -> 2835 bytes
 .../imgs_glossy/controlls5.png.xml            |   36 +
 .../imgs_glossy/databg.png.png                |  Bin 0 -> 89 bytes
 .../imgs_glossy/databg.png.xml                |   36 +
 .../imgs_glossy/databg_now.png.png            |  Bin 0 -> 89 bytes
 .../imgs_glossy/databg_now.png.xml            |   36 +
 .../imgs_glossy/event-bg.png.png              |  Bin 0 -> 148 bytes
 .../imgs_glossy/event-bg.png.xml              |   36 +
 .../imgs_glossy/export_ical.png.png           |  Bin 0 -> 1323 bytes
 .../imgs_glossy/export_ical.png.xml           |   36 +
 .../imgs_glossy/export_pdf.png.png            |  Bin 0 -> 1395 bytes
 .../imgs_glossy/export_pdf.png.xml            |   36 +
 .../dhtmlxscheduler/imgs_glossy/icon.png.png  |  Bin 0 -> 230 bytes
 .../dhtmlxscheduler/imgs_glossy/icon.png.xml  |   36 +
 .../imgs_glossy/left-separator.png.png        |  Bin 0 -> 230 bytes
 .../imgs_glossy/left-separator.png.xml        |   36 +
 .../imgs_glossy/left-time-bg.png.png          |  Bin 0 -> 124 bytes
 .../imgs_glossy/left-time-bg.png.xml          |   36 +
 .../imgs_glossy/lightbox.png.png              |  Bin 0 -> 207 bytes
 .../imgs_glossy/lightbox.png.xml              |   36 +
 .../imgs_glossy/loading.gif.gif               |  Bin 0 -> 3951 bytes
 .../imgs_glossy/loading.gif.xml               |   36 +
 .../dhtmlxscheduler/imgs_glossy/move.png.png  |  Bin 0 -> 145 bytes
 .../dhtmlxscheduler/imgs_glossy/move.png.xml  |   36 +
 .../imgs_glossy/multi-days-bg.png.png         |  Bin 0 -> 350 bytes
 .../imgs_glossy/multi-days-bg.png.xml         |   36 +
 .../imgs_glossy/second-top-days-bg.png.png    |  Bin 0 -> 138 bytes
 .../imgs_glossy/second-top-days-bg.png.xml    |   36 +
 .../imgs_glossy/top-days-bg.png.png           |  Bin 0 -> 177 bytes
 .../imgs_glossy/top-days-bg.png.xml           |   36 +
 .../imgs_glossy/top-separator.gif.gif         |  Bin 0 -> 259 bytes
 .../imgs_glossy/top-separator.gif.xml         |   36 +
 .../imgs_glossy/white_tab.png.png             |  Bin 0 -> 290 bytes
 .../imgs_glossy/white_tab.png.xml             |   36 +
 .../imgs_glossy/white_tab_wide.png.png        |  Bin 0 -> 300 bytes
 .../imgs_glossy/white_tab_wide.png.xml        |   36 +
 .../dhtmlxscheduler/locale.xml                |   26 +
 .../dhtmlxscheduler/locale/locale_ar.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_ar.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_be.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_be.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_ca.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_ca.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_cn.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_cn.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_cs.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_cs.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_da.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_da.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_de.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_de.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_el.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_el.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_en.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_en.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_es.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_es.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_fi.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_fi.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_fr.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_fr.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_he.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_he.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_hu.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_hu.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_id.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_id.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_it.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_it.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_jp.js.js    |   11 +
 .../dhtmlxscheduler/locale/locale_jp.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_nb.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_nb.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_nl.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_nl.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_no.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_no.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_pl.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_pl.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_pt.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_pt.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_ro.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_ro.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_ru.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_ru.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_si.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_si.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_sk.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_sk.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_sv.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_sv.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_tr.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_tr.js.xml   |   28 +
 .../dhtmlxscheduler/locale/locale_ua.js.js    |   12 +
 .../dhtmlxscheduler/locale/locale_ua.js.xml   |   28 +
 .../dhtmlxscheduler/locale/recurring.xml      |   26 +
 .../recurring/locale_recurring_be.js.js       |   11 +
 .../recurring/locale_recurring_be.js.xml      |   28 +
 .../recurring/locale_recurring_cn.js.js       |   11 +
 .../recurring/locale_recurring_cn.js.xml      |   28 +
 .../recurring/locale_recurring_cs.js.js       |   11 +
 .../recurring/locale_recurring_cs.js.xml      |   28 +
 .../recurring/locale_recurring_da.js.js       |   11 +
 .../recurring/locale_recurring_da.js.xml      |   28 +
 .../recurring/locale_recurring_de.js.js       |   11 +
 .../recurring/locale_recurring_de.js.xml      |   28 +
 .../recurring/locale_recurring_el.js.js       |   11 +
 .../recurring/locale_recurring_el.js.xml      |   28 +
 .../recurring/locale_recurring_en.js.js       |   11 +
 .../recurring/locale_recurring_en.js.xml      |   28 +
 .../recurring/locale_recurring_es.js.js       |   11 +
 .../recurring/locale_recurring_es.js.xml      |   28 +
 .../recurring/locale_recurring_fi.js.js       |   11 +
 .../recurring/locale_recurring_fi.js.xml      |   28 +
 .../recurring/locale_recurring_fr.js.js       |   11 +
 .../recurring/locale_recurring_fr.js.xml      |   28 +
 .../recurring/locale_recurring_it.js.js       |   11 +
 .../recurring/locale_recurring_it.js.xml      |   28 +
 .../recurring/locale_recurring_nb.js.js       |   11 +
 .../recurring/locale_recurring_nb.js.xml      |   28 +
 .../recurring/locale_recurring_nl.js.js       |   11 +
 .../recurring/locale_recurring_nl.js.xml      |   28 +
 .../recurring/locale_recurring_pl.js.js       |   11 +
 .../recurring/locale_recurring_pl.js.xml      |   28 +
 .../recurring/locale_recurring_pt.js.js       |   11 +
 .../recurring/locale_recurring_pt.js.xml      |   28 +
 .../recurring/locale_recurring_ro.js.js       |   11 +
 .../recurring/locale_recurring_ro.js.xml      |   28 +
 .../recurring/locale_recurring_ru.js.js       |   11 +
 .../recurring/locale_recurring_ru.js.xml      |   28 +
 .../recurring/locale_recurring_sk.js.js       |   11 +
 .../recurring/locale_recurring_sk.js.xml      |   28 +
 .../recurring/locale_recurring_sv.js.js       |   11 +
 .../recurring/locale_recurring_sv.js.xml      |   28 +
 .../recurring/locale_recurring_ua.js.js       |   11 +
 .../recurring/locale_recurring_ua.js.xml      |   28 +
 .../recurring/repeat_template_be.html.xml     |   54 +
 .../recurring/repeat_template_be.html.zpt     |   57 +
 .../recurring/repeat_template_cn.html.xml     |   54 +
 .../recurring/repeat_template_cn.html.zpt     |   57 +
 .../recurring/repeat_template_de.html.xml     |   54 +
 .../recurring/repeat_template_de.html.zpt     |   60 +
 .../recurring/repeat_template_el.html.xml     |   54 +
 .../recurring/repeat_template_el.html.zpt     |   57 +
 .../recurring/repeat_template_en.html.xml     |   54 +
 .../recurring/repeat_template_en.html.zpt     |   57 +
 .../recurring/repeat_template_es.html.xml     |   54 +
 .../recurring/repeat_template_es.html.zpt     |   57 +
 .../recurring/repeat_template_fr.html.xml     |   54 +
 .../recurring/repeat_template_fr.html.zpt     |   57 +
 .../recurring/repeat_template_it.html.xml     |   54 +
 .../recurring/repeat_template_it.html.zpt     |   57 +
 .../recurring/repeat_template_nl.html.xml     |   54 +
 .../recurring/repeat_template_nl.html.zpt     |   65 +
 .../recurring/repeat_template_ro.html.xml     |   54 +
 .../recurring/repeat_template_ro.html.zpt     |   57 +
 .../recurring/repeat_template_ru.html.xml     |   54 +
 .../recurring/repeat_template_ru.html.zpt     |   57 +
 .../recurring/repeat_template_sk.html.xml     |   54 +
 .../recurring/repeat_template_sk.html.zpt     |   57 +
 .../dhtmlxscheduler/sources.xml               |   26 +
 .../sources/dhtmlxscheduler.js.js             | 6326 +++++++++++++++++
 .../sources/dhtmlxscheduler.js.map.txt        |    1 +
 .../sources/dhtmlxscheduler.js.map.xml        |   28 +
 .../sources/dhtmlxscheduler.js.xml            |   28 +
 .../dhtmlxscheduler/sources/ext.xml           |   26 +
 .../ext/dhtmlxscheduler_active_links.js.js    |   44 +
 .../dhtmlxscheduler_active_links.js.map.txt   |    1 +
 .../dhtmlxscheduler_active_links.js.map.xml   |   28 +
 .../ext/dhtmlxscheduler_active_links.js.xml   |   28 +
 .../ext/dhtmlxscheduler_agenda_view.js.js     |  124 +
 .../dhtmlxscheduler_agenda_view.js.map.txt    |    1 +
 .../dhtmlxscheduler_agenda_view.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_agenda_view.js.xml    |   28 +
 .../ext/dhtmlxscheduler_all_timed.js.js       |  149 +
 .../ext/dhtmlxscheduler_all_timed.js.map.txt  |    1 +
 .../ext/dhtmlxscheduler_all_timed.js.map.xml  |   28 +
 .../ext/dhtmlxscheduler_all_timed.js.xml      |   28 +
 .../ext/dhtmlxscheduler_collision.js.js       |  132 +
 .../ext/dhtmlxscheduler_collision.js.map.txt  |    1 +
 .../ext/dhtmlxscheduler_collision.js.map.xml  |   28 +
 .../ext/dhtmlxscheduler_collision.js.xml      |   28 +
 ...dhtmlxscheduler_container_autoresize.js.js |  187 +
 ...xscheduler_container_autoresize.js.map.txt |    1 +
 ...xscheduler_container_autoresize.js.map.xml |   28 +
 ...htmlxscheduler_container_autoresize.js.xml |   28 +
 .../sources/ext/dhtmlxscheduler_cookie.js.js  |   80 +
 .../ext/dhtmlxscheduler_cookie.js.map.txt     |    1 +
 .../ext/dhtmlxscheduler_cookie.js.map.xml     |   28 +
 .../sources/ext/dhtmlxscheduler_cookie.js.xml |   28 +
 .../sources/ext/dhtmlxscheduler_editors.js.js |  169 +
 .../ext/dhtmlxscheduler_editors.js.map.txt    |    1 +
 .../ext/dhtmlxscheduler_editors.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_editors.js.xml        |   28 +
 .../sources/ext/dhtmlxscheduler_expand.js.js  |   83 +
 .../ext/dhtmlxscheduler_expand.js.map.txt     |    1 +
 .../ext/dhtmlxscheduler_expand.js.map.xml     |   28 +
 .../sources/ext/dhtmlxscheduler_expand.js.xml |   28 +
 .../ext/dhtmlxscheduler_html_templates.js.js  |   23 +
 .../dhtmlxscheduler_html_templates.js.map.txt |    1 +
 .../dhtmlxscheduler_html_templates.js.map.xml |   28 +
 .../ext/dhtmlxscheduler_html_templates.js.xml |   28 +
 .../sources/ext/dhtmlxscheduler_key_nav.js.js |  113 +
 .../ext/dhtmlxscheduler_key_nav.js.map.txt    |    1 +
 .../ext/dhtmlxscheduler_key_nav.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_key_nav.js.xml        |   28 +
 .../sources/ext/dhtmlxscheduler_layer.js.js   |  408 ++
 .../ext/dhtmlxscheduler_layer.js.map.txt      |    1 +
 .../ext/dhtmlxscheduler_layer.js.map.xml      |   28 +
 .../sources/ext/dhtmlxscheduler_layer.js.xml  |   28 +
 .../sources/ext/dhtmlxscheduler_limit.js.js   | 1042 +++
 .../ext/dhtmlxscheduler_limit.js.map.txt      |    1 +
 .../ext/dhtmlxscheduler_limit.js.map.xml      |   28 +
 .../sources/ext/dhtmlxscheduler_limit.js.xml  |   28 +
 .../ext/dhtmlxscheduler_map_view.js.js        |  493 ++
 .../ext/dhtmlxscheduler_map_view.js.map.txt   |    1 +
 .../ext/dhtmlxscheduler_map_view.js.map.xml   |   28 +
 .../ext/dhtmlxscheduler_map_view.js.xml       |   28 +
 .../sources/ext/dhtmlxscheduler_minical.js.js |  482 ++
 .../ext/dhtmlxscheduler_minical.js.map.txt    |    1 +
 .../ext/dhtmlxscheduler_minical.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_minical.js.xml        |   28 +
 .../ext/dhtmlxscheduler_monthheight.js.js     |   35 +
 .../dhtmlxscheduler_monthheight.js.map.txt    |    1 +
 .../dhtmlxscheduler_monthheight.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_monthheight.js.xml    |   28 +
 .../ext/dhtmlxscheduler_multiselect.js.js     |   70 +
 .../dhtmlxscheduler_multiselect.js.map.txt    |    1 +
 .../dhtmlxscheduler_multiselect.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_multiselect.js.xml    |   28 +
 .../ext/dhtmlxscheduler_multisource.js.js     |   30 +
 .../dhtmlxscheduler_multisource.js.map.txt    |    1 +
 .../dhtmlxscheduler_multisource.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_multisource.js.xml    |   28 +
 .../sources/ext/dhtmlxscheduler_mvc.js.js     |  148 +
 .../ext/dhtmlxscheduler_mvc.js.map.txt        |    1 +
 .../ext/dhtmlxscheduler_mvc.js.map.xml        |   28 +
 .../sources/ext/dhtmlxscheduler_mvc.js.xml    |   28 +
 .../sources/ext/dhtmlxscheduler_offline.js.js |   84 +
 .../ext/dhtmlxscheduler_offline.js.map.txt    |    1 +
 .../ext/dhtmlxscheduler_offline.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_offline.js.xml        |   28 +
 .../ext/dhtmlxscheduler_outerdrag.js.js       |   61 +
 .../ext/dhtmlxscheduler_outerdrag.js.map.txt  |    1 +
 .../ext/dhtmlxscheduler_outerdrag.js.map.xml  |   28 +
 .../ext/dhtmlxscheduler_outerdrag.js.xml      |   28 +
 .../sources/ext/dhtmlxscheduler_pdf.js.js     |  364 +
 .../ext/dhtmlxscheduler_pdf.js.map.txt        |    1 +
 .../ext/dhtmlxscheduler_pdf.js.map.xml        |   28 +
 .../sources/ext/dhtmlxscheduler_pdf.js.xml    |   28 +
 .../ext/dhtmlxscheduler_quick_info.js.js      |  200 +
 .../ext/dhtmlxscheduler_quick_info.js.map.txt |    1 +
 .../ext/dhtmlxscheduler_quick_info.js.map.xml |   28 +
 .../ext/dhtmlxscheduler_quick_info.js.xml     |   28 +
 .../ext/dhtmlxscheduler_readonly.js.js        |  161 +
 .../ext/dhtmlxscheduler_readonly.js.map.txt   |    1 +
 .../ext/dhtmlxscheduler_readonly.js.map.xml   |   28 +
 .../ext/dhtmlxscheduler_readonly.js.xml       |   28 +
 .../ext/dhtmlxscheduler_recurring.js.js       | 1041 +++
 .../ext/dhtmlxscheduler_recurring.js.map.txt  |    1 +
 .../ext/dhtmlxscheduler_recurring.js.map.xml  |   28 +
 .../ext/dhtmlxscheduler_recurring.js.xml      |   28 +
 .../ext/dhtmlxscheduler_serialize.js.js       |  111 +
 .../ext/dhtmlxscheduler_serialize.js.map.txt  |    1 +
 .../ext/dhtmlxscheduler_serialize.js.map.xml  |   28 +
 .../ext/dhtmlxscheduler_serialize.js.xml      |   28 +
 .../sources/ext/dhtmlxscheduler_tooltip.js.js |  225 +
 .../ext/dhtmlxscheduler_tooltip.js.map.txt    |    1 +
 .../ext/dhtmlxscheduler_tooltip.js.map.xml    |   28 +
 .../ext/dhtmlxscheduler_tooltip.js.xml        |   28 +
 .../sources/ext/dhtmlxscheduler_url.js.js     |   81 +
 .../ext/dhtmlxscheduler_url.js.map.txt        |    1 +
 .../ext/dhtmlxscheduler_url.js.map.xml        |   28 +
 .../sources/ext/dhtmlxscheduler_url.js.xml    |   28 +
 .../sources/ext/dhtmlxscheduler_wp.js.js      |   21 +
 .../sources/ext/dhtmlxscheduler_wp.js.map.txt |    1 +
 .../sources/ext/dhtmlxscheduler_wp.js.map.xml |   28 +
 .../sources/ext/dhtmlxscheduler_wp.js.xml     |   28 +
 .../ext/dhtmlxscheduler_year_view.js.js       |  392 +
 .../ext/dhtmlxscheduler_year_view.js.map.txt  |    1 +
 .../ext/dhtmlxscheduler_year_view.js.map.xml  |   28 +
 .../ext/dhtmlxscheduler_year_view.js.xml      |   28 +
 .../dhtmlxscheduler/sources/locale.xml        |   26 +
 .../sources/locale/locale_ar.js.js            |   53 +
 .../sources/locale/locale_ar.js.map.txt       |    1 +
 .../sources/locale/locale_ar.js.map.xml       |   28 +
 .../sources/locale/locale_ar.js.xml           |   28 +
 .../sources/locale/locale_be.js.js            |   65 +
 .../sources/locale/locale_be.js.map.txt       |    1 +
 .../sources/locale/locale_be.js.map.xml       |   28 +
 .../sources/locale/locale_be.js.xml           |   28 +
 .../sources/locale/locale_ca.js.js            |   65 +
 .../sources/locale/locale_ca.js.map.txt       |    1 +
 .../sources/locale/locale_ca.js.map.xml       |   28 +
 .../sources/locale/locale_ca.js.xml           |   28 +
 .../sources/locale/locale_cn.js.js            |   70 +
 .../sources/locale/locale_cn.js.map.txt       |    1 +
 .../sources/locale/locale_cn.js.map.xml       |   28 +
 .../sources/locale/locale_cn.js.xml           |   28 +
 .../sources/locale/locale_cs.js.js            |   64 +
 .../sources/locale/locale_cs.js.map.txt       |    1 +
 .../sources/locale/locale_cs.js.map.xml       |   28 +
 .../sources/locale/locale_cs.js.xml           |   28 +
 .../sources/locale/locale_da.js.js            |   63 +
 .../sources/locale/locale_da.js.map.txt       |    1 +
 .../sources/locale/locale_da.js.map.xml       |   28 +
 .../sources/locale/locale_da.js.xml           |   28 +
 .../sources/locale/locale_de.js.js            |   63 +
 .../sources/locale/locale_de.js.map.txt       |    1 +
 .../sources/locale/locale_de.js.map.xml       |   28 +
 .../sources/locale/locale_de.js.xml           |   28 +
 .../sources/locale/locale_el.js.js            |   64 +
 .../sources/locale/locale_el.js.map.txt       |    1 +
 .../sources/locale/locale_el.js.map.xml       |   28 +
 .../sources/locale/locale_el.js.xml           |   28 +
 .../sources/locale/locale_en.js.js            |   64 +
 .../sources/locale/locale_en.js.map.txt       |    1 +
 .../sources/locale/locale_en.js.map.xml       |   28 +
 .../sources/locale/locale_en.js.xml           |   28 +
 .../sources/locale/locale_es.js.js            |   65 +
 .../sources/locale/locale_es.js.map.txt       |    1 +
 .../sources/locale/locale_es.js.map.xml       |   28 +
 .../sources/locale/locale_es.js.xml           |   28 +
 .../sources/locale/locale_fi.js.js            |   64 +
 .../sources/locale/locale_fi.js.map.txt       |    1 +
 .../sources/locale/locale_fi.js.map.xml       |   28 +
 .../sources/locale/locale_fi.js.xml           |   28 +
 .../sources/locale/locale_fr.js.js            |   62 +
 .../sources/locale/locale_fr.js.map.txt       |    1 +
 .../sources/locale/locale_fr.js.map.xml       |   28 +
 .../sources/locale/locale_fr.js.xml           |   28 +
 .../sources/locale/locale_he.js.js            |   64 +
 .../sources/locale/locale_he.js.map.txt       |    1 +
 .../sources/locale/locale_he.js.map.xml       |   28 +
 .../sources/locale/locale_he.js.xml           |   28 +
 .../sources/locale/locale_hu.js.js            |   58 +
 .../sources/locale/locale_hu.js.map.txt       |    1 +
 .../sources/locale/locale_hu.js.map.xml       |   28 +
 .../sources/locale/locale_hu.js.xml           |   28 +
 .../sources/locale/locale_id.js.js            |    9 +
 .../sources/locale/locale_id.js.map.txt       |    1 +
 .../sources/locale/locale_id.js.map.xml       |   28 +
 .../sources/locale/locale_id.js.xml           |   28 +
 .../sources/locale/locale_it.js.js            |   62 +
 .../sources/locale/locale_it.js.map.txt       |    1 +
 .../sources/locale/locale_it.js.map.xml       |   28 +
 .../sources/locale/locale_it.js.xml           |   28 +
 .../sources/locale/locale_jp.js.js            |   66 +
 .../sources/locale/locale_jp.js.map.txt       |    1 +
 .../sources/locale/locale_jp.js.map.xml       |   28 +
 .../sources/locale/locale_jp.js.xml           |   28 +
 .../sources/locale/locale_nb.js.js            |   62 +
 .../sources/locale/locale_nb.js.map.txt       |    1 +
 .../sources/locale/locale_nb.js.map.xml       |   28 +
 .../sources/locale/locale_nb.js.xml           |   28 +
 .../sources/locale/locale_nl.js.js            |   64 +
 .../sources/locale/locale_nl.js.map.txt       |    1 +
 .../sources/locale/locale_nl.js.map.xml       |   28 +
 .../sources/locale/locale_nl.js.xml           |   28 +
 .../sources/locale/locale_no.js.js            |   64 +
 .../sources/locale/locale_no.js.map.txt       |    1 +
 .../sources/locale/locale_no.js.map.xml       |   28 +
 .../sources/locale/locale_no.js.xml           |   28 +
 .../sources/locale/locale_pl.js.js            |   64 +
 .../sources/locale/locale_pl.js.map.txt       |    1 +
 .../sources/locale/locale_pl.js.map.xml       |   28 +
 .../sources/locale/locale_pl.js.xml           |   28 +
 .../sources/locale/locale_pt.js.js            |   74 +
 .../sources/locale/locale_pt.js.map.txt       |    1 +
 .../sources/locale/locale_pt.js.map.xml       |   28 +
 .../sources/locale/locale_pt.js.xml           |   28 +
 .../sources/locale/locale_ro.js.js            |   68 +
 .../sources/locale/locale_ro.js.map.txt       |    1 +
 .../sources/locale/locale_ro.js.map.xml       |   28 +
 .../sources/locale/locale_ro.js.xml           |   28 +
 .../sources/locale/locale_ru.js.js            |   62 +
 .../sources/locale/locale_ru.js.map.txt       |    1 +
 .../sources/locale/locale_ru.js.map.xml       |   28 +
 .../sources/locale/locale_ru.js.xml           |   28 +
 .../sources/locale/locale_si.js.js            |   64 +
 .../sources/locale/locale_si.js.map.txt       |    1 +
 .../sources/locale/locale_si.js.map.xml       |   28 +
 .../sources/locale/locale_si.js.xml           |   28 +
 .../sources/locale/locale_sk.js.js            |   64 +
 .../sources/locale/locale_sk.js.map.txt       |    1 +
 .../sources/locale/locale_sk.js.map.xml       |   28 +
 .../sources/locale/locale_sk.js.xml           |   28 +
 .../sources/locale/locale_sv.js.js            |   63 +
 .../sources/locale/locale_sv.js.map.txt       |    1 +
 .../sources/locale/locale_sv.js.map.xml       |   28 +
 .../sources/locale/locale_sv.js.xml           |   28 +
 .../sources/locale/locale_tr.js.js            |   63 +
 .../sources/locale/locale_tr.js.map.txt       |    1 +
 .../sources/locale/locale_tr.js.map.xml       |   28 +
 .../sources/locale/locale_tr.js.xml           |   28 +
 .../sources/locale/locale_ua.js.js            |   63 +
 .../sources/locale/locale_ua.js.map.txt       |    1 +
 .../sources/locale/locale_ua.js.map.xml       |   28 +
 .../sources/locale/locale_ua.js.xml           |   28 +
 .../dhtmlxscheduler/sources/skins.xml         |   26 +
 .../sources/skins/dhtmlxscheduler.css.css     | 2243 ++++++
 .../sources/skins/dhtmlxscheduler.css.xml     |   28 +
 .../skins/dhtmlxscheduler_classic.css.css     | 1572 ++++
 .../skins/dhtmlxscheduler_classic.css.xml     |   28 +
 .../skins/dhtmlxscheduler_flat.css.css        | 2406 +++++++
 .../skins/dhtmlxscheduler_flat.css.xml        |   28 +
 .../skins/dhtmlxscheduler_glossy.css.css      | 1894 +++++
 .../skins/dhtmlxscheduler_glossy.css.xml      |   28 +
 bt5/erp5_dhtmlx_scheduler/bt/description      |    1 +
 .../bt/template_format_version                |    1 +
 .../bt/template_skin_id_list                  |    1 +
 bt5/erp5_dhtmlx_scheduler/bt/title            |    1 +
 597 files changed, 34433 insertions(+)
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/but_repeat.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/but_repeat.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/buttons.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/buttons.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/calendar.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/calendar.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_big.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_big.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_small.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_small.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/collapse_expand_icon.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/collapse_expand_icon.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/controls.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/controls.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg_now.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg_now.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_ical.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_ical.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_pdf.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_pdf.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/icon.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/icon.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/images.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/images.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/loading.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/loading.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/resize_dots.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/resize_dots.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_left.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_left.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_right.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_right.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/but_repeat.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/but_repeat.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/calendar.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/calendar.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_big.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_big.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_small.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_small.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/close_icon.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/close_icon.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/collapse_expand_icon.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/collapse_expand_icon.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/controls.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/controls.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg_now.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg_now.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_ical.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_ical.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_pdf.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_pdf.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resize_dots.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resize_dots.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resizing.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resizing.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/agenda_bg.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/agenda_bg.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_left.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_left.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_right.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_right.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/but_repeat.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/but_repeat.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/calendar.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/calendar.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_big.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_big.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_small.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_small.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/close_icon.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/close_icon.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/collapse_expand_icon.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/collapse_expand_icon.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/controls.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/controls.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg_now.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg_now.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_ical.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_ical.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_pdf.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_pdf.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resize_dots.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resize_dots.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resizing.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resizing.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab_wide.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab_wide.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/but_repeat.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/but_repeat.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/buttons.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/buttons.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/calendar.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/calendar.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_big.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_big.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_small.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_small.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/collapse_expand_icon.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/collapse_expand_icon.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/controlls5.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/controlls5.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg_now.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg_now.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/event-bg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/event-bg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_ical.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_ical.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_pdf.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_pdf.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/icon.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/icon.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-separator.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-separator.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-time-bg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-time-bg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/lightbox.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/lightbox.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/loading.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/loading.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/move.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/move.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/multi-days-bg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/multi-days-bg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/second-top-days-bg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/second-top-days-bg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-days-bg.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-days-bg.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-separator.gif.gif
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-separator.gif.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab_wide.png.png
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab_wide.png.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.zpt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.js
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.txt
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.css
 create mode 100644 bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.xml
 create mode 100644 bt5/erp5_dhtmlx_scheduler/bt/description
 create mode 100644 bt5/erp5_dhtmlx_scheduler/bt/template_format_version
 create mode 100644 bt5/erp5_dhtmlx_scheduler/bt/template_skin_id_list
 create mode 100644 bt5/erp5_dhtmlx_scheduler/bt/title

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler.xml
new file mode 100644
index 0000000000..9d7ea598fd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>erp5_dhtmlx_scheduler</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler.xml
new file mode 100644
index 0000000000..7e30abd7cc
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>dhtmlxscheduler</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.css
new file mode 100644
index 0000000000..1e11af16ee
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.css
@@ -0,0 +1,9 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000}.dhtmlx-info{min-width:120px;font-family:Tahoma;z-index:10000;overflow:hidden;margin:5px 5px 10px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.dhtmlx-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;text-align:center;position:fixed;box-shadow:0 0 14px #888;font-family:Tahoma;z-index:20000;border-radius:6px;border:1px solid #fff}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%)}.dhtmlx-info,.dhtmlx_button,.dhtmlx_popup_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer}.dhtmlx_popup_text{overflow:hidden}.dhtmlx_popup_controls{border-radius:6px;padding:5px}.dhtmlx_button,.dhtmlx_popup_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF}.dhtmlx_popup_button{min-width:120px}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity=20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC)}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid red}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);border-radius:6px;font-size:15px;font-weight:400;-moz-box-sizing:content-box;box-sizing:content-box;color:#fff;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px}.dhtmlx_button input:active,.dhtmlx_button input:focus,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);background:-webkit-linear-gradient(top,#707070 1%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#4c4c4c 99%)}.dhtmlx_popup_title{color:#fff;text-shadow:1px 1px #000;height:40px;line-height:40px;font-size:20px}.dhtmlx_popup_text{margin:15px 15px 5px;font-size:14px;color:#000;min-height:30px;border-radius:6px}.dhtmlx-error,.dhtmlx-info{font-size:14px;color:#000;box-shadow:0 0 10px #888;padding:0;background-color:#FFF;border-radius:3px;border:1px solid #fff}.dhtmlx-info div{padding:5px 10px;background-color:#fff;border-radius:3px;border:1px solid #B8B8B8}.dhtmlx-error{background-color:#d81b1b;border:1px solid #ff3c3c;box-shadow:0 0 10px #000}.dhtmlx-error div{background-color:#d81b1b;border:1px solid #940000;color:#FFF}.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title{border:1px solid #B7A543;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0;cursor:pointer}.dhx_cal_event .dhx_title{height:12px;border-bottom-style:dotted;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px;padding:5px}.dhx_resize_denied,.dhx_resize_denied .dhx_event_resize{cursor:default!important}.dhx_cal_event .dhx_event_resize{cursor:s-resize}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px;position:relative}.dhx_cal_event_line{padding-left:10px;cursor:pointer;overflow:hidden}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;white-space:nowrap;overflow:hidden;cursor:pointer}.dhx_in_move{background-color:#FFFF80}.dhx_cal_event.dhx_cal_editor{z-index:999;position:absolute;overflow:hidden}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid #000;margin:0;padding:0;overflow:auto}div.dhx_menu_head{background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default}div.dhx_menu_icon{width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer}div.icon_details{background-position:0 0}div.icon_edit{background-position:-22px 0}div.icon_save{background-position:-84px -1px}div.icon_cancel{background-position:-62px 0}div.icon_delete{background-position:-42px 0}.dhx_month_link{position:absolute;box-sizing:border-box;-moz-box-sizing:border-box;text-align:right;cursor:pointer;padding-right:10px}.dhx_month_link a{color:#00f}.dhx_month_link a:hover{text-decoration:underline}.dhx_global_tip{font-family:Tahoma,Helvetica;text-align:center;font-size:20px;position:fixed;top:60px;right:20px;background-color:rgba(255,255,255,.7);color:#000;z-index:10000;padding:20px 30px;width:190px}.dhx_global_tip div{font-size:30px}@media (-moz-touch-enabled){.dhx_cal_container{user-select:none;-moz-user-select:none}}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_light{-webkit-tap-highlight-color:transparent;border-radius:5px;font-family:Tahoma;font-size:8pt;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888}.dhx_mark{position:relative;top:3px;background-image:url(imgs/controls.gif);background-position:0 -43px;padding-left:10px}.dhx_ie6 .dhx_mark{background-position:6px -41px}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;padding:2px;margin:0}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap}.dhx_cal_ltitle span{white-space:nowrap}.dhx_cal_lsection{font-weight:700;padding:5px 0 3px 10px}.dhx_section_time{white-space:nowrap}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;font-size:12px;font-weight:400;line-height:20px;vertical-align:top;cursor:pointer}.dhx_cal_lsection{font-size:18px;font-family:Arial}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden}.dhx_cal_ltext textarea{overflow:auto;height:100%;width:100%;outline:0!important;resize:none}.dhx_time{font-weight:700}.dhx_cal_larea{overflow:hidden;width:572px;height:1px}.dhx_btn_set{float:left}.dhx_btn_set div{float:left;vertical-align:middle;cursor:pointer}.dhx_save_btn{background-image:url(imgs/controls.gif);background-position:-84px 0;width:21px}.dhx_cancel_btn{background-image:url(imgs/controls.gif);background-position:-63px 0;width:20px}.dhx_delete_btn{background-image:url(imgs/controls.gif);background-position:-42px 0;width:20px}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:#000;opacity:.1;filter:alpha(opacity=10)}.dhx_custom_button{padding:0 3px;font-family:Tahoma;font-size:8pt;font-weight:400;margin-right:5px;margin-top:0;cursor:pointer}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;padding:5px 0 0 10px}.dhx_cal_light_wide .dhx_wrap_section{position:relative;overflow:hidden}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important}.dhx_section_time{text-align:center}.dhx_cal_light_wide .dhx_cal_larea{width:730px}.dhx_cal_light_wide{width:738px}.dhx_cal_light_wide .dhx_section_time{background:0 0}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px}.dhx_cal_light input{font-family:Tahoma;font-size:8pt}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;font-weight:700;font-family:Arial;cursor:pointer}.dhx_custom_button{float:right;height:21px}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px}.dhx_minical_popup{position:absolute;z-index:10100;width:251px;height:175px}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%}.dhx_expand_icon{position:absolute;right:0;background-image:url(imgs/collapse_expand_icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16}.dhx_scheduler_agenda .dhx_cal_data{background-image:url(imgs/databg.png)}.dhx_agenda_area{width:100%;overflow-y:auto;background-image:url(imgs/databg.png)}.dhx_agenda_line{height:21px;clear:both;overflow:hidden}.dhx_agenda_line div{float:left;width:188px;text-align:center;line-height:21px;overflow:hidden}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3}.dhx_v_border{position:absolute;left:187px;top:0;width:1px;height:100%}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_agenda_line span{padding-left:5px;line-height:21px}.dhx_year_week{position:relative}.dhx_year_month{height:18px;padding-top:3px;text-align:center;vertical-align:middle}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head a,.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a{color:#E2E3E6!important}.dhx_year_body .dhx_month_body{height:0;overflow:hidden}.dhx_month_head.dhx_year_event{background-color:#FFE763}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head{cursor:default}.dhx_year_tooltip{border:1px solid #BBB;background-image:url(imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center}.dhx_text_disabled{font-family:Tahoma;font-size:8pt}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;-moz-user-select:-moz-none;-webkit-user-select:none;-user-select:none}.dhx_mini_calendar .dhx_month_head{cursor:pointer}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC}.dhx_cal_navline div.dhx_minical_icon{cursor:pointer;background-image:url(imgs/calendar.gif)}.dhx_matrix_scell{height:100%}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle}.dhx_matrix_cell{background-color:#fff}.dhx_matrix_line{overflow:hidden}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;position:absolute;top:0;width:4px;height:100%}.dhx_event_resize_start{left:0}.dhx_event_resize_end{right:0}.dhx_data_table.folder .dhx_matrix_cell,.dhx_matrix_scell.folder{background-color:#969394;cursor:pointer}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px}.dhx_matrix_scell.folder{font-weight:700;text-align:left}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left}.dhx_data_table.folder .dhx_matrix_cell{border-right:0}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px}.dhx_section_timeline select{width:552px}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(imgs/databg.png)}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_map_line{height:21px;clear:both;overflow:hidden}.dhx_map{position:absolute}.dhx_map_line .headline_description,.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden}.dhx_map_line.highlight{background-color:#C4C5CC}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);background-color:#fff;cursor:default;padding:10px;position:absolute;z-index:500;font-family:Tahoma;opacity:1}.dhx_cal_checkbox label{padding-left:5px}.dhx_cal_light .radio{padding:2px 0 2px 10px}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px}.dhx_cal_light .combo{padding:4px}.dhx_cal_light_wide .dhx_combo_box{width:608px!important;left:10px}.dhx_wa_column{float:left}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto}.dhx_wa_ev_body{font-size:12px;padding:5px 0 5px 7px}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important}.dhx_cal_event_selected{background-color:#9cc1db;color:#fff}.dhx_second_scale_bar{padding-top:2px}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC}.dhx_grid_area table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed}.dhx_grid_area td{table-layout:fixed;text-align:center}.dhx_grid_line{height:21px;clear:both;overflow:hidden}.dhx_grid_line div{float:left;cursor:default;padding-top:0;padding-bottom:0;text-align:center;line-height:21px;overflow:hidden}.dhx_grid_area td,.dhx_grid_line div{padding-left:8px;padding-right:8px}.dhx_grid_area tr.dhx_grid_event{height:21px;overflow:hidden;margin:0 0 1px}.dhx_grid_area tr.dhx_grid_event td{border-bottom:1px solid #ECEEF4}.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td,.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td{border-bottom-width:0;border-bottom-style:none}.dhx_grid_area tr.dhx_grid_event:nth-child(2n){background-color:#ECEEF4}.dhx_grid_area .dhx_grid_dummy{table-layout:auto;margin:0!important;padding:0!important}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%}.dhx_grid_event_selected{background-color:#9cc1db!important;color:#fff!important}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(imgs/images.png)}.dhx_marked_timespan{position:absolute;width:100%;margin-left:0}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100)}.dhx_mini_calendar .dhx_marked_timespan,.dhx_scheduler_month .dhx_marked_timespan{display:none}.dhx_now_time{width:100%;border-bottom:2px solid red;z-index:1}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px solid red}.dhx_matrix_now_time{border-left:2px solid red;z-index:1}.dhx_matrix_now_time,.dhx_now_time{opacity:.5}.dhx_cal_quick_info{border:2px solid #888;border-radius:5px;position:absolute;z-index:300;background-color:#8e99ae;background-color:rgba(98,107,127,.5);padding-left:7px;width:300px;transition:left .5s ease,right .5s;-moz-transition:left .5s ease,right .5s;-webkit-transition:left .5s ease,right .5s;-o-transition:left .5s ease,right .5s}.dhx_no_animate{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon{float:right}.dhx_cal_qi_title{padding:5px 0 10px 5px;color:#FFF;letter-spacing:1px}.dhx_cal_qi_tdate{font-size:14px}.dhx_cal_qi_tcontent{font-size:18px;font-weight:700}.dhx_cal_qi_content{border:1px solid #888;background-color:#fefefe;padding:16px 8px;font-size:14px;color:#444;width:275px;overflow:hidden}.dhx_qi_big_icon{border-radius:3px;margin:5px 9px 5px 0;min-width:60px;line-height:20px;vertical-align:middle;padding:5px 10px 5px 5px;cursor:pointer;background-color:#fefefe;border-bottom:1px solid #666;border-right:1px solid #666;float:left}.dhx_cal_qi_controls div{float:left;height:20px;text-align:center;line-height:20px}.dhx_qi_big_icon .dhx_menu_icon{margin:0 8px 0 0}.dhx_drag_marker{width:100%;filter:alpha(Opacity=50);opacity:.5;background-color:#FFE763;position:absolute;box-sizing:border-box!important;border-top:1px solid #B6B6B6;border-bottom:1px solid #b6b6b6}.dhx_cal_data,.dhx_cal_data div,.dhx_cal_data table *,.dhx_cal_header,.dhx_cal_header div,.dhx_cal_navline div,.dhx_cal_quick_info,.dhx_cal_quick_info div,.dhx_multi_day,.dhx_multi_day div,.dhx_tooltip_line div{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dhx_cal_data table{border-collapse:separate}.dhx_cal_light .dhx_cal_radio label{margin-bottom:0}.dhx_cal_event div{line-height:normal}.dhx_cal_container{font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48}.dhx_cal_navline div{position:absolute;white-space:nowrap}.dhx_cal_navline .dhx_cal_date{padding-top:1px}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;cursor:pointer}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;cursor:pointer}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;cursor:pointer;text-align:center}.dhx_cal_tab{text-align:center;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:700}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;z-index:2;overflow:hidden;color:#2F3A48}.dhx_cal_data{-webkit-tap-highlight-color:transparent;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;-ms-touch-action:pan-y}.dhx_cal_event,.dhx_cal_event_clear,.dhx_cal_event_line{-ms-touch-action:none}.dhx_scale_bar{position:absolute;text-align:center}.dhx_scale_holder,.dhx_scale_holder_now{position:absolute}.dhx_scale_hour{height:41px;width:50px;text-align:center;line-height:40px;overflow:hidden}.dhx_month_head{padding-right:5px;text-align:right}.dhx_month_body{background-color:#FFF}.dhx_scale_ignore{display:none}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50)}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999}.dhx_multi_day,.dhx_multi_day_icon{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3}.dhx_multi_day{position:absolute}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-repeat:no-repeat}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff}.dhx_form_repeat,.dhx_form_repeat input{padding:0 0 0 5px;margin:0;font-family:Tahoma,Verdana;font-size:11px;line-height:24px}.dhx_form_repeat{overflow:hidden;background-color:#FFF4B5}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent}.dhx_repeat_center,.dhx_repeat_divider,.dhx_repeat_left,.dhx_repeat_right{height:115px;-moz-box-sizing:border-box;box-sizing:border-box}.dhx_repeat_center,.dhx_repeat_left{padding:10px 0 0 10px;float:left}.dhx_repeat_left{width:105px}.dhx_repeat_center{width:345px;padding-top:22px}.dhx_repeat_divider{float:left;width:1px}.dhx_repeat_right{float:right;width:173px;padding:17px 3px 0 10px}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px;line-height:18px;padding:0 0 0 2px}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px solid #7f9db9;line-height:18px}input.dhx_repeat_radio{margin-right:4px}input.dhx_repeat_checkbox{margin:4px 4px 0 0}.dhx_repeat_days td{padding-right:5px}.dhx_repeat_days label{font-size:10px}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.dhx_custom_button_recurring{background-position:-5px 20px;width:20px;margin-right:10px}.dhx_cal_light_rec{width:640px}.dhx_cal_light_rec .dhx_cal_larea{width:632px}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px}.dhx_cal_event .dhx_title{border-width:1px 1px 0;padding-top:1px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px;font-family:arial;font-weight:700;font-size:12px;line-height:12px}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{padding-bottom:8px;-webkit-border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.dhx_cal_event .dhx_header,.dhx_cal_event.dhx_cal_select_menu .dhx_footer{display:none}.dhx_cal_event.dhx_cal_select_menu{-webkit-box-shadow:0 0 1px #FFF;-moz-box-shadow:0 0 1px #FFF;box-shadow:0 0 1px #FFF}.dhx_cal_event .dhx_footer{height:5px;border:0;margin-top:-6px;background:url(imgs_dhx_terrace/resizing.png) center center no-repeat}.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title{background-color:#1796b0;border-color:transparent;color:#fff}.dhx_cal_event.dhx_cal_editor{border:1px solid transparent}.dhx_cal_editor{font-size:12px;font-family:Arial,sans-serif}div.dhx_menu_head,div.dhx_menu_icon{background-image:url(imgs_dhx_terrace/controls.png)}.dhx_cal_event_line{border:1px solid transparent;background-color:#1796b0;color:#fff;height:17px;line-height:17px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.dhx_cal_event_line_start{-webkit-border-top-left-radius:9px;-webkit-border-bottom-left-radius:9px;-moz-border-radius-topleft:9px;-moz-border-radius-bottomleft:9px;border-top-left-radius:9px;border-bottom-left-radius:9px}.dhx_cal_event_line_end{-webkit-border-top-right-radius:9px;-webkit-border-bottom-right-radius:9px;-moz-border-radius-topright:9px;-moz-border-radius-bottomright:9px;border-top-right-radius:9px;border-bottom-right-radius:9px}.dhx_cal_event .dhx_body,.dhx_cal_event_line{font-size:12px;font-family:Arial,sans-serif}.dhx_cal_container{background-color:#fff}.dhx_cal_data{border-top:1px solid #CECECE}.dhx_scale_holder{background-image:url(imgs_dhx_terrace/databg.png);border-right:1px solid #CECECE}.dhx_scale_holder_now{background-image:url(imgs_dhx_terrace/databg_now.png);border-right:1px solid #CECECE}.dhx_scale_hour{border-bottom:1px solid #CECECE;background-color:#fff;font:11px/44px Arial;color:#767676}.dhx_cal_header{border:1px solid #CECECE;border-left:0;border-bottom:0}.dhx_scale_bar{border-left:1px solid #CECECE;font:11px/16px Arial;color:#767676;padding-top:2px;background-color:#fff}.dhx_cal_navline div{top:14px}.dhx_cal_date,.dhx_cal_next_button,.dhx_cal_prev_button,.dhx_cal_tab,.dhx_cal_today_button{color:#454544;height:30px;line-height:30px;background:0 0;border:1px solid #CECECE}.dhx_cal_navline .dhx_cal_date{border:0;font-size:18px;font-weight:400;font-family:arial;width:100%;top:14px;text-align:center;position:absolute;left:0;z-index:-1}.dhx_cal_today_button{color:#747473;left:auto;right:123px;background:0 0;text-decoration:none;width:80px;font-size:12px;font-weight:700;font-family:arial;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.dhx_cal_next_button,.dhx_cal_prev_button{left:auto;width:46px}.dhx_cal_prev_button{right:61px;background:url(imgs_dhx_terrace/arrow_left.png) center center no-repeat;-webkit-border-top-left-radius:5px;-webkit-border-bottom-left-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-bottomleft:5px;border-top-left-radius:5px;border-bottom-left-radius:5px}.dhx_cal_next_button{right:14px;background:url(imgs_dhx_terrace/arrow_right.png) center center no-repeat;-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-moz-border-radius-topright:5px;-moz-border-radius-bottomright:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.dhx_cal_tab{color:#747473;width:60px;padding-top:0;text-decoration:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-weight:700;font-family:arial;font-size:12px}.dhx_cal_tab.active{background-color:#F0EDE7;color:#454544;border:1px solid #CECECE;text-shadow:0 1px 0 #fff}.dhx_cal_tab_first{-webkit-border-top-left-radius:5px;-webkit-border-bottom-left-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-bottomleft:5px;border-top-left-radius:5px;border-bottom-left-radius:5px}.dhx_cal_tab_last{-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-moz-border-radius-topright:5px;-moz-border-radius-bottomright:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.dhx_cal_tab_standalone{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:0 5px}.dhx_multi_day,.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-color:#fff}.dhx_multi_day{border-top:1px solid #CECECE}.dhx_multi_day_icon,.dhx_multi_day_icon_small{border-bottom:1px solid #CECECE;border-right:1px solid #CECECE}.dhx_multi_day_icon_small{background-image:url(imgs_dhx_terrace/clock_small.gif)}.dhx_multi_day_icon{background-image:url(imgs_dhx_terrace/clock_big.gif)}.dhx_after .dhx_month_body,.dhx_after .dhx_month_head,.dhx_before .dhx_month_body,.dhx_before .dhx_month_head,.dhx_month_head{background-color:#fff}.dhx_month_head{height:21px;padding-top:0;font:12px/21px Arial;color:#362d26;border-right:1px solid #CECECE}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{color:#bbb}.dhx_month_body{border-right:1px solid #CECECE;border-bottom:1px solid #CECECE}.dhx_now .dhx_month_body,.dhx_now .dhx_month_head{background-color:#FFF3A1;font-weight:400}.dhx_cal_event_clear{color:#0E64A0}.dhx_cal_larea{margin-left:0}.dhx_cal_light_wide .dhx_cal_larea{margin-left:3px}.dhx_cal_light_wide .dhx_wrap_section{padding:5px 0}.dhx_cal_larea,.dhx_cal_light,.dhx_cal_light_wide .dhx_wrap_section,.dhx_cal_lsection,.dhx_cal_ltext textarea,.dhx_wrap_section{background-color:#fff}.dhx_cal_light input,.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.dhx_cal_lsection,.dhx_cal_lsection .dhx_fullday{color:#747473}.dhx_cal_light_wide .dhx_wrap_section{border-top:0;border-bottom:1px solid #CECECE}.dhx_cal_larea{border:1px solid transparent}.dhx_cal_light,.dhx_cal_light select,.dhx_cal_ltext textarea{color:#2E2E2E}.dhx_cal_light{border:1px solid #CECECE}.dhx_cal_light_wide .dhx_cal_lsection,.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{font-size:13px}.dhx_section_time{background-color:transparent}.dhx_btn_set div:first-child,.dhx_cancel_btn,.dhx_delete_btn,.dhx_save_btn{display:none}.dhx_btn_set,.dhx_btn_set div{height:30px;padding:0 20px;line-height:30px}.dhx_btn_set{margin:12px 0 0;padding:0;font-size:12px;color:#454544;font-weight:700;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.dhx_left_btn_set{margin-left:20px}.dhx_right_btn_set{margin-right:20px}.dhx_save_btn_set{border:1px solid #22A1BC;color:#fff;text-shadow:0 -1px 0 #6f6f6f;background-color:#22A1BC}.dhx_btn_set,.dhx_cancel_btn_set{border:1px solid #CECECE}.dhx_delete_btn_set{border:1px solid #FF8831;background-color:#FF8831;color:#fff;text-shadow:0 -1px 0 #93755f}.dhx_cal_ltitle{height:30px;line-height:30px;border-bottom:1px solid #CECECE}.dhx_cal_ltitle span{float:left}.dhx_cal_light .dhx_title{padding-left:13px}.dhx_mark{display:none}.dhx_time{padding-left:10px}.dhx_close_icon{float:right;width:9px;height:9px;background:url(imgs_dhx_terrace/close_icon.png) center center no-repeat;padding:10px;margin-top:1px}.dhx_cal_light_wide .dhx_cal_ltext.dhx_cal_template{line-height:22px}.dhx_cal_ltext textarea{line-height:20px;box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid #CECECE;background-color:#F9F9F9}.dhtmlx_modal_box{background:#fff;width:330px}.dhtmlx_popup_controls{padding-bottom:9px}.dhtmlx_popup_button,.dhtmlx_popup_button div,.dhtmlx_popup_button div:active,.dhtmlx_popup_button:active{color:#444;background:#fff;box-shadow:none}.dhtmlx_popup_button.dhtmlx_ok_button{border:1px solid #22A1BC;background-color:#22A1BC}.dhtmlx_popup_button.dhtmlx_ok_button div{background:#22A1BC;border:1px solid #22A1BC;color:#fff;text-shadow:0 -1px 0 #6f6f6f}.dhx_cal_container.dhx_mini_calendar{box-sizing:border-box;border:1px solid #CECECE;box-shadow:2px 2px 5px #CCC;border-radius:3px}.dhx_mini_calendar .dhx_year_month{border:1px solid #CECECE;font-family:Arial}.dhx_mini_calendar .dhx_month_body,.dhx_mini_calendar .dhx_month_head,.dhx_mini_calendar .dhx_scale_bar,.dhx_mini_calendar .dhx_year_body,.dhx_mini_calendar .dhx_year_month{border-color:transparent}.dhx_mini_calendar .dhx_year_body{padding-top:1px}.dhx_mini_calendar .dhx_scale_bar{border-width:0}.dhx_mini_calendar .dhx_year_week{border-bottom:1px solid #CECECE;padding-top:1px}.dhx_mini_calendar .dhx_month_head{padding-right:0;text-align:center}.dhx_mini_calendar .dhx_cal_next_button,.dhx_mini_calendar .dhx_cal_prev_button{border:0;height:20px}.dhx_cal_navline div.dhx_minical_icon{left:210px;top:14px;width:30px;height:30px;background:url(imgs_dhx_terrace/calendar.gif) 3px 5px no-repeat}.dhx_cal_event_line .dhx_event_resize{background:url(imgs_dhx_terrace/resize_dots.png) repeat-y}.dhx_matrix_cell,.dhx_matrix_scell{border-bottom:1px solid #CECECE;border-right:1px solid #CECECE}.dhx_cal_header div div{border-left:1px solid #CECECE}.dhx_matrix_scell.folder{border-right:0}.dhx_second_scale_bar{border-bottom:1px solid #CECECE}.dhx_repeat_divider{border-left:1px solid #CECECE}.dhx_custom_button{background-color:#fff;border:1px solid #CECECE;color:#747473}.dhx_cal_light_wide .dhx_custom_button{margin-top:6px}.dhx_custom_button_recurring{background-image:url(imgs_dhx_terrace/but_repeat.gif)}.dhx_agenda_line div,.dhx_v_border{border-right:1px solid #CECECE}.dhx_year_month{border:1px solid #CECECE}.dhx_scale_bar_last{border-right:1px solid #CECECE}.dhx_year_body{border-left:1px solid #CECECE}.dhx_expand_icon{top:-3px}.dhx_scale_bar .dhx_cal_next_button,.dhx_scale_bar .dhx_cal_prev_button{width:20px;height:20px;top:0!important;border:0}.dhx_scale_bar .dhx_cal_next_button{right:1px!important;border-left:1px solid #CECECE}.dhx_scale_bar .dhx_cal_prev_button{left:1px!important;border-right:1px solid #CECECE}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border:0}.dhx_map_line .headline_date{border-right:1px solid #CECECE}.dhtmlXTooltip.tooltip{border-left:1px solid #CECECE;border-top:1px solid #CECECE;color:#747473;font-size:12px;line-height:16px}.dhx_wa_scale_bar{border-top:1px solid #CECECE;border-bottom:1px solid #CECECE}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px solid #CECECE}.dhx_wa_ev_body{border-bottom:1px solid #CECECE}.dhx_wa_scale_bar{background-color:#f0ede7}.dhx_wa_ev_body.dhx_cal_event_selected{background-color:#fff3a1;color:#362d26}.dhx_wa_dnd{background-color:#fddb93!important;color:#747473!important;border:1px solid #ccb177}.dhx_text_disabled{color:#2E2E2E}.dhx_cal_ltext .dhx_text_disabled{line-height:22px}.dhx_grid_v_border{border-right-color:#CECECE}.dhx_month_body_border,.dhx_month_head_border,.dhx_scale_bar_border,.dhx_scale_hour_border{border-left:1px solid #CECECE}.dhx_cal_quick_info{background:rgba(50,50,50,.5)}.dhx_qi_big_icon{background:#1796b0;color:#fff}.dhx_cal_navline .dhx_cal_export{width:32px;height:32px;margin:2px;cursor:pointer;top:12px}.dhx_cal_navline .dhx_cal_export.pdf{left:auto;right:249px;background-image:url(imgs_dhx_terrace/export_pdf.png)}.dhx_cal_navline .dhx_cal_export.ical{left:auto;right:210px;background-image:url(imgs_dhx_terrace/export_ical.png)}.dhx_mini_calendar{padding:5px}.dhx_mini_calendar .dhx_calendar_click,.dhx_mini_calendar .dhx_year_event{border-radius:7px}.dhx_mini_calendar .dhx_month_head{margin:2px}.dhx_mini_calendar .dhx_year_month{line-height:20px;height:25px;font-size:14px}.dhx_mini_calendar .dhx_cal_next_button,.dhx_mini_calendar .dhx_cal_prev_button{top:8px!important}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.xml
new file mode 100644
index 0000000000..15c5da9771
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.js
new file mode 100644
index 0000000000..892ef64163
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.js
@@ -0,0 +1,318 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+function dtmlXMLLoaderObject(e,t,i,s){return this.xmlDoc="","undefined"!=typeof i?this.async=i:this.async=!0,this.onloadAction=e||null,this.mainObject=t||null,this.waitCall=null,this.rSeed=s||!1,this}function callerFunction(e,t){return this.handler=function(i){return i||(i=window.event),e(i,t),!0},this.handler}function getAbsoluteLeft(e){return getOffset(e).left}function getAbsoluteTop(e){return getOffset(e).top}function getOffsetSum(e){for(var t=0,i=0;e;)t+=parseInt(e.offsetTop),i+=parseInt(e.offsetLeft),
+e=e.offsetParent;return{top:t,left:i}}function getOffsetRect(e){var t=e.getBoundingClientRect(),i=document.body,s=document.documentElement,a=window.pageYOffset||s.scrollTop||i.scrollTop,n=window.pageXOffset||s.scrollLeft||i.scrollLeft,r=s.clientTop||i.clientTop||0,d=s.clientLeft||i.clientLeft||0,o=t.top+a-r,l=t.left+n-d;return{top:Math.round(o),left:Math.round(l)}}function getOffset(e){return e.getBoundingClientRect?getOffsetRect(e):getOffsetSum(e)}function convertStringToBoolean(e){switch("string"==typeof e&&(e=e.toLowerCase()),
+e){case"1":case"true":case"yes":case"y":case 1:case!0:return!0;default:return!1}}function getUrlSymbol(e){return-1!=e.indexOf("?")?"&":"?"}function dhtmlDragAndDropObject(){return window.dhtmlDragAndDrop?window.dhtmlDragAndDrop:(this.lastLanding=0,this.dragNode=0,this.dragStartNode=0,this.dragStartObject=0,this.tempDOMU=null,this.tempDOMM=null,this.waitDrag=0,window.dhtmlDragAndDrop=this,this)}function _dhtmlxError(e,t,i){return this.catches||(this.catches=[]),this}function dhtmlXHeir(e,t){for(var i in t)"function"==typeof t[i]&&(e[i]=t[i]);
+
+return e}function dataProcessor(e){return this.serverProcessor=e,this.action_param="!nativeeditor_status",this.object=null,this.updatedRows=[],this.autoUpdate=!0,this.updateMode="cell",this._tMode="GET",this.post_delim="_",this._waitMode=0,this._in_progress={},this._invalid={},this.mandatoryFields=[],this.messages=[],this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",
+error:"color:red;",clear:"font-weight:normal;text-decoration:none;"},this.enableUTFencoding(!0),dhtmlxEventable(this),this}window.dhtmlXScheduler=window.scheduler={version:"4.3.1"},window.dhtmlx||(dhtmlx=function(e){for(var t in e)dhtmlx[t]=e[t];return dhtmlx}),dhtmlx.extend_api=function(e,t,i){var s=window[e];s&&(window[e]=function(e){var i;if(e&&"object"==typeof e&&!e.tagName){i=s.apply(this,t._init?t._init(e):arguments);for(var a in dhtmlx)t[a]&&this[t[a]](dhtmlx[a]);for(var a in e)t[a]?this[t[a]](e[a]):0===a.indexOf("on")&&this.attachEvent(a,e[a]);
+
+}else i=s.apply(this,arguments);return t._patch&&t._patch(this),i||this},window[e].prototype=s.prototype,i&&dhtmlXHeir(window[e].prototype,i))},dhtmlxAjax={get:function(e,t){var i=new dtmlXMLLoaderObject(!0);return i.async=arguments.length<3,i.waitCall=t,i.loadXML(e),i},post:function(e,t,i){var s=new dtmlXMLLoaderObject(!0);return s.async=arguments.length<4,s.waitCall=i,s.loadXML(e,!0,t),s},getSync:function(e){return this.get(e,null,!0)},postSync:function(e,t){return this.post(e,t,null,!0)}},dtmlXMLLoaderObject.count=0,
+dtmlXMLLoaderObject.prototype.waitLoadFunction=function(e){var t=!0;return this.check=function(){if(e&&e.onloadAction&&(!e.xmlDoc.readyState||4==e.xmlDoc.readyState)){if(!t)return;t=!1,dtmlXMLLoaderObject.count++,"function"==typeof e.onloadAction&&e.onloadAction(e.mainObject,null,null,null,e),e.waitCall&&(e.waitCall.call(this,e),e.waitCall=null)}},this.check},dtmlXMLLoaderObject.prototype.getXMLTopNode=function(e,t){var i;if(this.xmlDoc.responseXML){var s=this.xmlDoc.responseXML.getElementsByTagName(e);
+
+if(0===s.length&&-1!=e.indexOf(":"))var s=this.xmlDoc.responseXML.getElementsByTagName(e.split(":")[1]);i=s[0]}else i=this.xmlDoc.documentElement;if(i)return this._retry=!1,i;if(!this._retry&&_isIE){this._retry=!0;var t=this.xmlDoc;return this.loadXMLString(this.xmlDoc.responseText.replace(/^[\s]+/,""),!0),this.getXMLTopNode(e,t)}return dhtmlxError.throwError("LoadXML","Incorrect XML",[t||this.xmlDoc,this.mainObject]),document.createElement("DIV")},dtmlXMLLoaderObject.prototype.loadXMLString=function(e,t){
+if(_isIE)this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM"),this.xmlDoc.async=this.async,this.xmlDoc.onreadystatechange=function(){},this.xmlDoc.loadXML(e);else{var i=new DOMParser;this.xmlDoc=i.parseFromString(e,"text/xml")}t||(this.onloadAction&&this.onloadAction(this.mainObject,null,null,null,this),this.waitCall&&(this.waitCall(),this.waitCall=null))},dtmlXMLLoaderObject.prototype.loadXML=function(e,t,i,s){this.rSeed&&(e+=(-1!=e.indexOf("?")?"&":"?")+"a_dhx_rSeed="+(new Date).valueOf()),this.filePath=e,
+!_isIE&&window.XMLHttpRequest?this.xmlDoc=new XMLHttpRequest:this.xmlDoc=new ActiveXObject("Microsoft.XMLHTTP"),this.async&&(this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this)),"string"==typeof t?this.xmlDoc.open(t,e,this.async):this.xmlDoc.open(t?"POST":"GET",e,this.async),s?(this.xmlDoc.setRequestHeader("User-Agent","dhtmlxRPC v0.1 ("+navigator.userAgent+")"),this.xmlDoc.setRequestHeader("Content-type","text/xml")):t&&this.xmlDoc.setRequestHeader("Content-type","application/x-www-form-urlencoded"),
+this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest"),this.xmlDoc.send(null||i),this.async||new this.waitLoadFunction(this)()},dtmlXMLLoaderObject.prototype.destructor=function(){return this._filterXPath=null,this._getAllNamedChilds=null,this._retry=null,this.async=null,this.rSeed=null,this.filePath=null,this.onloadAction=null,this.mainObject=null,this.xmlDoc=null,this.doXPath=null,this.doXPathOpera=null,this.doXSLTransToObject=null,this.doXSLTransToString=null,this.loadXML=null,this.loadXMLString=null,
+this.doSerialization=null,this.xmlNodeToJSON=null,this.getXMLTopNode=null,this.setXSLParamValue=null,null},dtmlXMLLoaderObject.prototype.xmlNodeToJSON=function(e){for(var t={},i=0;i<e.attributes.length;i++)t[e.attributes[i].name]=e.attributes[i].value;t._tagvalue=e.firstChild?e.firstChild.nodeValue:"";for(var i=0;i<e.childNodes.length;i++){var s=e.childNodes[i].tagName;s&&(t[s]||(t[s]=[]),t[s].push(this.xmlNodeToJSON(e.childNodes[i])))}return t},dhtmlDragAndDropObject.prototype.removeDraggableItem=function(e){
+e.onmousedown=null,e.dragStarter=null,e.dragLanding=null},dhtmlDragAndDropObject.prototype.addDraggableItem=function(e,t){e.onmousedown=this.preCreateDragCopy,e.dragStarter=t,this.addDragLanding(e,t)},dhtmlDragAndDropObject.prototype.addDragLanding=function(e,t){e.dragLanding=t},dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e){return!e&&!window.event||2!=(e||event).button?window.dhtmlDragAndDrop.waitDrag?(window.dhtmlDragAndDrop.waitDrag=0,document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU,
+document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM,!1):(window.dhtmlDragAndDrop.dragNode&&window.dhtmlDragAndDrop.stopDrag(e),window.dhtmlDragAndDrop.waitDrag=1,window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup,window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove,window.dhtmlDragAndDrop.dragStartNode=this,window.dhtmlDragAndDrop.dragStartObject=this.dragStarter,document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy,document.body.onmousemove=window.dhtmlDragAndDrop.callDrag,
+window.dhtmlDragAndDrop.downtime=(new Date).valueOf(),e&&e.preventDefault?(e.preventDefault(),!1):!1):void 0},dhtmlDragAndDropObject.prototype.callDrag=function(e){e||(e=window.event);var t=window.dhtmlDragAndDrop;if(!((new Date).valueOf()-t.downtime<100)){if(!t.dragNode){if(!t.waitDrag)return t.stopDrag(e,!0);if(t.dragNode=t.dragStartObject._createDragNode(t.dragStartNode,e),!t.dragNode)return t.stopDrag();t.dragNode.onselectstart=function(){return!1},t.gldragNode=t.dragNode,document.body.appendChild(t.dragNode),
+document.body.onmouseup=t.stopDrag,t.waitDrag=0,t.dragNode.pWindow=window,t.initFrameRoute()}if(t.dragNode.parentNode!=window.document.body&&t.gldragNode){var i=t.gldragNode;t.gldragNode.old&&(i=t.gldragNode.old),i.parentNode.removeChild(i);var s=t.dragNode.pWindow;if(i.pWindow&&i.pWindow.dhtmlDragAndDrop.lastLanding&&i.pWindow.dhtmlDragAndDrop.lastLanding.dragLanding._dragOut(i.pWindow.dhtmlDragAndDrop.lastLanding),_isIE){var a=document.createElement("Div");a.innerHTML=t.dragNode.outerHTML,t.dragNode=a.childNodes[0];
+
+}else t.dragNode=t.dragNode.cloneNode(!0);t.dragNode.pWindow=window,t.gldragNode.old=t.dragNode,document.body.appendChild(t.dragNode),s.dhtmlDragAndDrop.dragNode=t.dragNode}t.dragNode.style.left=e.clientX+15+(t.fx?-1*t.fx:0)+(document.body.scrollLeft||document.documentElement.scrollLeft)+"px",t.dragNode.style.top=e.clientY+3+(t.fy?-1*t.fy:0)+(document.body.scrollTop||document.documentElement.scrollTop)+"px";var n;n=e.srcElement?e.srcElement:e.target,t.checkLanding(n,e)}},dhtmlDragAndDropObject.prototype.calculateFramePosition=function(e){
+if(window.name){for(var t=parent.frames[window.name].frameElement.offsetParent,i=0,s=0;t;)i+=t.offsetLeft,s+=t.offsetTop,t=t.offsetParent;if(parent.dhtmlDragAndDrop){var a=parent.dhtmlDragAndDrop.calculateFramePosition(1);i+=1*a.split("_")[0],s+=1*a.split("_")[1]}if(e)return i+"_"+s;this.fx=i,this.fy=s}return"0_0"},dhtmlDragAndDropObject.prototype.checkLanding=function(e,t){e&&e.dragLanding?(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding),this.lastLanding=e,this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding,this.dragStartNode,t.clientX,t.clientY,t),
+this.lastLanding_scr=_isIE?t.srcElement:t.target):e&&"BODY"!=e.tagName?this.checkLanding(e.parentNode,t):(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding,t.clientX,t.clientY,t),this.lastLanding=0,this._onNotFound&&this._onNotFound())},dhtmlDragAndDropObject.prototype.stopDrag=function(e,t){var i=window.dhtmlDragAndDrop;if(!t){i.stopFrameRoute();var s=i.lastLanding;i.lastLanding=null,s&&s.dragLanding._drag(i.dragStartNode,i.dragStartObject,s,_isIE?event.srcElement:e.target);
+
+}i.lastLanding=null,i.dragNode&&i.dragNode.parentNode==document.body&&i.dragNode.parentNode.removeChild(i.dragNode),i.dragNode=0,i.gldragNode=0,i.fx=0,i.fy=0,i.dragStartNode=0,i.dragStartObject=0,document.body.onmouseup=i.tempDOMU,document.body.onmousemove=i.tempDOMM,i.tempDOMU=null,i.tempDOMM=null,i.waitDrag=0},dhtmlDragAndDropObject.prototype.stopFrameRoute=function(e){e&&window.dhtmlDragAndDrop.stopDrag(1,1);for(var t=0;t<window.frames.length;t++)try{window.frames[t]!=e&&window.frames[t].dhtmlDragAndDrop&&window.frames[t].dhtmlDragAndDrop.stopFrameRoute(window);
+
+}catch(i){}try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=e&&parent.dhtmlDragAndDrop.stopFrameRoute(window)}catch(i){}},dhtmlDragAndDropObject.prototype.initFrameRoute=function(e,t){e&&(window.dhtmlDragAndDrop.preCreateDragCopy(),window.dhtmlDragAndDrop.dragStartNode=e.dhtmlDragAndDrop.dragStartNode,window.dhtmlDragAndDrop.dragStartObject=e.dhtmlDragAndDrop.dragStartObject,window.dhtmlDragAndDrop.dragNode=e.dhtmlDragAndDrop.dragNode,window.dhtmlDragAndDrop.gldragNode=e.dhtmlDragAndDrop.dragNode,
+window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag,window.waitDrag=0,!_isIE&&t&&(!_isFF||_FFrv<1.8)&&window.dhtmlDragAndDrop.calculateFramePosition());try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=e&&parent.dhtmlDragAndDrop.initFrameRoute(window)}catch(i){}for(var s=0;s<window.frames.length;s++)try{window.frames[s]!=e&&window.frames[s].dhtmlDragAndDrop&&window.frames[s].dhtmlDragAndDrop.initFrameRoute(window,!e||t?1:0)}catch(i){}},_isFF=!1,_isIE=!1,_isOpera=!1,_isKHTML=!1,_isMacOS=!1,
+_isChrome=!1,_FFrv=!1,_KHTMLrv=!1,_OperaRv=!1,-1!=navigator.userAgent.indexOf("Macintosh")&&(_isMacOS=!0),navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(_isChrome=!0),-1!=navigator.userAgent.indexOf("Safari")||-1!=navigator.userAgent.indexOf("Konqueror")?(_KHTMLrv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari")+7,5)),_KHTMLrv>525?(_isFF=!0,_FFrv=1.9):_isKHTML=!0):-1!=navigator.userAgent.indexOf("Opera")?(_isOpera=!0,_OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Opera")+6,3))):-1!=navigator.appName.indexOf("Microsoft")?(_isIE=!0,
+-1==navigator.appVersion.indexOf("MSIE 8.0")&&-1==navigator.appVersion.indexOf("MSIE 9.0")&&-1==navigator.appVersion.indexOf("MSIE 10.0")||"BackCompat"==document.compatMode||(_isIE=8)):"Netscape"==navigator.appName&&-1!=navigator.userAgent.indexOf("Trident")?_isIE=8:(_isFF=!0,_FFrv=parseFloat(navigator.userAgent.split("rv:")[1])),dtmlXMLLoaderObject.prototype.doXPath=function(e,t,i,s){if(_isKHTML||!_isIE&&!window.XPathResult)return this.doXPathOpera(e,t);if(_isIE)return t||(t=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML),
+t||dhtmlxError.throwError("LoadXML","Incorrect XML",[t||this.xmlDoc,this.mainObject]),i&&t.setProperty("SelectionNamespaces","xmlns:xsl='"+i+"'"),"single"==s?t.selectSingleNode(e):t.selectNodes(e)||new Array(0);var a=t;t||(t=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML),t||dhtmlxError.throwError("LoadXML","Incorrect XML",[t||this.xmlDoc,this.mainObject]),-1!=t.nodeName.indexOf("document")?a=t:(a=t,t=t.ownerDocument);var n=XPathResult.ANY_TYPE;"single"==s&&(n=XPathResult.FIRST_ORDERED_NODE_TYPE);
+
+var r=[],d=t.evaluate(e,a,function(e){return i},n,null);if(n==XPathResult.FIRST_ORDERED_NODE_TYPE)return d.singleNodeValue;for(var o=d.iterateNext();o;)r[r.length]=o,o=d.iterateNext();return r},_dhtmlxError.prototype.catchError=function(e,t){this.catches[e]=t},_dhtmlxError.prototype.throwError=function(e,t,i){return this.catches[e]?this.catches[e](e,t,i):this.catches.ALL?this.catches.ALL(e,t,i):(window.alert("Error type: "+arguments[0]+"\nDescription: "+arguments[1]),null)},window.dhtmlxError=new _dhtmlxError,
+dtmlXMLLoaderObject.prototype.doXPathOpera=function(e,t){var i=e.replace(/[\/]+/gi,"/").split("/"),s=null,a=1;if(!i.length)return[];if("."==i[0])s=[t];else{if(""!==i[0])return[];s=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(i[a].replace(/\[[^\]]*\]/g,"")),a++}for(a;a<i.length;a++)s=this._getAllNamedChilds(s,i[a]);return-1!=i[a-1].indexOf("[")&&(s=this._filterXPath(s,i[a-1])),s},dtmlXMLLoaderObject.prototype._filterXPath=function(e,t){for(var i=[],t=t.replace(/[^\[]*\[\@/g,"").replace(/[\[\]\@]*/g,""),s=0;s<e.length;s++)e[s].getAttribute(t)&&(i[i.length]=e[s]);
+
+return i},dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(e,t){var i=[];_isKHTML&&(t=t.toUpperCase());for(var s=0;s<e.length;s++)for(var a=0;a<e[s].childNodes.length;a++)_isKHTML?e[s].childNodes[a].tagName&&e[s].childNodes[a].tagName.toUpperCase()==t&&(i[i.length]=e[s].childNodes[a]):e[s].childNodes[a].tagName==t&&(i[i.length]=e[s].childNodes[a]);return i},"undefined"==typeof window.dhtmlxEvent&&(window.dhtmlxEvent=function(e,t,i){e.addEventListener?e.addEventListener(t,i,!1):e.attachEvent&&e.attachEvent("on"+t,i);
+
+}),dtmlXMLLoaderObject.prototype.xslDoc=null,dtmlXMLLoaderObject.prototype.setXSLParamValue=function(e,t,i){i||(i=this.xslDoc),i.responseXML&&(i=i.responseXML);var s=this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+e+"']",i,"http://www.w3.org/1999/XSL/Transform","single");s&&(s.firstChild.nodeValue=t)},dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(e,t){e||(e=this.xslDoc),e.responseXML&&(e=e.responseXML),t||(t=this.xmlDoc),t.responseXML&&(t=t.responseXML);var i;if(_isIE){i=new ActiveXObject("Msxml2.DOMDocument.3.0");
+
+try{t.transformNodeToObject(e,i)}catch(s){i=t.transformNode(e)}}else this.XSLProcessor||(this.XSLProcessor=new XSLTProcessor,this.XSLProcessor.importStylesheet(e)),i=this.XSLProcessor.transformToDocument(t);return i},dtmlXMLLoaderObject.prototype.doXSLTransToString=function(e,t){var i=this.doXSLTransToObject(e,t);return"string"==typeof i?i:this.doSerialization(i)},dtmlXMLLoaderObject.prototype.doSerialization=function(e){if(e||(e=this.xmlDoc),e.responseXML&&(e=e.responseXML),_isIE)return e.xml;var t=new XMLSerializer;
+
+return t.serializeToString(e)},dhtmlxEventable=function(obj){obj.attachEvent=function(e,t,i){return e="ev_"+e.toLowerCase(),this[e]||(this[e]=new this.eventCatcher(i||this)),e+":"+this[e].addEvent(t)},obj.callEvent=function(e,t){return e="ev_"+e.toLowerCase(),this[e]?this[e].apply(this,t):!0},obj.checkEvent=function(e){return!!this["ev_"+e.toLowerCase()]},obj.eventCatcher=function(obj){var dhx_catch=[],z=function(){for(var e=!0,t=0;t<dhx_catch.length;t++)if(dhx_catch[t]){var i=dhx_catch[t].apply(obj,arguments);
+
+e=e&&i}return e};return z.addEvent=function(ev){return"function"!=typeof ev&&(ev=eval(ev)),ev?dhx_catch.push(ev)-1:!1},z.removeEvent=function(e){dhx_catch[e]=null},z},obj.detachEvent=function(e){if(e){var t=e.split(":");this[t[0]].removeEvent(t[1])}},obj.detachAllEvents=function(){for(var e in this)0===e.indexOf("ev_")&&(this.detachEvent(e),this[e]=null)},obj=null},window.dhtmlx||(window.dhtmlx={}),function(){function e(e,t){var s=e.callback;i(!1),e.box.parentNode.removeChild(e.box),c=e.box=null,
+s&&s(t)}function t(t){if(c){t=t||event;var i=t.which||event.keyCode;return dhtmlx.message.keyboard&&((13==i||32==i)&&e(c,!0),27==i&&e(c,!1)),t.preventDefault&&t.preventDefault(),!(t.cancelBubble=!0)}}function i(e){i.cover||(i.cover=document.createElement("DIV"),i.cover.onkeydown=t,i.cover.className="dhx_modal_cover",document.body.appendChild(i.cover));document.body.scrollHeight;i.cover.style.display=e?"inline-block":"none"}function s(e,t,i){var s=i?i:e||"",a="dhtmlx_"+s.toLowerCase().replace(/ /g,"_")+"_button";
+
+return"<div class='dhtmlx_popup_button "+a+"' result='"+t+"' ><div>"+e+"</div></div>"}function a(e){u.area||(u.area=document.createElement("DIV"),u.area.className="dhtmlx_message_area",u.area.style[u.position]="5px",document.body.appendChild(u.area)),u.hide(e.id);var t=document.createElement("DIV");return t.innerHTML="<div>"+e.text+"</div>",t.className="dhtmlx-info dhtmlx-"+e.type,t.onclick=function(){u.hide(e.id),e=null},"bottom"==u.position&&u.area.firstChild?u.area.insertBefore(t,u.area.firstChild):u.area.appendChild(t),
+e.expire>0&&(u.timers[e.id]=window.setTimeout(function(){u.hide(e.id)},e.expire)),u.pull[e.id]=t,t=null,e.id}function n(t,i,a){var n=document.createElement("DIV");n.className=" dhtmlx_modal_box dhtmlx-"+t.type,n.setAttribute("dhxbox",1);var r="";if(t.width&&(n.style.width=t.width),t.height&&(n.style.height=t.height),t.title&&(r+='<div class="dhtmlx_popup_title">'+t.title+"</div>"),r+='<div class="dhtmlx_popup_text"><span>'+(t.content?"":t.text)+'</span></div><div  class="dhtmlx_popup_controls">',
+i){var d=t.ok||scheduler.locale.labels.message_ok;void 0===d&&(d="OK"),r+=s(d,!0,"ok")}if(a){var o=t.cancel||scheduler.locale.labels.message_cancel;void 0===o&&(o="Cancel"),r+=s(o,!1,"cancel")}if(t.buttons)for(var l=0;l<t.buttons.length;l++)r+=s(t.buttons[l],l);if(r+="</div>",n.innerHTML=r,t.content){var h=t.content;"string"==typeof h&&(h=document.getElementById(h)),"none"==h.style.display&&(h.style.display=""),n.childNodes[t.title?1:0].appendChild(h)}return n.onclick=function(i){i=i||event;var s=i.target||i.srcElement;
+
+if(s.className||(s=s.parentNode),"dhtmlx_popup_button"==s.className.split(" ")[0]){var a=s.getAttribute("result");a="true"==a||("false"==a?!1:a),e(t,a)}},t.box=n,(i||a)&&(c=t),n}function r(e,s,a){var r=e.tagName?e:n(e,s,a);e.hidden||i(!0),document.body.appendChild(r);var d=Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth)-r.offsetWidth)/2)),o=Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight)-r.offsetHeight)/2));return"top"==e.position?r.style.top="-3px":r.style.top=o+"px",
+r.style.left=d+"px",r.onkeydown=t,r.focus(),e.hidden&&dhtmlx.modalbox.hide(r),r}function d(e){return r(e,!0,!1)}function o(e){return r(e,!0,!0)}function l(e){return r(e)}function h(e,t,i){return"object"!=typeof e&&("function"==typeof t&&(i=t,t=""),e={text:e,type:t,callback:i}),e}function _(e,t,i,s){return"object"!=typeof e&&(e={text:e,type:t,expire:i,id:s}),e.id=e.id||u.uid(),e.expire=e.expire||u.expire,e}var c=null;document.attachEvent?document.attachEvent("onkeydown",t):document.addEventListener("keydown",t,!0),
+dhtmlx.alert=function(){var e=h.apply(this,arguments);return e.type=e.type||"confirm",d(e)},dhtmlx.confirm=function(){var e=h.apply(this,arguments);return e.type=e.type||"alert",o(e)},dhtmlx.modalbox=function(){var e=h.apply(this,arguments);return e.type=e.type||"alert",l(e)},dhtmlx.modalbox.hide=function(e){for(;e&&e.getAttribute&&!e.getAttribute("dhxbox");)e=e.parentNode;e&&(e.parentNode.removeChild(e),i(!1))};var u=dhtmlx.message=function(e,t,i,s){e=_.apply(this,arguments),e.type=e.type||"info";
+
+var n=e.type.split("-")[0];switch(n){case"alert":return d(e);case"confirm":return o(e);case"modalbox":return l(e);default:return a(e)}};u.seed=(new Date).valueOf(),u.uid=function(){return u.seed++},u.expire=4e3,u.keyboard=!0,u.position="top",u.pull={},u.timers={},u.hideAll=function(){for(var e in u.pull)u.hide(e)},u.hide=function(e){var t=u.pull[e];t&&t.parentNode&&(window.setTimeout(function(){t.parentNode.removeChild(t),t=null},2e3),t.className+=" hidden",u.timers[e]&&window.clearTimeout(u.timers[e]),
+delete u.pull[e])}}(),dataProcessor.prototype={setTransactionMode:function(e,t){this._tMode=e,this._tSend=t,"REST"==e&&(this._tSend=!1,this._endnm=!0)},escape:function(e){return this._utf?encodeURIComponent(e):escape(e)},enableUTFencoding:function(e){this._utf=convertStringToBoolean(e)},setDataColumns:function(e){this._columns="string"==typeof e?e.split(","):e},getSyncState:function(){return!this.updatedRows.length},enableDataNames:function(e){this._endnm=convertStringToBoolean(e)},enablePartialDataSend:function(e){
+this._changed=convertStringToBoolean(e)},setUpdateMode:function(e,t){this.autoUpdate="cell"==e,this.updateMode=e,this.dnd=t},ignore:function(e,t){this._silent_mode=!0,e.call(t||window),this._silent_mode=!1},setUpdated:function(e,t,i){if(!this._silent_mode){var s=this.findRow(e);i=i||"updated";var a=this.obj.getUserData(e,this.action_param);a&&"updated"==i&&(i=a),t?(this.set_invalid(e,!1),this.updatedRows[s]=e,this.obj.setUserData(e,this.action_param,i),this._in_progress[e]&&(this._in_progress[e]="wait")):this.is_invalid(e)||(this.updatedRows.splice(s,1),
+this.obj.setUserData(e,this.action_param,"")),t||this._clearUpdateFlag(e),this.markRow(e,t,i),t&&this.autoUpdate&&this.sendData(e)}},_clearUpdateFlag:function(e){},markRow:function(e,t,i){var s="",a=this.is_invalid(e);if(a&&(s=this.styles[a],t=!0),this.callEvent("onRowMark",[e,t,i,a])&&(s=this.styles[t?i:"clear"]+s,this.obj[this._methods[0]](e,s),a&&a.details)){s+=this.styles[a+"_cell"];for(var n=0;n<a.details.length;n++)a.details[n]&&this.obj[this._methods[1]](e,n,s)}},getState:function(e){return this.obj.getUserData(e,this.action_param);
+
+},is_invalid:function(e){return this._invalid[e]},set_invalid:function(e,t,i){i&&(t={value:t,details:i,toString:function(){return this.value.toString()}}),this._invalid[e]=t},checkBeforeUpdate:function(e){return!0},sendData:function(e){return!this._waitMode||"tree"!=this.obj.mytype&&!this.obj._h2?(this.obj.editStop&&this.obj.editStop(),"undefined"==typeof e||this._tSend?this.sendAllData():this._in_progress[e]?!1:(this.messages=[],!this.checkBeforeUpdate(e)&&this.callEvent("onValidationError",[e,this.messages])?!1:void this._beforeSendData(this._getRowData(e),e))):void 0;
+
+},_beforeSendData:function(e,t){return this.callEvent("onBeforeUpdate",[t,this.getState(t),e])?void this._sendData(e,t):!1},serialize:function(e,t){if("string"==typeof e)return e;if("undefined"!=typeof t)return this.serialize_one(e,"");var i=[],s=[];for(var a in e)e.hasOwnProperty(a)&&(i.push(this.serialize_one(e[a],a+this.post_delim)),s.push(a));return i.push("ids="+this.escape(s.join(","))),dhtmlx.security_key&&i.push("dhx_security="+dhtmlx.security_key),i.join("&")},serialize_one:function(e,t){
+if("string"==typeof e)return e;var i=[];for(var s in e)if(e.hasOwnProperty(s)){if(("id"==s||s==this.action_param)&&"REST"==this._tMode)continue;i.push(this.escape((t||"")+s)+"="+this.escape(e[s]))}return i.join("&")},_sendData:function(e,t){if(e){if(!this.callEvent("onBeforeDataSending",t?[t,this.getState(t),e]:[null,null,e]))return!1;t&&(this._in_progress[t]=(new Date).valueOf());var i=new dtmlXMLLoaderObject(function(i,s,a,n,r){var d=[];if(t)d.push(t);else if(e)for(var o in e)d.push(o);return i.afterUpdate(i,r,d);
+
+},this,!0),s=this.serverProcessor+(this._user?getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&"):"");if("GET"==this._tMode)i.loadXML(s+(-1!=s.indexOf("?")?"&":"?")+this.serialize(e,t));else if("POST"==this._tMode)i.loadXML(s,!0,this.serialize(e,t));else if("REST"==this._tMode){var a=this.getState(t),n=s.replace(/(\&|\?)editing\=true/,"");"inserted"==a?i.loadXML(n+t,"POST",this.serialize(e,t)):"deleted"==a?i.loadXML(n+t,"DELETE",""):i.loadXML(n+t,"PUT",this.serialize(e,t));
+
+}this._waitMode++}},sendAllData:function(){if(this.updatedRows.length){this.messages=[];for(var e=!0,t=0;t<this.updatedRows.length;t++)e&=this.checkBeforeUpdate(this.updatedRows[t]);if(!e&&!this.callEvent("onValidationError",["",this.messages]))return!1;if(this._tSend)this._sendData(this._getAllData());else for(var t=0;t<this.updatedRows.length;t++)if(!this._in_progress[this.updatedRows[t]]){if(this.is_invalid(this.updatedRows[t]))continue;if(this._beforeSendData(this._getRowData(this.updatedRows[t]),this.updatedRows[t]),
+this._waitMode&&("tree"==this.obj.mytype||this.obj._h2))return}}},_getAllData:function(e){for(var t={},i=!1,s=0;s<this.updatedRows.length;s++){var a=this.updatedRows[s];this._in_progress[a]||this.is_invalid(a)||this.callEvent("onBeforeUpdate",[a,this.getState(a),this._getRowData(a)])&&(t[a]=this._getRowData(a,a+this.post_delim),i=!0,this._in_progress[a]=(new Date).valueOf())}return i?t:null},setVerificator:function(e,t){this.mandatoryFields[e]=t||function(e){return""!==e}},clearVerificator:function(e){
+this.mandatoryFields[e]=!1},findRow:function(e){var t=0;for(t=0;t<this.updatedRows.length&&e!=this.updatedRows[t];t++);return t},defineAction:function(e,t){this._uActions||(this._uActions=[]),this._uActions[e]=t},afterUpdateCallback:function(e,t,i,s){var a=e,n="error"!=i&&"invalid"!=i;if(n||this.set_invalid(e,i),this._uActions&&this._uActions[i]&&!this._uActions[i](s))return delete this._in_progress[a];"wait"!=this._in_progress[a]&&this.setUpdated(e,!1);var r=e;switch(i){case"inserted":case"insert":
+t!=e&&(this.obj[this._methods[2]](e,t),e=t);break;case"delete":case"deleted":return this.obj.setUserData(e,this.action_param,"true_deleted"),this.obj[this._methods[3]](e),delete this._in_progress[a],this.callEvent("onAfterUpdate",[e,i,t,s])}"wait"!=this._in_progress[a]?(n&&this.obj.setUserData(e,this.action_param,""),delete this._in_progress[a]):(delete this._in_progress[a],this.setUpdated(t,!0,this.obj.getUserData(e,this.action_param))),this.callEvent("onAfterUpdate",[r,i,t,s])},afterUpdate:function(e,t,i){
+if(window.JSON)try{var s=JSON.parse(t.xmlDoc.responseText),a=s.action||this.getState(i)||"updated",n=s.sid||i[0],r=s.tid||i[0];return e.afterUpdateCallback(n,r,a,s),void e.finalizeUpdate()}catch(d){}if(t.getXMLTopNode("data"),!t.xmlDoc.responseXML)return this.obj&&this.obj.callEvent&&this.obj.callEvent("onSaveError",[i,t.xmlDoc]),this.cleanUpdate(i);var o=t.doXPath("//data/action");if(!o.length)return this.cleanUpdate(i);for(var l=0;l<o.length;l++){var h=o[l],a=h.getAttribute("type"),n=h.getAttribute("sid"),r=h.getAttribute("tid");
+
+e.afterUpdateCallback(n,r,a,h)}e.finalizeUpdate()},cleanUpdate:function(e){if(e)for(var t=0;t<e.length;t++)delete this._in_progress[e[t]]},finalizeUpdate:function(){this._waitMode&&this._waitMode--,("tree"==this.obj.mytype||this.obj._h2)&&this.updatedRows.length&&this.sendData(),this.callEvent("onAfterUpdateFinish",[]),this.updatedRows.length||this.callEvent("onFullSync",[])},init:function(e){this.obj=e,this.obj._dp_init&&this.obj._dp_init(this)},setOnAfterUpdate:function(e){this.attachEvent("onAfterUpdate",e);
+
+},enableDebug:function(e){},setOnBeforeUpdateHandler:function(e){this.attachEvent("onBeforeDataSending",e)},setAutoUpdate:function(e,t){e=e||2e3,this._user=t||(new Date).valueOf(),this._need_update=!1,this._loader=null,this._update_busy=!1,this.attachEvent("onAfterUpdate",function(e,t,i,s){this.afterAutoUpdate(e,t,i,s)}),this.attachEvent("onFullSync",function(){this.fullSync()});var i=this;window.setInterval(function(){i.loadUpdate()},e)},afterAutoUpdate:function(e,t,i,s){return"collision"==t?(this._need_update=!0,
+!1):!0},fullSync:function(){return this._need_update&&(this._need_update=!1,this.loadUpdate()),!0},getUpdates:function(e,t){return this._update_busy?!1:(this._update_busy=!0,this._loader=this._loader||new dtmlXMLLoaderObject(!0),this._loader.async=!0,this._loader.waitCall=t,void this._loader.loadXML(e))},_v:function(e){return e.firstChild?e.firstChild.nodeValue:""},_a:function(e){for(var t=[],i=0;i<e.length;i++)t[i]=this._v(e[i]);return t},loadUpdate:function(){var e=this,t=this.obj.getUserData(0,"version"),i=this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+t].join("&");
+
+i=i.replace("editing=true&",""),this.getUpdates(i,function(){var t=e._loader.doXPath("//userdata");e.obj.setUserData(0,"version",e._v(t[0]));var i=e._loader.doXPath("//update");if(i.length){e._silent_mode=!0;for(var s=0;s<i.length;s++){var a=i[s].getAttribute("status"),n=i[s].getAttribute("id"),r=i[s].getAttribute("parent");switch(a){case"inserted":e.callEvent("insertCallback",[i[s],n,r]);break;case"updated":e.callEvent("updateCallback",[i[s],n,r]);break;case"deleted":e.callEvent("deleteCallback",[i[s],n,r]);
+
+}}e._silent_mode=!1}e._update_busy=!1,e=null})}},window.dataProcessor&&!dataProcessor.prototype.init_original&&(dataProcessor.prototype.init_original=dataProcessor.prototype.init,dataProcessor.prototype.init=function(e){this.init_original(e),e._dataprocessor=this,this.setTransactionMode("POST",!0),this.serverProcessor+=(-1!=this.serverProcessor.indexOf("?")?"&":"?")+"editing=true"}),dhtmlxError.catchError("LoadXML",function(e,t,i){var s=i[0].responseText;switch(scheduler.config.ajax_error){case"alert":
+window.alert(s);break;case"console":window.console.log(s)}}),dhtmlxEventable(scheduler),scheduler._detachDomEvent=function(e,t,i){e.removeEventListener?e.removeEventListener(t,i,!1):e.detachEvent&&e.detachEvent("on"+t,i)},scheduler._init_once=function(){function e(){return{w:window.innerWidth||document.documentElement.clientWidth,h:window.innerHeight||document.documentElement.clientHeight}}function t(e,t){return e.w==t.w&&e.h==t.h}var i=e();dhtmlxEvent(window,"resize",function(){var s=e();t(i,s)||(window.clearTimeout(scheduler._resize_timer),
+scheduler._resize_timer=window.setTimeout(function(){scheduler.callEvent("onSchedulerResize",[])&&(scheduler.update_view(),scheduler.callEvent("onAfterSchedulerResize",[]))},100)),i=s}),scheduler._init_once=function(){}},scheduler.init=function(e,t,i){t=t||scheduler._currentDate(),i=i||"week",this._obj&&this.unset_actions(),this._obj="string"==typeof e?document.getElementById(e):e,this._skin_init&&scheduler._skin_init(),scheduler.date.init(),this._els=[],this._scroll=!0,this._quirks=_isIE&&"BackCompat"==document.compatMode,
+this._quirks7=_isIE&&-1==navigator.appVersion.indexOf("MSIE 8"),this.get_elements(),this.init_templates(),this.set_actions(),this._init_once(),this._init_touch_events(),this.set_sizes(),scheduler.callEvent("onSchedulerReady",[]),this.setCurrentView(t,i)},scheduler.xy={min_event_height:40,scale_width:50,scroll_width:18,scale_height:20,month_scale_height:20,menu_width:25,margin_top:0,margin_left:0,editor_width:140,month_head_height:22},scheduler.keys={edit_save:13,edit_cancel:27},scheduler.set_sizes=function(){
+var e=this._x=this._obj.clientWidth-this.xy.margin_left,t=this._y=this._obj.clientHeight-this.xy.margin_top,i=this._table_view?0:this.xy.scale_width+this.xy.scroll_width,s=this._table_view?-1:this.xy.scale_width;this.set_xy(this._els.dhx_cal_navline[0],e,this.xy.nav_height,0,0),this.set_xy(this._els.dhx_cal_header[0],e-i,this.xy.scale_height,s,this.xy.nav_height+(this._quirks?-1:1));var a=this._els.dhx_cal_navline[0].offsetHeight;a>0&&(this.xy.nav_height=a);var n=this.xy.scale_height+this.xy.nav_height+(this._quirks?-2:0);
+
+this.set_xy(this._els.dhx_cal_data[0],e,t-(n+2),0,n+2)},scheduler.set_xy=function(e,t,i,s,a){e.style.width=Math.max(0,t)+"px",e.style.height=Math.max(0,i)+"px",arguments.length>3&&(e.style.left=s+"px",e.style.top=a+"px")},scheduler.get_elements=function(){for(var e=this._obj.getElementsByTagName("DIV"),t=0;t<e.length;t++){var i=e[t].className||"",s=e[t].getAttribute("name")||"";i&&(i=i.split(" ")[0]),this._els[i]||(this._els[i]=[]),this._els[i].push(e[t]);var a=scheduler.locale.labels[s||i];"string"!=typeof a&&s&&!e[t].innerHTML&&(a=s.split("_")[0]),
+a&&(e[t].innerHTML=a)}},scheduler.unset_actions=function(){for(var e in this._els)if(this._click[e])for(var t=0;t<this._els[e].length;t++)this._els[e][t].onclick=null;this._obj.onselectstart=null,this._obj.onmousemove=null,this._obj.onmousedown=null,this._obj.onmouseup=null,this._obj.ondblclick=null,this._obj.oncontextmenu=null},scheduler.set_actions=function(){for(var e in this._els)if(this._click[e])for(var t=0;t<this._els[e].length;t++)this._els[e][t].onclick=scheduler._click[e];this._obj.onselectstart=function(e){
+return!1},this._obj.onmousemove=function(e){scheduler._temp_touch_block||scheduler._on_mouse_move(e||event)},this._obj.onmousedown=function(e){scheduler._ignore_next_click||scheduler._on_mouse_down(e||event)},this._obj.onmouseup=function(e){scheduler._ignore_next_click||scheduler._on_mouse_up(e||event)},this._obj.ondblclick=function(e){scheduler._on_dbl_click(e||event)},this._obj.oncontextmenu=function(e){var t=e||event,i=t.target||t.srcElement,s=scheduler.callEvent("onContextMenu",[scheduler._locate_event(i),t]);
+
+return s}},scheduler.select=function(e){this._select_id!=e&&(scheduler._close_not_saved(),this.editStop(!1),this.unselect(),this._select_id=e,this.updateEvent(e))},scheduler.unselect=function(e){if(!e||e==this._select_id){var t=this._select_id;this._select_id=null,t&&this.getEvent(t)&&this.updateEvent(t)}},scheduler.getState=function(){return{mode:this._mode,date:new Date(this._date),min_date:new Date(this._min_date),max_date:new Date(this._max_date),editor_id:this._edit_id,lightbox_id:this._lightbox_id,
+new_event:this._new_event,select_id:this._select_id,expanded:this.expanded,drag_id:this._drag_id,drag_mode:this._drag_mode}},scheduler._click={dhx_cal_data:function(e){if(scheduler._ignore_next_click)return e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,scheduler._ignore_next_click=!1,!1;var t=e?e.target:event.srcElement,i=scheduler._locate_event(t);if(e=e||event,i){if(!scheduler.callEvent("onClick",[i,e])||scheduler.config.readonly)return}else scheduler.callEvent("onEmptyClick",[scheduler.getActionData(e).date,e]);
+
+if(i&&scheduler.config.select){scheduler.select(i);var s=t.className;-1!=s.indexOf("_icon")&&scheduler._click.buttons[s.split(" ")[1].replace("icon_","")](i)}else scheduler._close_not_saved(),(new Date).valueOf()-(scheduler._new_event||0)>500&&scheduler.unselect()},dhx_cal_prev_button:function(){scheduler._click.dhx_cal_next_button(0,-1)},dhx_cal_next_button:function(e,t){scheduler.setCurrentView(scheduler.date.add(scheduler.date[scheduler._mode+"_start"](scheduler._date),t||1,scheduler._mode))},
+dhx_cal_today_button:function(){scheduler.callEvent("onBeforeTodayDisplayed",[])&&scheduler.setCurrentView(scheduler._currentDate())},dhx_cal_tab:function(){var e=this.getAttribute("name"),t=e.substring(0,e.search("_tab"));scheduler.setCurrentView(scheduler._date,t)},buttons:{"delete":function(e){var t=scheduler.locale.labels.confirm_deleting;scheduler._dhtmlx_confirm(t,scheduler.locale.labels.title_confirm_deleting,function(){scheduler.deleteEvent(e)})},edit:function(e){scheduler.edit(e)},save:function(e){
+scheduler.editStop(!0)},details:function(e){scheduler.showLightbox(e)},cancel:function(e){scheduler.editStop(!1)}}},scheduler._dhtmlx_confirm=function(e,t,i){if(!e)return i();var s={text:e};t&&(s.title=t),i&&(s.callback=function(e){e&&i()}),dhtmlx.confirm(s)},scheduler.addEventNow=function(e,t,i){var s={};e&&null!==e.constructor.toString().match(/object/i)&&(s=e,e=null);var a=6e4*(this.config.event_duration||this.config.time_step);e||(e=s.start_date||Math.round(scheduler._currentDate().valueOf()/a)*a);
+
+var n=new Date(e);if(!t){var r=this.config.first_hour;r>n.getHours()&&(n.setHours(r),e=n.valueOf()),t=e.valueOf()+a}var d=new Date(t);n.valueOf()==d.valueOf()&&d.setTime(d.valueOf()+a),s.start_date=s.start_date||n,s.end_date=s.end_date||d,s.text=s.text||this.locale.labels.new_event,s.id=this._drag_id=this.uid(),this._drag_mode="new-size",this._loading=!0,this.addEvent(s),this.callEvent("onEventCreated",[this._drag_id,i]),this._loading=!1,this._drag_event={},this._on_mouse_up(i)},scheduler._on_dbl_click=function(e,t){
+if(t=t||e.target||e.srcElement,!this.config.readonly){var i=(t.className||"").split(" ")[0];switch(i){case"dhx_scale_holder":case"dhx_scale_holder_now":case"dhx_month_body":case"dhx_wa_day_data":if(!scheduler.config.dblclick_create)break;this.addEventNow(this.getActionData(e).date,null,e);break;case"dhx_cal_event":case"dhx_wa_ev_body":case"dhx_agenda_line":case"dhx_grid_event":case"dhx_cal_event_line":case"dhx_cal_event_clear":var s=this._locate_event(t);if(!this.callEvent("onDblClick",[s,e]))return;
+
+this.config.details_on_dblclick||this._table_view||!this.getEvent(s)._timed||!this.config.select?this.showLightbox(s):this.edit(s);break;case"dhx_time_block":case"dhx_cal_container":return;default:var a=this["dblclick_"+i];if(a)a.call(this,e);else if(t.parentNode&&t!=this)return scheduler._on_dbl_click(e,t.parentNode)}}},scheduler._get_column_index=function(e){var t=0;if(this._cols){for(var i=0,s=0;s<this._cols.length&&!i;s++)i=this._cols[s];if(t=i?e/i:0,this._ignores)for(var s=0;t>=s;s++)this._ignores[s]&&t++;
+
+}return t},scheduler._week_indexes_from_pos=function(e){if(this._cols){var t=this._get_column_index(e.x);return e.x=Math.min(this._cols.length-1,Math.max(0,Math.ceil(t)-1)),e.y=Math.max(0,Math.ceil(60*e.y/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step),e}return e},scheduler._mouse_coords=function(e){var t,i=document.body,s=document.documentElement;t=_isIE||!e.pageX&&!e.pageY?{x:e.clientX+(i.scrollLeft||s.scrollLeft||0)-i.clientLeft,y:e.clientY+(i.scrollTop||s.scrollTop||0)-i.clientTop
+}:{x:e.pageX,y:e.pageY},t.x-=getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width),t.y-=getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els.dhx_cal_data[0].scrollTop,t.ev=e;var a=this["mouse_"+this._mode];if(a)return a.call(this,t);if(this._table_view){var n=this._get_column_index(t.x);if(!this._cols||!this._colsS)return t;var r=0;for(r=1;r<this._colsS.heights.length&&!(this._colsS.heights[r]>t.y);r++);t.y=Math.ceil(24*(Math.max(0,n)+7*Math.max(0,r-1))*60/this.config.time_step),
+(scheduler._drag_mode||"month"==this._mode)&&(t.y=24*(Math.max(0,Math.ceil(n)-1)+7*Math.max(0,r-1))*60/this.config.time_step),"move"==this._drag_mode&&scheduler._ignores_detected&&scheduler.config.preserve_length&&(t._ignores=!0,this._drag_event._event_length||(this._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"}))),t.x=0}else t=this._week_indexes_from_pos(t);return t},scheduler._close_not_saved=function(){if((new Date).valueOf()-(scheduler._new_event||0)>500&&scheduler._edit_id){
+var e=scheduler.locale.labels.confirm_closing;scheduler._dhtmlx_confirm(e,scheduler.locale.labels.title_confirm_closing,function(){scheduler.editStop(scheduler.config.positive_closing)}),e&&(this._drag_id=this._drag_pos=this._drag_mode=null)}},scheduler._correct_shift=function(e,t){return e-=6e4*(new Date(scheduler._min_date).getTimezoneOffset()-new Date(e).getTimezoneOffset())*(t?-1:1)},scheduler._is_pos_changed=function(e,t){function i(e,t,i){return!!(Math.abs(e-t)>i)}if(!e||!this._drag_pos)return!0;
+
+var s=100,a=5;return!!(!this._drag_pos.start||+new Date-this._drag_pos.start>s||i(e.x,t.x,a)||i(e.y,t.y,a))},scheduler._on_mouse_move=function(e){if(this._drag_mode){var t=this._mouse_coords(e);if(t.force_redraw||this._is_pos_changed(this._drag_pos,t)){var i,s;if(this._edit_id!=this._drag_id&&this._close_not_saved(),!this._drag_mode)return;if(this._drag_pos=t,this._drag_pos.has_moved=!0,"create"==this._drag_mode){if(this._close_not_saved(),this.unselect(this._select_id),this._loading=!0,i=this._get_date_from_pos(t).valueOf(),
+!this._drag_start){var a=this.callEvent("onBeforeEventCreated",[e,this._drag_id]);if(!a)return;return void(this._drag_start=i)}s=i,s==this._drag_start;var n=new Date(this._drag_start),r=new Date(s);"day"!=this._mode&&"week"!=this._mode||n.getHours()!=r.getHours()||n.getMinutes()!=r.getMinutes()||(r=new Date(this._drag_start+1e3)),this._drag_id=this.uid(),this.addEvent(n,r,this.locale.labels.new_event,this._drag_id,t.fields),this.callEvent("onEventCreated",[this._drag_id,e]),this._loading=!1,this._drag_mode="new-size";
+
+}var d,o=this.getEvent(this._drag_id);if("move"==this._drag_mode)i=this._min_date.valueOf()+6e4*(t.y*this.config.time_step+24*t.x*60-(scheduler._move_pos_shift||0)),!t.custom&&this._table_view&&(i+=1e3*this.date.time_part(o.start_date)),i=this._correct_shift(i),t._ignores&&this.config.preserve_length&&this._table_view?(this.matrix&&(d=this.matrix[this._mode]),d=d||{x_step:1,x_unit:"day"},s=1*i+this._get_fictional_event_length(i,this._drag_event._event_length,d)):s=o.end_date.valueOf()-(o.start_date.valueOf()-i);
+else{if(i=o.start_date.valueOf(),s=o.end_date.valueOf(),this._table_view){var l=this._min_date.valueOf()+t.y*this.config.time_step*6e4+(t.custom?0:864e5);if("month"==this._mode)if(l=this._correct_shift(l,!1),this._drag_from_start){var h=864e5;l<=scheduler.date.date_part(new Date(s+h-1)).valueOf()&&(i=l-h)}else s=l;else t.resize_from_start?i=l:s=l}else s=this.date.date_part(new Date(o.end_date.valueOf()-1)).valueOf()+t.y*this.config.time_step*6e4,this._els.dhx_cal_data[0].style.cursor="s-resize",("week"==this._mode||"day"==this._mode)&&(s=this._correct_shift(s));
+
+if("new-size"==this._drag_mode)if(s<=this._drag_start){var _=t.shift||(this._table_view&&!t.custom?864e5:0);i=s-(t.shift?0:_),s=this._drag_start+(_||6e4*this.config.time_step)}else i=this._drag_start;else i>=s&&(s=i+6e4*this.config.time_step)}var c=new Date(s-1),u=new Date(i);if(scheduler.config.limit_drag_out&&(+u<+scheduler._min_date||+s>+scheduler._max_date)){var g=s-u;+u<+scheduler._min_date?(u=new Date(scheduler._min_date),s=new Date(+u+g)):(s=new Date(scheduler._max_date),u=new Date(+s-g));
+var c=new Date(s-1)}if(!this._table_view&&!scheduler.config.all_timed&&(!scheduler._get_section_view()&&t.x!=this._get_event_sday({start_date:new Date(s),end_date:new Date(s)})||new Date(s).getHours()>=this.config.last_hour)){var g=s-u,h=this._min_date.valueOf()+24*t.x*60*6e4;s=scheduler.date.date_part(new Date(h)),s.setHours(this.config.last_hour),c=new Date(s-1),"move"==this._drag_mode&&(u=new Date(+s-g))}if(this._table_view||c.getDate()==u.getDate()&&c.getHours()<this.config.last_hour||scheduler._allow_dnd)if(o.start_date=u,
+o.end_date=new Date(s),this.config.update_render){var f=scheduler._els.dhx_cal_data[0].scrollTop;this.update_view(),scheduler._els.dhx_cal_data[0].scrollTop=f}else this.updateEvent(this._drag_id);this._table_view&&this.for_rendered(this._drag_id,function(e){e.className+=" dhx_in_move"}),this.callEvent("onEventDrag",[this._drag_id,this._drag_mode,e])}}else if(scheduler.checkEvent("onMouseMove")){var v=this._locate_event(e.target||e.srcElement);this.callEvent("onMouseMove",[v,e])}},scheduler._on_mouse_down=function(e,t){
+if(2!=e.button&&!this.config.readonly&&!this._drag_mode){t=t||e.target||e.srcElement;var i=t.className&&t.className.split(" ")[0];switch(i){case"dhx_cal_event_line":case"dhx_cal_event_clear":this._table_view&&(this._drag_mode="move");break;case"dhx_event_move":case"dhx_wa_ev_body":this._drag_mode="move";break;case"dhx_event_resize":this._drag_mode="resize",(t.className||"").indexOf("dhx_event_resize_end")<0?scheduler._drag_from_start=!0:scheduler._drag_from_start=!1;break;case"dhx_scale_holder":case"dhx_scale_holder_now":
+case"dhx_month_body":case"dhx_matrix_cell":case"dhx_marked_timespan":this._drag_mode="create";break;case"":if(t.parentNode)return scheduler._on_mouse_down(e,t.parentNode);break;default:if((!scheduler.checkEvent("onMouseDown")||scheduler.callEvent("onMouseDown",[i]))&&t.parentNode&&t!=this&&"dhx_body"!=i)return scheduler._on_mouse_down(e,t.parentNode);this._drag_mode=null,this._drag_id=null}if(this._drag_mode){var s=this._locate_event(t);if(this.config["drag_"+this._drag_mode]&&this.callEvent("onBeforeDrag",[s,this._drag_mode,e])){
+if(this._drag_id=s,(this._edit_id!=this._drag_id||this._edit_id&&"create"==this._drag_mode)&&this._close_not_saved(),!this._drag_mode)return;this._drag_event=scheduler._lame_clone(this.getEvent(this._drag_id)||{}),this._drag_pos=this._mouse_coords(e),this._drag_pos.start=+new Date}else this._drag_mode=this._drag_id=0}this._drag_start=null}},scheduler._get_private_properties=function(e){var t={};for(var i in e)0===i.indexOf("_")&&(t[i]=!0);return t},scheduler._clear_temporary_properties=function(e,t){
+var i=this._get_private_properties(e),s=this._get_private_properties(t);for(var a in s)i[a]||delete t[a]},scheduler._on_mouse_up=function(e){if(!e||2!=e.button||!scheduler.config.touch){if(this._drag_mode&&this._drag_id){this._els.dhx_cal_data[0].style.cursor="default";var t=this._drag_id,i=this._drag_mode,s=!this._drag_pos||this._drag_pos.has_moved,a=this.getEvent(this._drag_id);if(s&&(this._drag_event._dhx_changed||!this._drag_event.start_date||a.start_date.valueOf()!=this._drag_event.start_date.valueOf()||a.end_date.valueOf()!=this._drag_event.end_date.valueOf())){
+var n="new-size"==this._drag_mode;if(this.callEvent("onBeforeEventChanged",[a,e,n,this._drag_event]))if(this._drag_id=this._drag_mode=null,n&&this.config.edit_on_create){if(this.unselect(),this._new_event=new Date,this._table_view||this.config.details_on_create||!this.config.select)return scheduler.callEvent("onDragEnd",[t,i,e]),this.showLightbox(t);this._drag_pos=!0,this._select_id=this._edit_id=t}else this._new_event||this.callEvent(n?"onEventAdded":"onEventChanged",[t,this.getEvent(t)]);else n?this.deleteEvent(a.id,!0):(this._drag_event._dhx_changed=!1,
+this._clear_temporary_properties(a,this._drag_event),scheduler._lame_copy(a,this._drag_event),this.updateEvent(a.id))}this._drag_pos&&(this._drag_pos.has_moved||this._drag_pos===!0)&&this.render_view_data(),scheduler.callEvent("onDragEnd",[t,i,e])}this._drag_id=null,this._drag_mode=null,this._drag_pos=null}},scheduler._trigger_dyn_loading=function(){return this._load_mode&&this._load()?(this._render_wait=!0,!0):!1},scheduler.update_view=function(){var e=this[this._mode+"_view"];return e?e(!0):this._reset_scale(),
+this._trigger_dyn_loading()?!0:void this.render_view_data()},scheduler.isViewExists=function(e){return!!(scheduler[e+"_view"]||scheduler.date[e+"_start"]&&scheduler.templates[e+"_date"]&&scheduler.templates[e+"_scale_date"])},scheduler.updateView=function(e,t){e=e||this._date,t=t||this._mode;var i="dhx_cal_data";this._mode?this._obj.className=this._obj.className.replace("dhx_scheduler_"+this._mode,"dhx_scheduler_"+t):this._obj.className+=" dhx_scheduler_"+t;var s=this._mode==t&&this.config.preserve_scroll?this._els[i][0].scrollTop:!1;
+
+this[this._mode+"_view"]&&t&&this._mode!=t&&this[this._mode+"_view"](!1),this._close_not_saved();var a="dhx_multi_day";this._els[a]&&(this._els[a][0].parentNode.removeChild(this._els[a][0]),this._els[a]=null),this._mode=t,this._date=e,this._table_view="month"==this._mode,this._dy_shift=0;var n=this._els.dhx_cal_tab;if(n)for(var r=0;r<n.length;r++){var d=n[r].className;d=d.replace(/ active/g,""),n[r].getAttribute("name")==this._mode+"_tab"&&(d+=" active"),n[r].className=d}this.update_view(),"number"==typeof s&&(this._els[i][0].scrollTop=s);
+
+},scheduler.setCurrentView=function(e,t){this.callEvent("onBeforeViewChange",[this._mode,this._date,t||this._mode,e||this._date])&&(this.updateView(e,t),this.callEvent("onViewChange",[this._mode,this._date]))},scheduler._render_x_header=function(e,t,i,s,a){a=a||0;var n=document.createElement("DIV");n.className="dhx_scale_bar",this.templates[this._mode+"_scalex_class"]&&(n.className+=" "+this.templates[this._mode+"_scalex_class"](i));var r=this._cols[e]-1;"month"==this._mode&&0===e&&this.config.left_border&&(n.className+=" dhx_scale_bar_border",
+t+=1),this.set_xy(n,r,this.xy.scale_height-2,t,a),n.innerHTML=this.templates[this._mode+"_scale_date"](i,this._mode),s.appendChild(n)},scheduler._get_columns_num=function(e,t){var i=7;if(!scheduler._table_view){var s=scheduler.date["get_"+scheduler._mode+"_end"];s&&(t=s(e)),i=Math.round((t.valueOf()-e.valueOf())/864e5)}return i},scheduler._get_timeunit_start=function(){return this.date[this._mode+"_start"](new Date(this._date.valueOf()))},scheduler._get_view_end=function(){var e=this._get_timeunit_start(),t=scheduler.date.add(e,1,this._mode);
+
+if(!scheduler._table_view){var i=scheduler.date["get_"+scheduler._mode+"_end"];i&&(t=i(e))}return t},scheduler._calc_scale_sizes=function(e,t,i){var s=e,a=this._get_columns_num(t,i);this._process_ignores(t,a,"day",1);for(var n=a-this._ignores_detected,r=0;a>r;r++)this._ignores[r]?(this._cols[r]=0,n++):this._cols[r]=Math.floor(s/(n-r)),s-=this._cols[r],this._colsS[r]=(this._cols[r-1]||0)+(this._colsS[r-1]||(this._table_view?0:this.xy.scale_width+2));this._colsS.col_length=a,this._colsS[a]=this._cols[a-1]+this._colsS[a-1]||0;
+
+},scheduler._set_scale_col_size=function(e,t,i){var s=this.config;this.set_xy(e,t-1,s.hour_size_px*(s.last_hour-s.first_hour),i+this.xy.scale_width+1,0)},scheduler._render_scales=function(e,t){var i=new Date(scheduler._min_date),s=new Date(scheduler._max_date),a=this.date.date_part(scheduler._currentDate()),n=parseInt(e.style.width,10),r=new Date(this._min_date),d=this._get_columns_num(i,s);this._calc_scale_sizes(n,i,s);var o=0;e.innerHTML="";for(var l=0;d>l;l++){if(this._ignores[l]||this._render_x_header(l,o,r,e),
+!this._table_view){var h=document.createElement("DIV"),_="dhx_scale_holder";r.valueOf()==a.valueOf()&&(_="dhx_scale_holder_now"),this._ignores_detected&&this._ignores[l]&&(_+=" dhx_scale_ignore"),h.className=_+" "+this.templates.week_date_class(r,a),this._set_scale_col_size(h,this._cols[l],o),t.appendChild(h),this.callEvent("onScaleAdd",[h,r])}o+=this._cols[l],r=this.date.add(r,1,"day"),r=this.date.day_start(r)}},scheduler._reset_scale=function(){if(this.templates[this._mode+"_date"]){var e=this._els.dhx_cal_header[0],t=this._els.dhx_cal_data[0],i=this.config;
+
+e.innerHTML="",t.innerHTML="";var s=(i.readonly||!i.drag_resize?" dhx_resize_denied":"")+(i.readonly||!i.drag_move?" dhx_move_denied":"");t.className="dhx_cal_data"+s,this._scales={},this._cols=[],this._colsS={height:0},this._dy_shift=0,this.set_sizes();var a,n,r=this._get_timeunit_start(),d=scheduler._get_view_end();if(a=n=this._table_view?scheduler.date.week_start(r):r,this._min_date=a,this._els.dhx_cal_date[0].innerHTML=this.templates[this._mode+"_date"](r,d,this._mode),this._max_date=d,scheduler._render_scales(e,t),
+this._table_view)this._reset_month_scale(t,r,n);else if(this._reset_hours_scale(t,r,n),i.multi_day){var o="dhx_multi_day";this._els[o]&&(this._els[o][0].parentNode.removeChild(this._els[o][0]),this._els[o]=null);var l=this._els.dhx_cal_navline[0],h=l.offsetHeight+this._els.dhx_cal_header[0].offsetHeight+1,_=document.createElement("DIV");_.className=o,_.style.visibility="hidden",this.set_xy(_,Math.max(this._colsS[this._colsS.col_length]+this.xy.scroll_width-2,0),0,0,h),t.parentNode.insertBefore(_,t);
+
+var c=_.cloneNode(!0);c.className=o+"_icon",c.style.visibility="hidden",this.set_xy(c,this.xy.scale_width,0,0,h),_.appendChild(c),this._els[o]=[_,c],this._els[o][0].onclick=this._click.dhx_cal_data}}},scheduler._reset_hours_scale=function(e,t,i){var s=document.createElement("DIV");s.className="dhx_scale_holder";for(var a=new Date(1980,1,1,this.config.first_hour,0,0),n=1*this.config.first_hour;n<this.config.last_hour;n++){var r=document.createElement("DIV");r.className="dhx_scale_hour",r.style.height=this.config.hour_size_px-(this._quirks?0:1)+"px";
+
+var d=this.xy.scale_width;this.config.left_border&&(d-=1,r.className+=" dhx_scale_hour_border"),r.style.width=d+"px",r.innerHTML=scheduler.templates.hour_scale(a),s.appendChild(r),a=this.date.add(a,1,"hour")}e.appendChild(s),this.config.scroll_hour&&(e.scrollTop=this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour))},scheduler._currentDate=function(){return scheduler.config.now_date?new Date(scheduler.config.now_date):new Date},scheduler._process_ignores=function(e,t,i,s,a){this._ignores={},
+this._ignores_detected=0;var n=scheduler["ignore_"+this._mode];if(n)for(var r=new Date(e),d=0;t>d;d++)n(r)&&(this._ignores_detected+=1,this._ignores[d]=!0,a&&t++),r=scheduler.date.add(r,s,i),scheduler.date[i+"_start"]&&(r=scheduler.date[i+"_start"](r))},scheduler._render_month_scale=function(e,t,i){function s(e){var t=scheduler._colsS.height;return void 0!==scheduler._colsS.heights[e+1]&&(t=scheduler._colsS.heights[e+1]-(scheduler._colsS.heights[e]||0)),t}var a=scheduler.date.add(t,1,"month"),n=new Date(i),r=scheduler._currentDate();
+
+this.date.date_part(r),this.date.date_part(i);for(var d=Math.ceil(Math.round((a.valueOf()-i.valueOf())/864e5)/7),o=[],l=0;7>=l;l++){var h=(this._cols[l]||0)-1;0===l&&this.config.left_border&&(h-=1),o[l]=" style='width:"+h+"px;"}for(var _=0,c="<table cellpadding='0' cellspacing='0'>",u=[],l=0;d>l;l++){c+="<tr>";for(var g=Math.max(s(l)-scheduler.xy.month_head_height,0),f=0;7>f;f++){c+="<td";var v="";t>i?v="dhx_before":i>=a?v="dhx_after":i.valueOf()==r.valueOf()&&(v="dhx_now"),this._ignores_detected&&this._ignores[f]&&(v+=" dhx_scale_ignore"),
+c+=" class='"+v+" "+this.templates.month_date_class(i,r)+"' >";var m="dhx_month_body",p="dhx_month_head";0===f&&this.config.left_border&&(m+=" dhx_month_body_border",p+=" dhx_month_head_border"),this._ignores_detected&&this._ignores[f]?c+="<div></div><div></div>":(c+="<div class='"+p+"'>"+this.templates.month_day(i)+"</div>",c+="<div class='"+m+"' "+o[f]+";height:"+g+"px;'></div></td>"),u.push(i);var x=i.getDate();i=this.date.add(i,1,"day"),i.getDate()-x>1&&(i=new Date(i.getFullYear(),i.getMonth(),x+1,12,0));
+
+}c+="</tr>",scheduler._colsS.heights[l]=_,_+=s(l)}c+="</table>",this._min_date=n,this._max_date=i,e.innerHTML=c,this._scales={};for(var b=e.getElementsByTagName("div"),l=0;l<u.length;l++){var e=b[2*l+1],y=u[l];this._scales[+y]=e}for(var l=0;l<u.length;l++){var y=u[l];this.callEvent("onScaleAdd",[this._scales[+y],y])}return this._max_date},scheduler._reset_month_scale=function(e,t,i){var s=scheduler.date.add(t,1,"month"),a=scheduler._currentDate();this.date.date_part(a),this.date.date_part(i);var n=Math.ceil(Math.round((s.valueOf()-i.valueOf())/864e5)/7),r=Math.floor(e.clientHeight/n)-this.xy.month_head_height;
+
+return this._colsS.height=r+this.xy.month_head_height,this._colsS.heights=[],scheduler._render_month_scale(e,t,i)},scheduler.getLabel=function(e,t){for(var i=this.config.lightbox.sections,s=0;s<i.length;s++)if(i[s].map_to==e)for(var a=i[s].options,n=0;n<a.length;n++)if(a[n].key==t)return a[n].label;return""},scheduler.updateCollection=function(e,t){var i=scheduler.serverList(e);return i?(i.splice(0,i.length),i.push.apply(i,t||[]),scheduler.callEvent("onOptionsLoad",[]),scheduler.resetLightbox(),!0):!1;
+
+},scheduler._lame_clone=function(e,t){var i,s,a;for(t=t||[],i=0;i<t.length;i+=2)if(e===t[i])return t[i+1];if(e&&"object"==typeof e){for(a={},s=[Array,Date,Number,String,Boolean],i=0;i<s.length;i++)e instanceof s[i]&&(a=i?new s[i](e):new s[i]);t.push(e,a);for(i in e)Object.prototype.hasOwnProperty.apply(e,[i])&&(a[i]=scheduler._lame_clone(e[i],t))}return a||e},scheduler._lame_copy=function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},scheduler._get_date_from_pos=function(e){var t=this._min_date.valueOf()+6e4*(e.y*this.config.time_step+24*(this._table_view?0:e.x)*60);
+
+return new Date(this._correct_shift(t))},scheduler.getActionData=function(e){var t=this._mouse_coords(e);return{date:this._get_date_from_pos(t),section:t.section}},scheduler._focus=function(e,t){e&&e.focus&&(this.config.touch?window.setTimeout(function(){e.focus()},100):(t&&e.select&&e.select(),e.focus()))},scheduler._get_real_event_length=function(e,t,i){var s,a=t-e,n=i._start_correction+i._end_correction||0,r=this["ignore_"+this._mode],d=0;for(i.render?(d=this._get_date_index(i,e),s=this._get_date_index(i,t)):s=Math.round(a/60/60/1e3/24);s>d;){
+var o=scheduler.date.add(t,-i.x_step,i.x_unit);a-=r&&r(t)?t-o:n,t=o,s--}return a},scheduler._get_fictional_event_length=function(e,t,i,s){var a=new Date(e),n=s?-1:1;if(i._start_correction||i._end_correction){var r;r=s?60*a.getHours()+a.getMinutes()-60*(i.first_hour||0):60*(i.last_hour||0)-(60*a.getHours()+a.getMinutes());var d=60*(i.last_hour-i.first_hour),o=Math.ceil((t/6e4-r)/d);t+=o*(1440-d)*60*1e3}var l,h=new Date(1*e+t*n),_=this["ignore_"+this._mode],c=0;for(i.render?(c=this._get_date_index(i,a),
+l=this._get_date_index(i,h)):l=Math.round(t/60/60/1e3/24);l*n>=c*n;){var u=scheduler.date.add(a,i.x_step*n,i.x_unit);_&&_(a)&&(t+=(u-a)*n,l+=n),a=u,c+=n}return t},scheduler._get_section_view=function(){return this.matrix&&this.matrix[this._mode]?this.matrix[this._mode]:this._props&&this._props[this._mode]?this._props[this._mode]:null},scheduler._get_section_property=function(){return this.matrix&&this.matrix[this._mode]?this.matrix[this._mode].y_property:this._props&&this._props[this._mode]?this._props[this._mode].map_to:null;
+
+},scheduler._is_initialized=function(){var e=this.getState();return this._obj&&e.date&&e.mode},scheduler._is_lightbox_open=function(){var e=this.getState();return null!==e.lightbox_id&&void 0!==e.lightbox_id},scheduler.date={init:function(){for(var e=scheduler.locale.date.month_short,t=scheduler.locale.date.month_short_hash={},i=0;i<e.length;i++)t[e[i]]=i;for(var e=scheduler.locale.date.month_full,t=scheduler.locale.date.month_full_hash={},i=0;i<e.length;i++)t[e[i]]=i},date_part:function(e){var t=new Date(e);
+
+return e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e.getHours()&&(e.getDate()<t.getDate()||e.getMonth()<t.getMonth()||e.getFullYear()<t.getFullYear())&&e.setTime(e.getTime()+36e5*(24-e.getHours())),e},time_part:function(e){return(e.valueOf()/1e3-60*e.getTimezoneOffset())%86400},week_start:function(e){var t=e.getDay();return scheduler.config.start_on_monday&&(0===t?t=6:t--),this.date_part(this.add(e,-1*t,"day"))},month_start:function(e){return e.setDate(1),this.date_part(e)},
+year_start:function(e){return e.setMonth(0),this.month_start(e)},day_start:function(e){return this.date_part(e)},_add_days:function(e,t){var i=new Date(e.valueOf());return i.setDate(i.getDate()+t),t>=0&&!e.getHours()&&i.getHours()&&(i.getDate()<e.getDate()||i.getMonth()<e.getMonth()||i.getFullYear()<e.getFullYear())&&i.setTime(i.getTime()+36e5*(24-i.getHours())),i},add:function(e,t,i){var s=new Date(e.valueOf());switch(i){case"day":s=scheduler.date._add_days(s,t);break;case"week":s=scheduler.date._add_days(s,7*t);
+
+break;case"month":s.setMonth(s.getMonth()+t);break;case"year":s.setYear(s.getFullYear()+t);break;case"hour":s.setTime(s.getTime()+60*t*60*1e3);break;case"minute":s.setTime(s.getTime()+60*t*1e3);break;default:return scheduler.date["add_"+i](e,t,i)}return s},to_fixed:function(e){return 10>e?"0"+e:e},copy:function(e){return new Date(e.valueOf())},date_to_str:function(e,t){return e=e.replace(/%[a-zA-Z]/g,function(e){switch(e){case"%d":return'"+scheduler.date.to_fixed(date.getDate())+"';case"%m":return'"+scheduler.date.to_fixed((date.getMonth()+1))+"';
+
+case"%j":return'"+date.getDate()+"';case"%n":return'"+(date.getMonth()+1)+"';case"%y":return'"+scheduler.date.to_fixed(date.getFullYear()%100)+"';case"%Y":return'"+date.getFullYear()+"';case"%D":return'"+scheduler.locale.date.day_short[date.getDay()]+"';case"%l":return'"+scheduler.locale.date.day_full[date.getDay()]+"';case"%M":return'"+scheduler.locale.date.month_short[date.getMonth()]+"';case"%F":return'"+scheduler.locale.date.month_full[date.getMonth()]+"';case"%h":return'"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+"';
+
+case"%g":return'"+((date.getHours()+11)%12+1)+"';case"%G":return'"+date.getHours()+"';case"%H":return'"+scheduler.date.to_fixed(date.getHours())+"';case"%i":return'"+scheduler.date.to_fixed(date.getMinutes())+"';case"%a":return'"+(date.getHours()>11?"pm":"am")+"';case"%A":return'"+(date.getHours()>11?"PM":"AM")+"';case"%s":return'"+scheduler.date.to_fixed(date.getSeconds())+"';case"%W":return'"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+"';default:return e}}),t&&(e=e.replace(/date\.get/g,"date.getUTC")),
+new Function("date",'return "'+e+'";')},str_to_date:function(e,t){for(var i="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);",s=e.match(/%[a-zA-Z]/g),a=0;a<s.length;a++)switch(s[a]){case"%j":case"%d":i+="set[2]=temp["+a+"]||1;";break;case"%n":case"%m":i+="set[1]=(temp["+a+"]||1)-1;";break;case"%y":i+="set[0]=temp["+a+"]*1+(temp["+a+"]>50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":i+="set[3]=temp["+a+"]||0;";break;case"%i":i+="set[4]=temp["+a+"]||0;";break;case"%Y":i+="set[0]=temp["+a+"]||0;";
+
+break;case"%a":case"%A":i+="set[3]=set[3]%12+((temp["+a+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":i+="set[5]=temp["+a+"]||0;";break;case"%M":i+="set[1]=scheduler.locale.date.month_short_hash[temp["+a+"]]||0;";break;case"%F":i+="set[1]=scheduler.locale.date.month_full_hash[temp["+a+"]]||0;"}var n="set[0],set[1],set[2],set[3],set[4],set[5]";return t&&(n=" Date.UTC("+n+")"),new Function("date","var set=[0,0,1,0,0,0]; "+i+" return new Date("+n+");")},getISOWeek:function(e){if(!e)return!1;var t=e.getDay();
+
+0===t&&(t=7);var i=new Date(e.valueOf());i.setDate(e.getDate()+(4-t));var s=i.getFullYear(),a=Math.round((i.getTime()-new Date(s,0,1).getTime())/864e5),n=1+Math.floor(a/7);return n},getUTCISOWeek:function(e){return this.getISOWeek(this.convert_to_utc(e))},convert_to_utc:function(e){return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}},scheduler.locale={date:{month_full:["January","February","March","April","May","June","July","August","September","October","November","December"],
+month_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],day_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},labels:{dhx_cal_today_button:"Today",day_tab:"Day",week_tab:"Week",month_tab:"Month",new_event:"New event",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Event will be deleted permanently, are you sure?",
+section_description:"Description",section_time:"Time period",full_day:"Full day",confirm_recurring:"Do you want to edit the whole set of repeated events?",section_recurring:"Repeat event",button_recurring:"Disabled",button_recurring_open:"Enabled",button_edit_series:"Edit series",button_edit_occurrence:"Edit occurrence",agenda_tab:"Agenda",date:"Date",description:"Description",year_tab:"Year",week_agenda_tab:"Agenda",grid_tab:"Grid",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",
+message_cancel:"Cancel"}},scheduler.config={default_date:"%j %M %Y",month_date:"%F %Y",load_date:"%Y-%m-%d",week_date:"%l",day_date:"%D, %F %j",hour_date:"%H:%i",month_day:"%d",xml_date:"%m/%d/%Y %H:%i",api_date:"%d-%m-%Y %H:%i",preserve_length:!0,time_step:5,start_on_monday:1,first_hour:0,last_hour:24,readonly:!1,drag_resize:1,drag_move:1,drag_create:1,dblclick_create:1,edit_on_create:1,details_on_create:0,resize_month_events:!1,resize_month_timed:!1,cascade_event_display:!1,cascade_event_count:4,
+cascade_event_margin:30,multi_day:!0,multi_day_height_limit:0,drag_lightbox:!0,preserve_scroll:!0,select:!0,server_utc:!1,touch:!0,touch_tip:!0,touch_drag:500,quick_info_detached:!0,positive_closing:!1,drag_highlight:!0,limit_drag_out:!1,icons_edit:["icon_save","icon_cancel"],icons_select:["icon_details","icon_edit","icon_delete"],buttons_left:["dhx_save_btn","dhx_cancel_btn"],buttons_right:["dhx_delete_btn"],lightbox:{sections:[{name:"description",height:200,map_to:"text",type:"textarea",focus:!0
+},{name:"time",height:72,type:"time",map_to:"auto"}]},highlight_displayed_event:!0,left_border:!1,ajax_error:"alert",delay_render:0},scheduler.templates={},scheduler.init_templates=function(){var e=scheduler.locale.labels;e.dhx_save_btn=e.icon_save,e.dhx_cancel_btn=e.icon_cancel,e.dhx_delete_btn=e.icon_delete;var t=scheduler.date.date_to_str,i=scheduler.config,s=function(e,t){for(var i in t)e[i]||(e[i]=t[i])};s(scheduler.templates,{day_date:t(i.default_date),month_date:t(i.month_date),week_date:function(e,t){
+return scheduler.templates.day_date(e)+" &ndash; "+scheduler.templates.day_date(scheduler.date.add(t,-1,"day"))},day_scale_date:t(i.default_date),month_scale_date:t(i.week_date),week_scale_date:t(i.day_date),hour_scale:t(i.hour_date),time_picker:t(i.hour_date),event_date:t(i.hour_date),month_day:t(i.month_day),xml_date:scheduler.date.str_to_date(i.xml_date,i.server_utc),load_format:t(i.load_date,i.server_utc),xml_format:t(i.xml_date,i.server_utc),api_date:scheduler.date.str_to_date(i.api_date),event_header:function(e,t,i){
+return scheduler.templates.event_date(e)+" - "+scheduler.templates.event_date(t)},event_text:function(e,t,i){return i.text},event_class:function(e,t,i){return""},month_date_class:function(e){return""},week_date_class:function(e){return""},event_bar_date:function(e,t,i){return scheduler.templates.event_date(e)+" "},event_bar_text:function(e,t,i){return i.text},month_events_link:function(e,t){return"<a>View more("+t+" events)</a>"},drag_marker_class:function(e,t,i){return""},drag_marker_content:function(e,t,i){
+return""}}),this.callEvent("onTemplatesReady",[])},scheduler.uid=function(){return this._seed||(this._seed=(new Date).valueOf()),this._seed++},scheduler._events={},scheduler.clearAll=function(){this._events={},this._loaded={},this._edit_id=null,this._select_id=null,this._drag_id=null,this._drag_mode=null,this._drag_pos=null,this.clear_view(),this.callEvent("onClearAll",[])},scheduler.addEvent=function(e,t,i,s,a){if(!arguments.length)return this.addEventNow();var n=e;1!=arguments.length&&(n=a||{},
+n.start_date=e,n.end_date=t,n.text=i,n.id=s),n.id=n.id||scheduler.uid(),n.text=n.text||"","string"==typeof n.start_date&&(n.start_date=this.templates.api_date(n.start_date)),"string"==typeof n.end_date&&(n.end_date=this.templates.api_date(n.end_date));var r=6e4*(this.config.event_duration||this.config.time_step);n.start_date.valueOf()==n.end_date.valueOf()&&n.end_date.setTime(n.end_date.valueOf()+r),n._timed=this.isOneDayEvent(n);var d=!this._events[n.id];return this._events[n.id]=n,this.event_updated(n),
+this._loading||this.callEvent(d?"onEventAdded":"onEventChanged",[n.id,n]),n.id},scheduler.deleteEvent=function(e,t){var i=this._events[e];(t||this.callEvent("onBeforeEventDelete",[e,i])&&this.callEvent("onConfirmedBeforeEventDelete",[e,i]))&&(i&&(this._select_id=null,delete this._events[e],this.event_updated(i)),this.callEvent("onEventDeleted",[e,i]))},scheduler.getEvent=function(e){return this._events[e]},scheduler.setEvent=function(e,t){t.id||(t.id=e),this._events[e]=t},scheduler.for_rendered=function(e,t){
+for(var i=this._rendered.length-1;i>=0;i--)this._rendered[i].getAttribute("event_id")==e&&t(this._rendered[i],i)},scheduler.changeEventId=function(e,t){if(e!=t){var i=this._events[e];i&&(i.id=t,this._events[t]=i,delete this._events[e]),this.for_rendered(e,function(e){e.setAttribute("event_id",t)}),this._select_id==e&&(this._select_id=t),this._edit_id==e&&(this._edit_id=t),this.callEvent("onEventIdChange",[e,t])}},function(){for(var e=["text","Text","start_date","StartDate","end_date","EndDate"],t=function(e){
+return function(t){return scheduler.getEvent(t)[e]}},i=function(e){return function(t,i){var s=scheduler.getEvent(t);s[e]=i,s._changed=!0,s._timed=this.isOneDayEvent(s),scheduler.event_updated(s,!0)}},s=0;s<e.length;s+=2)scheduler["getEvent"+e[s+1]]=t(e[s]),scheduler["setEvent"+e[s+1]]=i(e[s])}(),scheduler.event_updated=function(e,t){this.is_visible_events(e)?this.render_view_data():this.clear_event(e.id)},scheduler.is_visible_events=function(e){var t=e.start_date<this._max_date&&this._min_date<e.end_date;
+
+if(t){var i=this._table_view||e.end_date.getHours()>=this.config.first_hour&&e.end_date.getHours()<this.config.last_hour||e.start_date.getHours()>=this.config.first_hour&&e.start_date.getHours()<this.config.last_hour;if(i)return!0;var s=(e.end_date.valueOf()-e.start_date.valueOf())/36e5,a=24-(this.config.last_hour-this.config.first_hour);return s>a}return!1},scheduler.isOneDayEvent=function(e){var t=e.end_date.getDate()-e.start_date.getDate();return t?(0>t&&(t=Math.ceil((e.end_date.valueOf()-e.start_date.valueOf())/864e5)),
+1==t&&!e.end_date.getHours()&&!e.end_date.getMinutes()&&(e.start_date.getHours()||e.start_date.getMinutes())):e.start_date.getMonth()==e.end_date.getMonth()&&e.start_date.getFullYear()==e.end_date.getFullYear()},scheduler.get_visible_events=function(e){var t=[];for(var i in this._events)this.is_visible_events(this._events[i])&&(!e||this._events[i]._timed)&&this.filter_event(i,this._events[i])&&t.push(this._events[i]);return t},scheduler.filter_event=function(e,t){var i=this["filter_"+this._mode];
+return i?i(e,t):!0},scheduler._is_main_area_event=function(e){return!!e._timed},scheduler.render_view_data=function(e,t){if(!e){if(this._not_render)return void(this._render_wait=!0);this._render_wait=!1,this.clear_view(),e=this.get_visible_events(!(this._table_view||this.config.multi_day))}for(var i=0,s=e.length;s>i;i++)this._recalculate_timed(e[i]);if(this.config.multi_day&&!this._table_view){for(var a=[],n=[],i=0;i<e.length;i++)this._is_main_area_event(e[i])?a.push(e[i]):n.push(e[i]);this._rendered_location=this._els.dhx_multi_day[0],
+this._table_view=!0,this.render_data(n,t),this._table_view=!1,this._rendered_location=this._els.dhx_cal_data[0],this._table_view=!1,this.render_data(a,t)}else this._rendered_location=this._els.dhx_cal_data[0],this.render_data(e,t)},scheduler._view_month_day=function(e){var t=scheduler.getActionData(e).date;scheduler.callEvent("onViewMoreClick",[t])&&scheduler.setCurrentView(t,"day")},scheduler._render_month_link=function(e){for(var t=this._rendered_location,i=this._lame_clone(e),s=e._sday;s<e._eday;s++){
+i._sday=s,i._eday=s+1;var a=scheduler.date,n=scheduler._min_date;n=a.add(n,i._sweek,"week"),n=a.add(n,i._sday,"day");var r=scheduler.getEvents(n,a.add(n,1,"day")).length,d=this._get_event_bar_pos(i),o=d.x2-d.x,l=document.createElement("div");l.onclick=function(e){scheduler._view_month_day(e||event)},l.className="dhx_month_link",l.style.top=d.y+"px",l.style.left=d.x+"px",l.style.width=o+"px",l.innerHTML=scheduler.templates.month_events_link(n,r),this._rendered.push(l),t.appendChild(l)}},scheduler._recalculate_timed=function(e){
+if(e){var t;t="object"!=typeof e?this._events[e]:e,t&&(t._timed=scheduler.isOneDayEvent(t))}},scheduler.attachEvent("onEventChanged",scheduler._recalculate_timed),scheduler.attachEvent("onEventAdded",scheduler._recalculate_timed),scheduler.render_data=function(e,t){e=this._pre_render_events(e,t);for(var i=0;i<e.length;i++)if(this._table_view)if("month"!=scheduler._mode)this.render_event_bar(e[i]);else{var s=scheduler.config.max_month_events;s!==1*s||e[i]._sorder<s?this.render_event_bar(e[i]):void 0!==s&&e[i]._sorder==s&&scheduler._render_month_link(e[i]);
+
+}else this.render_event(e[i])},scheduler._get_first_visible_cell=function(e){for(var t=0;t<e.length;t++)if(-1==(e[t].className||"").indexOf("dhx_scale_ignore"))return e[t];return e[0]},scheduler._pre_render_events=function(e,t){var i=this.xy.bar_height,s=this._colsS.heights,a=this._colsS.heights=[0,0,0,0,0,0,0],n=this._els.dhx_cal_data[0];if(e=this._table_view?this._pre_render_events_table(e,t):this._pre_render_events_line(e,t),this._table_view)if(t)this._colsS.heights=s;else{var r=n.firstChild;if(r.rows){
+for(var d=0;d<r.rows.length;d++){a[d]++;var o=r.rows[d].cells,l=this._colsS.height-this.xy.month_head_height;if(a[d]*i>l){var h=l;1*this.config.max_month_events!==this.config.max_month_events||a[d]<=this.config.max_month_events?h=a[d]*i:(this.config.max_month_events+1)*i>l&&(h=(this.config.max_month_events+1)*i);for(var _=0;_<o.length;_++)o[_].childNodes[1].style.height=h+"px"}a[d]=(a[d-1]||0)+scheduler._get_first_visible_cell(o).offsetHeight}if(a.unshift(0),r.parentNode.offsetHeight<r.parentNode.scrollHeight&&!scheduler._colsS.scroll_fix&&scheduler.xy.scroll_width){
+var c=scheduler._colsS,u=c[c.col_length],g=c.heights.slice();u-=scheduler.xy.scroll_width||0,this._calc_scale_sizes(u,this._min_date,this._max_date),scheduler._colsS.heights=g,this.set_xy(this._els.dhx_cal_header[0],u,this.xy.scale_height),scheduler._render_scales(this._els.dhx_cal_header[0]),scheduler._render_month_scale(this._els.dhx_cal_data[0],this._get_timeunit_start(),this._min_date),c.scroll_fix=!0}}else if(e.length||"visible"!=this._els.dhx_multi_day[0].style.visibility||(a[0]=-1),e.length||-1==a[0]){
+var f=(r.parentNode.childNodes,(a[0]+1)*i+1),v=f,m=f+"px";this.config.multi_day_height_limit&&(v=Math.min(f,this.config.multi_day_height_limit),m=v+"px"),n.style.top=this._els.dhx_cal_navline[0].offsetHeight+this._els.dhx_cal_header[0].offsetHeight+v+"px",n.style.height=this._obj.offsetHeight-parseInt(n.style.top,10)-(this.xy.margin_top||0)+"px";var p=this._els.dhx_multi_day[0];p.style.height=m,p.style.visibility=-1==a[0]?"hidden":"visible";var x=this._els.dhx_multi_day[1];x.style.height=m,x.style.visibility=-1==a[0]?"hidden":"visible",
+x.className=a[0]?"dhx_multi_day_icon":"dhx_multi_day_icon_small",this._dy_shift=(a[0]+1)*i,this.config.multi_day_height_limit&&(this._dy_shift=Math.min(this.config.multi_day_height_limit,this._dy_shift)),a[0]=0,v!=f&&(n.style.top=parseInt(n.style.top)+2+"px",p.style.overflowY="auto",x.style.position="fixed",x.style.top="",x.style.left="")}}return e},scheduler._get_event_sday=function(e){return Math.floor((e.start_date.valueOf()-this._min_date.valueOf())/864e5)},scheduler._get_event_mapped_end_date=function(e){
+var t=e.end_date;if(this.config.separate_short_events){var i=(e.end_date-e.start_date)/6e4;i<this._min_mapped_duration&&(t=this.date.add(t,this._min_mapped_duration-i,"minute"))}return t},scheduler._pre_render_events_line=function(e,t){e.sort(function(e,t){return e.start_date.valueOf()==t.start_date.valueOf()?e.id>t.id?1:-1:e.start_date>t.start_date?1:-1});var i=[],s=[];this._min_mapped_duration=Math.ceil(60*this.xy.min_event_height/this.config.hour_size_px);for(var a=0;a<e.length;a++){var n=e[a],r=n.start_date,d=n.end_date,o=r.getHours(),l=d.getHours();
+
+if(n._sday=this._get_event_sday(n),this._ignores[n._sday])e.splice(a,1),a--;else{if(i[n._sday]||(i[n._sday]=[]),!t){n._inner=!1;for(var h=i[n._sday];h.length;){var _=h[h.length-1],c=this._get_event_mapped_end_date(_);if(!(c.valueOf()<=n.start_date.valueOf()))break;h.splice(h.length-1,1)}for(var u=h.length,g=!1,f=0;f<h.length;f++){var _=h[f],c=this._get_event_mapped_end_date(_);if(c.valueOf()<=n.start_date.valueOf()){g=!0,n._sorder=_._sorder,u=f,n._inner=!0;break}}if(h.length&&(h[h.length-1]._inner=!0),
+!g)if(h.length)if(h.length<=h[h.length-1]._sorder){if(h[h.length-1]._sorder)for(f=0;f<h.length;f++){for(var v=!1,m=0;m<h.length;m++)if(h[m]._sorder==f){v=!0;break}if(!v){n._sorder=f;break}}else n._sorder=0;n._inner=!0}else{var p=h[0]._sorder;for(f=1;f<h.length;f++)h[f]._sorder>p&&(p=h[f]._sorder);n._sorder=p+1,n._inner=!1}else n._sorder=0;h.splice(u,u==h.length?0:1,n),h.length>(h.max_count||0)?(h.max_count=h.length,n._count=h.length):n._count=n._count?n._count:1}(o<this.config.first_hour||l>=this.config.last_hour)&&(s.push(n),
+e[a]=n=this._copy_event(n),o<this.config.first_hour&&(n.start_date.setHours(this.config.first_hour),n.start_date.setMinutes(0)),l>=this.config.last_hour&&(n.end_date.setMinutes(0),n.end_date.setHours(this.config.last_hour)),n.start_date>n.end_date||o==this.config.last_hour)&&(e.splice(a,1),a--)}}if(!t){for(var a=0;a<e.length;a++)e[a]._count=i[e[a]._sday].max_count;for(var a=0;a<s.length;a++)s[a]._count=i[s[a]._sday].max_count}return e},scheduler._time_order=function(e){e.sort(function(e,t){return e.start_date.valueOf()==t.start_date.valueOf()?e._timed&&!t._timed?1:!e._timed&&t._timed?-1:e.id>t.id?1:-1:e.start_date>t.start_date?1:-1;
+
+})},scheduler._pre_render_events_table=function(e,t){this._time_order(e);for(var i,s=[],a=[[],[],[],[],[],[],[]],n=this._colsS.heights,r=this._cols.length,d={},o=0;o<e.length;o++){var l=e[o],h=l.id;d[h]||(d[h]={first_chunk:!0,last_chunk:!0});var _=d[h],c=i||l.start_date,u=l.end_date;c<this._min_date&&(_.first_chunk=!1,c=this._min_date),u>this._max_date&&(_.last_chunk=!1,u=this._max_date);var g=this.locate_holder_day(c,!1,l);if(l._sday=g%r,!this._ignores[l._sday]||!l._timed){var f=this.locate_holder_day(u,!0,l)||r;
+
+l._eday=f%r||r,l._length=f-g,l._sweek=Math.floor((this._correct_shift(c.valueOf(),1)-this._min_date.valueOf())/(864e5*r));var v,m=a[l._sweek];for(v=0;v<m.length&&!(m[v]._eday<=l._sday);v++);if(l._sorder&&t||(l._sorder=v),l._sday+l._length<=r)i=null,s.push(l),m[v]=l,n[l._sweek]=m.length-1,l._first_chunk=_.first_chunk,l._last_chunk=_.last_chunk;else{var p=this._copy_event(l);p.id=l.id,p._length=r-l._sday,p._eday=r,p._sday=l._sday,p._sweek=l._sweek,p._sorder=l._sorder,p.end_date=this.date.add(c,p._length,"day"),
+p._first_chunk=_.first_chunk,_.first_chunk&&(_.first_chunk=!1),s.push(p),m[v]=p,i=p.end_date,n[l._sweek]=m.length-1,o--}}}return s},scheduler._copy_dummy=function(){var e=new Date(this.start_date),t=new Date(this.end_date);this.start_date=e,this.end_date=t},scheduler._copy_event=function(e){return this._copy_dummy.prototype=e,new this._copy_dummy},scheduler._rendered=[],scheduler.clear_view=function(){for(var e=0;e<this._rendered.length;e++){var t=this._rendered[e];t.parentNode&&t.parentNode.removeChild(t);
+
+}this._rendered=[]},scheduler.updateEvent=function(e){var t=this.getEvent(e);this.clear_event(e),t&&this.is_visible_events(t)&&this.filter_event(e,t)&&(this._table_view||this.config.multi_day||t._timed)&&(this.config.update_render?this.render_view_data():"month"!=this.getState().mode||this.getState().drag_id||this.isOneDayEvent(t)?this.render_view_data([t],!0):this.render_view_data())},scheduler.clear_event=function(e){this.for_rendered(e,function(e,t){e.parentNode&&e.parentNode.removeChild(e),scheduler._rendered.splice(t,1);
+
+})},scheduler._y_from_date=function(e){var t=60*e.getHours()+e.getMinutes();return Math.round((60*t*1e3-60*this.config.first_hour*60*1e3)*this.config.hour_size_px/36e5)%(24*this.config.hour_size_px)},scheduler._calc_event_y=function(e,t){t=t||0;var i=60*e.start_date.getHours()+e.start_date.getMinutes(),s=60*e.end_date.getHours()+e.end_date.getMinutes()||60*scheduler.config.last_hour,a=this._y_from_date(e.start_date),n=Math.max(t,(s-i)*this.config.hour_size_px/60);return{top:a,height:n}},scheduler.render_event=function(e){
+var t=scheduler.xy.menu_width,i=this.config.use_select_menu_space?0:t;if(!(e._sday<0)){var s=scheduler.locate_holder(e._sday);if(s){var a=this._calc_event_y(e,scheduler.xy.min_event_height),n=a.top,r=a.height,d=e._count||1,o=e._sorder||0,l=Math.floor((s.clientWidth-i)/d),h=o*l+1;if(e._inner||(l*=d-o),this.config.cascade_event_display){var _=this.config.cascade_event_count,c=this.config.cascade_event_margin;h=o%_*c;var u=e._inner?(d-o-1)%_*c/2:0;l=Math.floor(s.clientWidth-i-h-u)}var g=this._render_v_bar(e,i+h,n,l,r,e._text_style,scheduler.templates.event_header(e.start_date,e.end_date,e),scheduler.templates.event_text(e.start_date,e.end_date,e));
+
+if(this._rendered.push(g),s.appendChild(g),h=h+parseInt(s.style.left,10)+i,this._edit_id==e.id){g.style.zIndex=1,l=Math.max(l-4,scheduler.xy.editor_width),g=document.createElement("DIV"),g.setAttribute("event_id",e.id),this.set_xy(g,l,r-20,h,n+14),g.className="dhx_cal_event dhx_cal_editor";var f=scheduler.templates.event_class(e.start_date,e.end_date,e);f&&(g.className+=" "+f);var v=document.createElement("DIV");this.set_xy(v,l-6,r-26),v.style.cssText+=";margin:2px 2px 2px 2px;overflow:hidden;",g.appendChild(v),
+this._els.dhx_cal_data[0].appendChild(g),this._rendered.push(g),v.innerHTML="<textarea class='dhx_cal_editor'>"+e.text+"</textarea>",this._quirks7&&(v.firstChild.style.height=r-12+"px"),this._editor=v.firstChild,this._editor.onkeydown=function(e){if((e||event).shiftKey)return!0;var t=(e||event).keyCode;t==scheduler.keys.edit_save&&scheduler.editStop(!0),t==scheduler.keys.edit_cancel&&scheduler.editStop(!1)},this._editor.onselectstart=function(e){return(e||event).cancelBubble=!0,!0},scheduler._focus(v.firstChild,!0),
+this._els.dhx_cal_data[0].scrollLeft=0}if(0!==this.xy.menu_width&&this._select_id==e.id){this.config.cascade_event_display&&this._drag_mode&&(g.style.zIndex=1);for(var m=this.config["icons_"+(this._edit_id==e.id?"edit":"select")],p="",x=e.color?"background-color: "+e.color+";":"",b=e.textColor?"color: "+e.textColor+";":"",y=0;y<m.length;y++)p+="<div class='dhx_menu_icon "+m[y]+"' style='"+x+b+"' title='"+this.locale.labels[m[y]]+"'></div>";var w=this._render_v_bar(e,h-t+1,n,t,20*m.length+26-2,"","<div style='"+x+b+"' class='dhx_menu_head'></div>",p,!0);
+
+w.style.left=h-t+1,this._els.dhx_cal_data[0].appendChild(w),this._rendered.push(w)}this.config.drag_highlight&&this._drag_id==e.id&&this.highlightEventPosition(e)}}},scheduler._render_v_bar=function(e,t,i,s,a,n,r,d,o){var l=document.createElement("DIV"),h=e.id,_=o?"dhx_cal_event dhx_cal_select_menu":"dhx_cal_event",c=scheduler.templates.event_class(e.start_date,e.end_date,e);c&&(_=_+" "+c);var u=e.color?"background:"+e.color+";":"",g=e.textColor?"color:"+e.textColor+";":"",f='<div event_id="'+h+'" class="'+_+'" style="position:absolute; top:'+i+"px; left:"+t+"px; width:"+(s-4)+"px; height:"+a+"px;"+(n||"")+'"></div>';
+
+l.innerHTML=f;var v=l.cloneNode(!0).firstChild;if(!o&&scheduler.renderEvent(v,e,s,a,r,d))return v;v=l.firstChild;var m='<div class="dhx_event_move dhx_header" style=" width:'+(s-6)+"px;"+u+'" >&nbsp;</div>';m+='<div class="dhx_event_move dhx_title" style="'+u+g+'">'+r+"</div>",m+='<div class="dhx_body" style=" width:'+(s-(this._quirks?4:14))+"px; height:"+(a-(this._quirks?20:30)+1)+"px;"+u+g+'">'+d+"</div>";var p="dhx_event_resize dhx_footer";return o&&(p="dhx_resize_denied "+p),m+='<div class="'+p+'" style=" width:'+(s-8)+"px;"+(o?" margin-top:-1px;":"")+u+g+'" ></div>',
+v.innerHTML=m,v},scheduler.renderEvent=function(){return!1},scheduler.locate_holder=function(e){return"day"==this._mode?this._els.dhx_cal_data[0].firstChild:this._els.dhx_cal_data[0].childNodes[e]},scheduler.locate_holder_day=function(e,t){var i=Math.floor((this._correct_shift(e,1)-this._min_date)/864e5);return t&&this.date.time_part(e)&&i++,i},scheduler._get_dnd_order=function(e,t,i){if(!this._drag_event)return e;this._drag_event._orig_sorder?e=this._drag_event._orig_sorder:this._drag_event._orig_sorder=e;
+
+for(var s=t*e;s+t>i;)e--,s-=t;return e=Math.max(e,0)},scheduler._get_event_bar_pos=function(e){var t=this._colsS[e._sday],i=this._colsS[e._eday];i==t&&(i=this._colsS[e._eday+1]);var s=this.xy.bar_height,a=e._sorder;if(e.id==this._drag_id){var n=this._colsS.heights[e._sweek+1]-this._colsS.heights[e._sweek]-this.xy.month_head_height;a=scheduler._get_dnd_order(a,s,n)}var r=a*s,d=this._colsS.heights[e._sweek]+(this._colsS.height?this.xy.month_scale_height+2:2)+r;return{x:t,x2:i,y:d}},scheduler.render_event_bar=function(e){
+var t=this._rendered_location,i=this._get_event_bar_pos(e),s=i.y,a=i.x,n=i.x2,r="";if(n){var d=scheduler.config.resize_month_events&&"month"==this._mode&&(!e._timed||scheduler.config.resize_month_timed),o=document.createElement("DIV"),l=e.hasOwnProperty("_first_chunk")&&e._first_chunk,h=e.hasOwnProperty("_last_chunk")&&e._last_chunk,_=d&&(e._timed||l),c=d&&(e._timed||h),u="dhx_cal_event_clear";(!e._timed||d)&&(u="dhx_cal_event_line"),l&&(u+=" dhx_cal_event_line_start"),h&&(u+=" dhx_cal_event_line_end"),
+_&&(r+="<div class='dhx_event_resize dhx_event_resize_start'></div>"),c&&(r+="<div class='dhx_event_resize dhx_event_resize_end'></div>");var g=scheduler.templates.event_class(e.start_date,e.end_date,e);g&&(u+=" "+g);var f=e.color?"background:"+e.color+";":"",v=e.textColor?"color:"+e.textColor+";":"",m=["position:absolute","top:"+s+"px","left:"+a+"px","width:"+(n-a-15)+"px",v,f,e._text_style||""].join(";"),p='<div event_id="'+e.id+'" class="'+u+'" style="'+m+'">';d&&(p+=r),"month"==scheduler.getState().mode&&(e=scheduler.getEvent(e.id)),
+e._timed&&(p+=scheduler.templates.event_bar_date(e.start_date,e.end_date,e)),p+=scheduler.templates.event_bar_text(e.start_date,e.end_date,e)+"</div>",p+="</div>",o.innerHTML=p,this._rendered.push(o.firstChild),t.appendChild(o.firstChild)}},scheduler._locate_event=function(e){for(var t=null;e&&!t&&e.getAttribute;)t=e.getAttribute("event_id"),e=e.parentNode;return t},scheduler.edit=function(e){this._edit_id!=e&&(this.editStop(!1,e),this._edit_id=e,this.updateEvent(e))},scheduler.editStop=function(e,t){
+if(!t||this._edit_id!=t){var i=this.getEvent(this._edit_id);i&&(e&&(i.text=this._editor.value),this._edit_id=null,this._editor=null,this.updateEvent(i.id),this._edit_stop_event(i,e))}},scheduler._edit_stop_event=function(e,t){this._new_event?(t?this.callEvent("onEventAdded",[e.id,e]):e&&this.deleteEvent(e.id,!0),this._new_event=null):t&&this.callEvent("onEventChanged",[e.id,e])},scheduler.getEvents=function(e,t){var i=[];for(var s in this._events){var a=this._events[s];a&&(!e&&!t||a.start_date<t&&a.end_date>e)&&i.push(a);
+
+}return i},scheduler.getRenderedEvent=function(e){if(e){for(var t=scheduler._rendered,i=0;i<t.length;i++){var s=t[i];if(s.getAttribute("event_id")==e)return s}return null}},scheduler.showEvent=function(e,t){var i="number"==typeof e||"string"==typeof e?scheduler.getEvent(e):e;if(t=t||scheduler._mode,i&&(!this.checkEvent("onBeforeEventDisplay")||this.callEvent("onBeforeEventDisplay",[i,t]))){var s=scheduler.config.scroll_hour;scheduler.config.scroll_hour=i.start_date.getHours();var a=scheduler.config.preserve_scroll;
+
+scheduler.config.preserve_scroll=!1;var n=i.color,r=i.textColor;scheduler.config.highlight_displayed_event&&(i.color=scheduler.config.displayed_event_color,i.textColor=scheduler.config.displayed_event_text_color),scheduler.setCurrentView(new Date(i.start_date),t),i.color=n,i.textColor=r,scheduler.config.scroll_hour=s,scheduler.config.preserve_scroll=a,scheduler.matrix&&scheduler.matrix[t]&&(scheduler._els.dhx_cal_data[0].scrollTop=getAbsoluteTop(scheduler.getRenderedEvent(i.id))-getAbsoluteTop(scheduler._els.dhx_cal_data[0])-20),
+scheduler.callEvent("onAfterEventDisplay",[i,t])}},scheduler._append_drag_marker=function(e){if(!e.parentNode){var t=scheduler._els.dhx_cal_data[0],i=t.lastChild;i.className&&i.className.indexOf("dhx_scale_holder")<0&&i.previousSibling&&(i=i.previousSibling),i&&0===i.className.indexOf("dhx_scale_holder")&&i.appendChild(e)}},scheduler._update_marker_position=function(e,t){var i=scheduler._calc_event_y(t,0);e.style.top=i.top+"px",e.style.height=i.height+"px"},scheduler.highlightEventPosition=function(e){
+var t=document.createElement("div");t.setAttribute("event_id",e.id),this._rendered.push(t),this._update_marker_position(t,e);var i=this.templates.drag_marker_class(e.start_date,e.end_date,e),s=this.templates.drag_marker_content(e.start_date,e.end_date,e);t.className="dhx_drag_marker",i&&(t.className+=" "+i),s&&(t.innerHTML=s),this._append_drag_marker(t)},scheduler._loaded={},scheduler._load=function(e,t){if(e=e||this._load_url){e+=(-1==e.indexOf("?")?"?":"&")+"timeshift="+(new Date).getTimezoneOffset(),
+this.config.prevent_cache&&(e+="&uid="+this.uid());var i;if(t=t||this._date,this._load_mode){var s=this.templates.load_format;for(t=this.date[this._load_mode+"_start"](new Date(t.valueOf()));t>this._min_date;)t=this.date.add(t,-1,this._load_mode);i=t;for(var a=!0;i<this._max_date;)i=this.date.add(i,1,this._load_mode),this._loaded[s(t)]&&a?t=this.date.add(t,1,this._load_mode):a=!1;var n=i;do i=n,n=this.date.add(i,-1,this._load_mode);while(n>t&&this._loaded[s(n)]);if(t>=i)return!1;for(dhtmlxAjax.get(e+"&from="+s(t)+"&to="+s(i),function(e){
+scheduler.on_load(e)});i>t;)this._loaded[s(t)]=!0,t=this.date.add(t,1,this._load_mode)}else dhtmlxAjax.get(e,function(e){scheduler.on_load(e)});return this.callEvent("onXLS",[]),!0}},scheduler.on_load=function(e){var t,i=!1;if(this._process&&"xml"!=this._process)try{t=this[this._process].parse(e.xmlDoc.responseText)}catch(s){i=!0}else t=this._magic_parser(e),t||(i=!0);i&&(this.callEvent("onLoadError",[e.xmlDoc]),t=[]),scheduler._process_loading(t),this.callEvent("onXLE",[])},scheduler._process_loading=function(e){
+this._loading=!0,this._not_render=!0;for(var t=0;t<e.length;t++)this.callEvent("onEventLoading",[e[t]])&&this.addEvent(e[t]);this._not_render=!1,this._render_wait&&this.render_view_data(),this._loading=!1,this._after_call&&this._after_call(),this._after_call=null},scheduler._init_event=function(e){e.text=e.text||e._tagvalue||"",e.start_date=scheduler._init_date(e.start_date),e.end_date=scheduler._init_date(e.end_date)},scheduler._init_date=function(e){return e?"string"==typeof e?scheduler.templates.xml_date(e):new Date(e):null;
+
+},scheduler.json={},scheduler.json.parse=function(data){"string"==typeof data&&(scheduler._temp=eval("("+data+")"),data=scheduler._temp?scheduler._temp.data||scheduler._temp.d||scheduler._temp:[]),data.dhx_security&&(dhtmlx.security_key=data.dhx_security);var collections=scheduler._temp&&scheduler._temp.collections?scheduler._temp.collections:{},collections_loaded=!1;for(var key in collections)if(collections.hasOwnProperty(key)){collections_loaded=!0;var collection=collections[key],arr=scheduler.serverList[key];
+
+if(!arr)continue;arr.splice(0,arr.length);for(var j=0;j<collection.length;j++){var option=collection[j],obj={key:option.value,label:option.label};for(var option_key in option)if(option.hasOwnProperty(option_key)){if("value"==option_key||"label"==option_key)continue;obj[option_key]=option[option_key]}arr.push(obj)}}collections_loaded&&scheduler.callEvent("onOptionsLoad",[]);for(var evs=[],i=0;i<data.length;i++){var event=data[i];scheduler._init_event(event),evs.push(event)}return evs},scheduler.parse=function(e,t){
+this._process=t,this.on_load({xmlDoc:{responseText:e}})},scheduler.load=function(e,t){"string"==typeof t&&(this._process=t,t=arguments[2]),this._load_url=e,this._after_call=t,this._load(e,this._date)},scheduler.setLoadMode=function(e){"all"==e&&(e=""),this._load_mode=e},scheduler.serverList=function(e,t){return t?(this.serverList[e]=t.slice(0),this.serverList[e]):(this.serverList[e]=this.serverList[e]||[],this.serverList[e])},scheduler._userdata={},scheduler._magic_parser=function(e){var t;if(!e.getXMLTopNode){
+var i=e.xmlDoc.responseText;e=new dtmlXMLLoaderObject(function(){}),e.loadXMLString(i)}if(t=e.getXMLTopNode("data"),"data"!=t.tagName)return null;var s=t.getAttribute("dhx_security");s&&(dhtmlx.security_key=s);for(var a=e.doXPath("//coll_options"),n=0;n<a.length;n++){var r=a[n].getAttribute("for"),d=this.serverList[r];if(d){d.splice(0,d.length);for(var o=e.doXPath(".//item",a[n]),l=0;l<o.length;l++){for(var h=o[l],_=h.attributes,c={key:o[l].getAttribute("value"),label:o[l].getAttribute("label")},u=0;u<_.length;u++){
+var g=_[u];"value"!=g.nodeName&&"label"!=g.nodeName&&(c[g.nodeName]=g.nodeValue)}d.push(c)}}}a.length&&scheduler.callEvent("onOptionsLoad",[]);for(var f=e.doXPath("//userdata"),n=0;n<f.length;n++){var v=this._xmlNodeToJSON(f[n]);this._userdata[v.name]=v.text}var m=[];t=e.doXPath("//event");for(var n=0;n<t.length;n++){var p=m[n]=this._xmlNodeToJSON(t[n]);scheduler._init_event(p)}return m},scheduler._xmlNodeToJSON=function(e){for(var t={},i=0;i<e.attributes.length;i++)t[e.attributes[i].name]=e.attributes[i].value;
+
+for(var i=0;i<e.childNodes.length;i++){var s=e.childNodes[i];1==s.nodeType&&(t[s.tagName]=s.firstChild?s.firstChild.nodeValue:"")}return t.text||(t.text=e.firstChild?e.firstChild.nodeValue:""),t},scheduler.attachEvent("onXLS",function(){if(this.config.show_loading===!0){var e;e=this.config.show_loading=document.createElement("DIV"),e.className="dhx_loading",e.style.left=Math.round((this._x-128)/2)+"px",e.style.top=Math.round((this._y-15)/2)+"px",this._obj.appendChild(e)}}),scheduler.attachEvent("onXLE",function(){
+var e=this.config.show_loading;e&&"object"==typeof e&&(this._obj.removeChild(e),this.config.show_loading=!0)}),scheduler.ical={parse:function(e){var t=e.match(RegExp(this.c_start+"[^\f]*"+this.c_end,""));if(t.length){t[0]=t[0].replace(/[\r\n]+(?=[a-z \t])/g," "),t[0]=t[0].replace(/\;[^:\r\n]*:/g,":");for(var i,s=[],a=RegExp("(?:"+this.e_start+")([^\f]*?)(?:"+this.e_end+")","g");null!==(i=a.exec(t));){for(var n,r={},d=/[^\r\n]+[\r\n]+/g;null!==(n=d.exec(i[1]));)this.parse_param(n.toString(),r);r.uid&&!r.id&&(r.id=r.uid),
+s.push(r)}return s}},parse_param:function(e,t){var i=e.indexOf(":");if(-1!=i){var s=e.substr(0,i).toLowerCase(),a=e.substr(i+1).replace(/\\\,/g,",").replace(/[\r\n]+$/,"");"summary"==s?s="text":"dtstart"==s?(s="start_date",a=this.parse_date(a,0,0)):"dtend"==s&&(s="end_date",a=this.parse_date(a,0,0)),t[s]=a}},parse_date:function(e,t,i){var s=e.split("T");s[1]&&(t=s[1].substr(0,2),i=s[1].substr(2,2));var a=s[0].substr(0,4),n=parseInt(s[0].substr(4,2),10)-1,r=s[0].substr(6,2);return scheduler.config.server_utc&&!s[1]?new Date(Date.UTC(a,n,r,t,i)):new Date(a,n,r,t,i);
+
+},c_start:"BEGIN:VCALENDAR",e_start:"BEGIN:VEVENT",e_end:"END:VEVENT",c_end:"END:VCALENDAR"},scheduler._lightbox_controls={},scheduler.formSection=function(e){var t=this.config.lightbox.sections,i=0;for(i;i<t.length&&t[i].name!=e;i++);var s=t[i];scheduler._lightbox||scheduler.getLightbox();var a=document.getElementById(s.id),n=a.nextSibling,r={section:s,header:a,node:n,getValue:function(e){return scheduler.form_blocks[s.type].get_value(n,e||{},s)},setValue:function(e,t){return scheduler.form_blocks[s.type].set_value(n,e,t||{},s);
+
+}},d=scheduler._lightbox_controls["get_"+s.type+"_control"];return d?d(r):r},scheduler._lightbox_controls.get_template_control=function(e){return e.control=e.node,e},scheduler._lightbox_controls.get_select_control=function(e){return e.control=e.node.getElementsByTagName("select")[0],e},scheduler._lightbox_controls.get_textarea_control=function(e){return e.control=e.node.getElementsByTagName("textarea")[0],e},scheduler._lightbox_controls.get_time_control=function(e){return e.control=e.node.getElementsByTagName("select"),
+e},scheduler.form_blocks={template:{render:function(e){var t=(e.height||"30")+"px";return"<div class='dhx_cal_ltext dhx_cal_template' style='height:"+t+";'></div>"},set_value:function(e,t,i,s){e.innerHTML=t||""},get_value:function(e,t,i){return e.innerHTML||""},focus:function(e){}},textarea:{render:function(e){var t=(e.height||"130")+"px";return"<div class='dhx_cal_ltext' style='height:"+t+";'><textarea></textarea></div>"},set_value:function(e,t,i){e.firstChild.value=t||""},get_value:function(e,t){
+return e.firstChild.value},focus:function(e){var t=e.firstChild;scheduler._focus(t,!0)}},select:{render:function(e){for(var t=(e.height||"23")+"px",i="<div class='dhx_cal_ltext' style='height:"+t+";'><select style='width:100%;'>",s=0;s<e.options.length;s++)i+="<option value='"+e.options[s].key+"'>"+e.options[s].label+"</option>";return i+="</select></div>"},set_value:function(e,t,i,s){var a=e.firstChild;!a._dhx_onchange&&s.onchange&&(a.onchange=s.onchange,a._dhx_onchange=!0),"undefined"==typeof t&&(t=(a.options[0]||{}).value),
+a.value=t||""},get_value:function(e,t){return e.firstChild.value},focus:function(e){var t=e.firstChild;scheduler._focus(t,!0)}},time:{render:function(e){e.time_format||(e.time_format=["%H:%i","%d","%m","%Y"]),e._time_format_order={};var t=e.time_format,i=scheduler.config,s=this.date.date_part(scheduler._currentDate()),a=1440,n=0;scheduler.config.limit_time_select&&(a=60*i.last_hour+1,n=60*i.first_hour,s.setHours(i.first_hour));for(var r="",d=0;d<t.length;d++){var o=t[d];switch(d>0&&(r+=" "),o){case"%Y":
+e._time_format_order[3]=d,r+="<select>";for(var l=s.getFullYear()-5,h=0;10>h;h++)r+="<option value='"+(l+h)+"'>"+(l+h)+"</option>";r+="</select> ";break;case"%m":e._time_format_order[2]=d,r+="<select>";for(var h=0;12>h;h++)r+="<option value='"+h+"'>"+this.locale.date.month_full[h]+"</option>";r+="</select>";break;case"%d":e._time_format_order[1]=d,r+="<select>";for(var h=1;32>h;h++)r+="<option value='"+h+"'>"+h+"</option>";r+="</select>";break;case"%H:%i":e._time_format_order[0]=d,r+="<select>";var h=n,_=s.getDate();
+
+for(e._time_values=[];a>h;){var c=this.templates.time_picker(s);r+="<option value='"+h+"'>"+c+"</option>",e._time_values.push(h),s.setTime(s.valueOf()+60*this.config.time_step*1e3);var u=s.getDate()!=_?1:0;h=24*u*60+60*s.getHours()+s.getMinutes()}r+="</select>"}}return"<div style='height:30px;padding-top:0px;font-size:inherit;' class='dhx_section_time'>"+r+"<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>"+r+"</div>"},set_value:function(e,t,i,s){function a(e,t,i){for(var a=s._time_values,n=60*i.getHours()+i.getMinutes(),r=n,d=!1,o=0;o<a.length;o++){
+var h=a[o];if(h===n){d=!0;break}n>h&&(r=h)}e[t+l[0]].value=d?n:r,d||r||(e[t+l[0]].selectedIndex=-1),e[t+l[1]].value=i.getDate(),e[t+l[2]].value=i.getMonth(),e[t+l[3]].value=i.getFullYear()}var n,r,d=scheduler.config,o=e.getElementsByTagName("select"),l=s._time_format_order;if(d.full_day){if(!e._full_day){var h="<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> "+scheduler.locale.labels.full_day+"&nbsp;</label></input>";scheduler.config.wide_form||(h=e.previousSibling.innerHTML+h),
+e.previousSibling.innerHTML=h,e._full_day=!0}var _=e.previousSibling.getElementsByTagName("input")[0];_.checked=0===scheduler.date.time_part(i.start_date)&&0===scheduler.date.time_part(i.end_date),o[l[0]].disabled=_.checked,o[l[0]+o.length/2].disabled=_.checked,_.onclick=function(){if(_.checked){var t={};scheduler.form_blocks.time.get_value(e,t,s),n=scheduler.date.date_part(t.start_date),r=scheduler.date.date_part(t.end_date),(+r==+n||+r>=+n&&(0!==i.end_date.getHours()||0!==i.end_date.getMinutes()))&&(r=scheduler.date.add(r,1,"day"));
+
+}else n=null,r=null;o[l[0]].disabled=_.checked,o[l[0]+o.length/2].disabled=_.checked,a(o,0,n||i.start_date),a(o,4,r||i.end_date)}}if(d.auto_end_date&&d.event_duration)for(var c=function(){n=new Date(o[l[3]].value,o[l[2]].value,o[l[1]].value,0,o[l[0]].value),r=new Date(n.getTime()+60*scheduler.config.event_duration*1e3),a(o,4,r)},u=0;4>u;u++)o[u].onchange=c;a(o,0,i.start_date),a(o,4,i.end_date)},get_value:function(e,t,i){var s=e.getElementsByTagName("select"),a=i._time_format_order;if(t.start_date=new Date(s[a[3]].value,s[a[2]].value,s[a[1]].value,0,s[a[0]].value),
+t.end_date=new Date(s[a[3]+4].value,s[a[2]+4].value,s[a[1]+4].value,0,s[a[0]+4].value),!s[a[3]].value||!s[a[3]+4].value){var n=this.getEvent(this._lightbox_id);n&&(t.start_date=n.start_date,t.end_date=n.end_date)}return t.end_date<=t.start_date&&(t.end_date=scheduler.date.add(t.start_date,scheduler.config.time_step,"minute")),{start_date:new Date(t.start_date),end_date:new Date(t.end_date)}},focus:function(e){scheduler._focus(e.getElementsByTagName("select")[0])}}},scheduler.showCover=function(e){
+if(e){e.style.display="block";var t=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,i=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft,s=window.innerHeight||document.documentElement.clientHeight;t?e.style.top=Math.round(t+Math.max((s-e.offsetHeight)/2,0))+"px":e.style.top=Math.round(Math.max((s-e.offsetHeight)/2,0)+9)+"px",document.documentElement.scrollWidth>document.body.offsetWidth?e.style.left=Math.round(i+(document.body.offsetWidth-e.offsetWidth)/2)+"px":e.style.left=Math.round((document.body.offsetWidth-e.offsetWidth)/2)+"px";
+
+}this.show_cover()},scheduler.showLightbox=function(e){if(e){if(!this.callEvent("onBeforeLightbox",[e]))return void(this._new_event&&(this._new_event=null));var t=this.getLightbox();this.showCover(t),this._fill_lightbox(e,t),this.callEvent("onLightbox",[e])}},scheduler._fill_lightbox=function(e,t){var i=this.getEvent(e),s=t.getElementsByTagName("span");scheduler.templates.lightbox_header?(s[1].innerHTML="",s[2].innerHTML=scheduler.templates.lightbox_header(i.start_date,i.end_date,i)):(s[1].innerHTML=this.templates.event_header(i.start_date,i.end_date,i),
+s[2].innerHTML=(this.templates.event_bar_text(i.start_date,i.end_date,i)||"").substr(0,70));for(var a=this.config.lightbox.sections,n=0;n<a.length;n++){var r=a[n],d=document.getElementById(r.id).nextSibling,o=this.form_blocks[r.type],l=void 0!==i[r.map_to]?i[r.map_to]:r.default_value;o.set_value.call(this,d,l,i,r),a[n].focus&&o.focus.call(this,d)}scheduler._lightbox_id=e},scheduler._lightbox_out=function(e){for(var t=this.config.lightbox.sections,i=0;i<t.length;i++){var s=document.getElementById(t[i].id);
+
+s=s?s.nextSibling:s;var a=this.form_blocks[t[i].type],n=a.get_value.call(this,s,e,t[i]);"auto"!=t[i].map_to&&(e[t[i].map_to]=n)}return e},scheduler._empty_lightbox=function(e){{var t=scheduler._lightbox_id,i=this.getEvent(t);this.getLightbox()}this._lame_copy(i,e),this.setEvent(i.id,i),this._edit_stop_event(i,!0),this.render_view_data()},scheduler.hide_lightbox=function(e){this.hideCover(this.getLightbox()),this._lightbox_id=null,this.callEvent("onAfterLightbox",[])},scheduler.hideCover=function(e){
+e&&(e.style.display="none"),this.hide_cover()},scheduler.hide_cover=function(){this._cover&&this._cover.parentNode.removeChild(this._cover),this._cover=null},scheduler.show_cover=function(){if(!this._cover){this._cover=document.createElement("DIV"),this._cover.className="dhx_cal_cover";var e=void 0!==document.height?document.height:document.body.offsetHeight,t=document.documentElement?document.documentElement.scrollHeight:0;this._cover.style.height=Math.max(e,t)+"px",document.body.appendChild(this._cover);
+
+}},scheduler.save_lightbox=function(){var e=this._lightbox_out({},this._lame_copy(this.getEvent(this._lightbox_id)));(!this.checkEvent("onEventSave")||this.callEvent("onEventSave",[this._lightbox_id,e,this._new_event]))&&(this._empty_lightbox(e),this.hide_lightbox())},scheduler.startLightbox=function(e,t){this._lightbox_id=e,this._custom_lightbox=!0,this._temp_lightbox=this._lightbox,this._lightbox=t,this.showCover(t)},scheduler.endLightbox=function(e,t){this._edit_stop_event(scheduler.getEvent(this._lightbox_id),e),
+e&&scheduler.render_view_data(),this.hideCover(t),this._custom_lightbox&&(this._lightbox=this._temp_lightbox,this._custom_lightbox=!1),this._temp_lightbox=this._lightbox_id=null},scheduler.resetLightbox=function(){scheduler._lightbox&&!scheduler._custom_lightbox&&scheduler._lightbox.parentNode.removeChild(scheduler._lightbox),scheduler._lightbox=null},scheduler.cancel_lightbox=function(){this.callEvent("onEventCancel",[this._lightbox_id,this._new_event]),this.endLightbox(!1),this.hide_lightbox()},
+scheduler._init_lightbox_events=function(){this.getLightbox().onclick=function(e){var t=e?e.target:event.srcElement;if(t.className||(t=t.previousSibling),t&&t.className)switch(t.className){case"dhx_save_btn":scheduler.save_lightbox();break;case"dhx_delete_btn":var i=scheduler.locale.labels.confirm_deleting;scheduler._dhtmlx_confirm(i,scheduler.locale.labels.title_confirm_deleting,function(){scheduler.deleteEvent(scheduler._lightbox_id),scheduler._new_event=null,scheduler.hide_lightbox()});break;case"dhx_cancel_btn":
+scheduler.cancel_lightbox();break;default:if(t.getAttribute("dhx_button"))scheduler.callEvent("onLightboxButton",[t.className,t,e]);else{var s,a,n;-1!=t.className.indexOf("dhx_custom_button")&&(-1!=t.className.indexOf("dhx_custom_button_")?(s=t.parentNode.getAttribute("index"),n=t.parentNode.parentNode):(s=t.getAttribute("index"),n=t.parentNode,t=t.firstChild)),s&&(a=scheduler.form_blocks[scheduler.config.lightbox.sections[s].type],a.button_click(s,t,n,n.nextSibling))}}},this.getLightbox().onkeydown=function(e){
+switch((e||event).keyCode){case scheduler.keys.edit_save:if((e||event).shiftKey)return;scheduler.save_lightbox();break;case scheduler.keys.edit_cancel:scheduler.cancel_lightbox()}}},scheduler.setLightboxSize=function(){var e=this._lightbox;if(e){var t=e.childNodes[1];t.style.height="0px",t.style.height=t.scrollHeight+"px",e.style.height=t.scrollHeight+scheduler.xy.lightbox_additional_height+"px",t.style.height=t.scrollHeight+"px"}},scheduler._init_dnd_events=function(){dhtmlxEvent(document.body,"mousemove",scheduler._move_while_dnd),
+dhtmlxEvent(document.body,"mouseup",scheduler._finish_dnd),scheduler._init_dnd_events=function(){}},scheduler._move_while_dnd=function(e){if(scheduler._dnd_start_lb){document.dhx_unselectable||(document.body.className+=" dhx_unselectable",document.dhx_unselectable=!0);var t=scheduler.getLightbox(),i=e&&e.target?[e.pageX,e.pageY]:[event.clientX,event.clientY];t.style.top=scheduler._lb_start[1]+i[1]-scheduler._dnd_start_lb[1]+"px",t.style.left=scheduler._lb_start[0]+i[0]-scheduler._dnd_start_lb[0]+"px";
+
+}},scheduler._ready_to_dnd=function(e){var t=scheduler.getLightbox();scheduler._lb_start=[parseInt(t.style.left,10),parseInt(t.style.top,10)],scheduler._dnd_start_lb=e&&e.target?[e.pageX,e.pageY]:[event.clientX,event.clientY]},scheduler._finish_dnd=function(){scheduler._lb_start&&(scheduler._lb_start=scheduler._dnd_start_lb=!1,document.body.className=document.body.className.replace(" dhx_unselectable",""),document.dhx_unselectable=!1)},scheduler.getLightbox=function(){if(!this._lightbox){var e=document.createElement("DIV");
+
+e.className="dhx_cal_light",scheduler.config.wide_form&&(e.className+=" dhx_cal_light_wide"),scheduler.form_blocks.recurring&&(e.className+=" dhx_cal_light_rec"),/msie|MSIE 6/.test(navigator.userAgent)&&(e.className+=" dhx_ie6"),e.style.visibility="hidden";for(var t=this._lightbox_template,i=this.config.buttons_left,s=0;s<i.length;s++)t+="<div class='dhx_btn_set dhx_left_btn_set "+i[s]+"_set'><div dhx_button='1' class='"+i[s]+"'></div><div>"+scheduler.locale.labels[i[s]]+"</div></div>";i=this.config.buttons_right;
+
+for(var s=0;s<i.length;s++)t+="<div class='dhx_btn_set dhx_right_btn_set "+i[s]+"_set' style='float:right;'><div dhx_button='1' class='"+i[s]+"'></div><div>"+scheduler.locale.labels[i[s]]+"</div></div>";t+="</div>",e.innerHTML=t,scheduler.config.drag_lightbox&&(e.firstChild.onmousedown=scheduler._ready_to_dnd,e.firstChild.onselectstart=function(){return!1},e.firstChild.style.cursor="pointer",scheduler._init_dnd_events()),document.body.insertBefore(e,document.body.firstChild),this._lightbox=e;var a=this.config.lightbox.sections;
+
+t="";for(var s=0;s<a.length;s++){var n=this.form_blocks[a[s].type];if(n){a[s].id="area_"+this.uid();var r="";a[s].button&&(r="<div class='dhx_custom_button' index='"+s+"'><div class='dhx_custom_button_"+a[s].button+"'></div><div>"+this.locale.labels["button_"+a[s].button]+"</div></div>"),this.config.wide_form&&(t+="<div class='dhx_wrap_section'>");var d=this.locale.labels["section_"+a[s].name];"string"!=typeof d&&(d=a[s].name),t+="<div id='"+a[s].id+"' class='dhx_cal_lsection'>"+r+d+"</div>"+n.render.call(this,a[s]),
+t+="</div>"}}for(var o=e.getElementsByTagName("div"),s=0;s<o.length;s++){var l=o[s];if("dhx_cal_larea"==l.className){l.innerHTML=t;break}}this.setLightboxSize(),this._init_lightbox_events(this),e.style.display="none",e.style.visibility="visible"}return this._lightbox},scheduler.attachEvent("onEventIdChange",function(e,t){this._lightbox_id==e&&(this._lightbox_id=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><div class='dhx_cal_larea'></div>",
+scheduler._init_touch_events=function(){"force"!=this.config.touch&&(this.config.touch=this.config.touch&&(-1!=navigator.userAgent.indexOf("Mobile")||-1!=navigator.userAgent.indexOf("iPad")||-1!=navigator.userAgent.indexOf("Android")||-1!=navigator.userAgent.indexOf("Touch"))),this.config.touch&&(this.xy.scroll_width=0,window.navigator.msPointerEnabled?(this._touch_events(["MSPointerMove","MSPointerDown","MSPointerUp"],function(e){return e.pointerType==e.MSPOINTER_TYPE_MOUSE?null:e},function(e){return!e||e.pointerType==e.MSPOINTER_TYPE_MOUSE;
+
+}),this._obj.ondblclick=function(){}):this._touch_events(["touchmove","touchstart","touchend"],function(e){return e.touches&&e.touches.length>1?null:e.touches[0]?{target:e.target,pageX:e.touches[0].pageX,pageY:e.touches[0].pageY}:e},function(){return!1}))},scheduler._touch_events=function(e,t,i){function s(e,t,i){dhtmlxEvent(e,t,function(e){return scheduler._is_lightbox_open()?!0:i(e)})}function a(e,t,i,s){if(e&&t){for(var a=e.target;a&&a!=scheduler._obj;)a=a.parentNode;if(a==scheduler._obj){var n=Math.abs(e.pageY-t.pageY),r=Math.abs(e.pageX-t.pageX);
+
+s>n&&r>i&&(!n||r/n>3)&&(e.pageX>t.pageX?scheduler._click.dhx_cal_next_button():scheduler._click.dhx_cal_prev_button())}}}function n(e){var t=scheduler.getState().drag_mode,i=scheduler.matrix?scheduler.matrix[scheduler._mode]:!1,s=scheduler.render_view_data;"create"==t&&i&&(scheduler.render_view_data=function(){for(var e=scheduler.getState().drag_id,t=scheduler.getEvent(e),s=i.y_property,a=scheduler.getEvents(t.start_date,t.end_date),n=0;n<a.length;n++)a[n][s]!=t[s]&&(a.splice(n,1),n--);t._sorder=a.length-1,
+t._count=a.length,this.render_data([t],scheduler.getState().mode)}),scheduler._on_mouse_move(e),"create"==t&&i&&(scheduler.render_view_data=s)}function r(e){scheduler._hide_global_tip(),h&&(scheduler._on_mouse_up(t(e||event)),scheduler._temp_touch_block=!1),scheduler._drag_id=null,scheduler._drag_mode=null,scheduler._drag_pos=null,clearTimeout(l),h=c=!1,_=!0}var d,o,l,h,_,c,u=(-1!=navigator.userAgent.indexOf("Android")&&-1!=navigator.userAgent.indexOf("WebKit"),0);s(document.body,e[0],function(e){
+if(!i(e)){if(h)return n(t(e)),scheduler._update_global_tip(),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,!1;if(o=t(e),c)return o?void((d.target!=o.target||Math.abs(d.pageX-o.pageX)>5||Math.abs(d.pageY-o.pageY)>5)&&(_=!0,clearTimeout(l))):void(_=!0)}}),s(this._els.dhx_cal_data[0],"scroll",r),s(this._els.dhx_cal_data[0],"touchcancel",r),s(this._els.dhx_cal_data[0],"contextmenu",function(e){return c?(e&&e.preventDefault&&e.preventDefault(),(e||event).cancelBubble=!0,!1):void 0}),s(this._els.dhx_cal_data[0],e[1],function(e){
+if(!i(e)){var s;if(h=_=!1,c=!0,scheduler._temp_touch_block=!0,s=o=t(e),!s)return void(_=!0);var a=new Date;if(!_&&!h&&250>a-u)return scheduler._click.dhx_cal_data(s),window.setTimeout(function(){scheduler._on_dbl_click(s)},50),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,scheduler._block_next_stop=!0,!1;if(u=a,!_&&!h&&scheduler.config.touch_drag){var n=scheduler._locate_event(document.activeElement),r=scheduler._locate_event(s.target),g=d?scheduler._locate_event(d.target):null;if(n&&r&&n==r&&n!=g)return e.preventDefault&&e.preventDefault(),
+e.cancelBubble=!0,scheduler._ignore_next_click=!1,scheduler._click.dhx_cal_data(s),d=s,!1;l=setTimeout(function(){h=!0;var e=d.target;e&&e.className&&-1!=e.className.indexOf("dhx_body")&&(e=e.previousSibling),scheduler._on_mouse_down(d,e),scheduler._drag_mode&&"create"!=scheduler._drag_mode&&scheduler.for_rendered(scheduler._drag_id,function(e,t){e.style.display="none",scheduler._rendered.splice(t,1)}),scheduler.config.touch_tip&&scheduler._show_global_tip(),scheduler._on_mouse_move(d)},scheduler.config.touch_drag),
+d=s}}}),s(this._els.dhx_cal_data[0],e[2],function(e){return i(e)?void 0:(h||a(d,o,200,100),h&&(scheduler._ignore_next_click=!0),r(e),scheduler._block_next_stop?(scheduler._block_next_stop=!1,e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,!1):void 0)}),dhtmlxEvent(document.body,e[2],r)},scheduler._show_global_tip=function(){scheduler._hide_global_tip();var e=scheduler._global_tip=document.createElement("DIV");e.className="dhx_global_tip",scheduler._update_global_tip(1),document.body.appendChild(e);
+
+},scheduler._update_global_tip=function(e){var t=scheduler._global_tip;if(t){var i="";if(scheduler._drag_id&&!e){var s=scheduler.getEvent(scheduler._drag_id);s&&(i="<div>"+(s._timed?scheduler.templates.event_header(s.start_date,s.end_date,s):scheduler.templates.day_date(s.start_date,s.end_date,s))+"</div>")}"create"==scheduler._drag_mode||"new-size"==scheduler._drag_mode?t.innerHTML=(scheduler.locale.drag_to_create||"Drag to create")+i:t.innerHTML=(scheduler.locale.drag_to_move||"Drag to move")+i;
+
+}},scheduler._hide_global_tip=function(){var e=scheduler._global_tip;e&&e.parentNode&&(e.parentNode.removeChild(e),scheduler._global_tip=0)},scheduler._dp_init=function(e){e._methods=["_set_event_text_style","","changeEventId","_dp_hook_delete"],this._dp_hook_delete=function(e){return this.deleteEvent(e,!0)},this.attachEvent("onEventAdded",function(t){!this._loading&&this._validId(t)&&e.setUpdated(t,!0,"inserted")}),this.attachEvent("onConfirmedBeforeEventDelete",function(t){if(this._validId(t)){
+var i=e.getState(t);return"inserted"==i||this._new_event?(e.setUpdated(t,!1),!0):"deleted"==i?!1:"true_deleted"==i?!0:(e.setUpdated(t,!0,"deleted"),!1)}}),this.attachEvent("onEventChanged",function(t){!this._loading&&this._validId(t)&&e.setUpdated(t,!0,"updated")}),e._getRowData=function(e,t){var i=this.obj.getEvent(e),s={};for(var a in i)0!==a.indexOf("_")&&(i[a]&&i[a].getUTCFullYear?s[a]=this.obj.templates.xml_format(i[a]):s[a]=i[a]);return s},e._clearUpdateFlag=function(){},e.attachEvent("insertCallback",scheduler._update_callback),
+e.attachEvent("updateCallback",scheduler._update_callback),e.attachEvent("deleteCallback",function(e,t){this.obj.setUserData(t,this.action_param,"true_deleted"),this.obj.deleteEvent(t)})},scheduler._validId=function(e){return!0},scheduler.setUserData=function(e,t,i){e?this.getEvent(e)[t]=i:this._userdata[t]=i},scheduler.getUserData=function(e,t){return e?this.getEvent(e)[t]:this._userdata[t]},scheduler._set_event_text_style=function(e,t){this.for_rendered(e,function(e){e.style.cssText+=";"+t});var i=this.getEvent(e);
+
+i._text_style=t,this.event_updated(i)},scheduler._update_callback=function(e,t){var i=scheduler._xmlNodeToJSON(e.firstChild);i.text=i.text||i._tagvalue,i.start_date=scheduler.templates.xml_date(i.start_date),i.end_date=scheduler.templates.xml_date(i.end_date),scheduler.addEvent(i)},scheduler._skin_settings={fix_tab_position:[1,0],use_select_menu_space:[1,0],wide_form:[1,0],hour_size_px:[44,42],displayed_event_color:["#ff4a4a","ffc5ab"],displayed_event_text_color:["#ffef80","7e2727"]},scheduler._skin_xy={
+lightbox_additional_height:[90,50],nav_height:[59,22],bar_height:[24,20]},scheduler._configure=function(e,t,i){for(var s in t)"undefined"==typeof e[s]&&(e[s]=t[s][i])},scheduler._skin_init=function(){if(!scheduler.skin)for(var e=document.getElementsByTagName("link"),t=0;t<e.length;t++){var i=e[t].href.match("dhtmlxscheduler_([a-z]+).css");if(i){scheduler.skin=i[1];break}}var s=0;if(!scheduler.skin||"classic"!==scheduler.skin&&"glossy"!==scheduler.skin||(s=1),this._configure(scheduler.config,scheduler._skin_settings,s),
+this._configure(scheduler.xy,scheduler._skin_xy,s),"flat"===scheduler.skin&&(scheduler.xy.scale_height=35,scheduler.templates.hour_scale=function(e){var t=e.getMinutes();t=10>t?"0"+t:t;var i="<span class='dhx_scale_h'>"+e.getHours()+"</span><span class='dhx_scale_m'>&nbsp;"+t+"</span>";return i}),!s){var a=scheduler.config.minicalendar;a&&(a.padding=14),scheduler.templates.event_bar_date=function(e,t,i){return"• <b>"+scheduler.templates.event_date(e)+"</b> "},scheduler.attachEvent("onTemplatesReady",function(){
+var e=scheduler.date.date_to_str("%d");scheduler.templates._old_month_day||(scheduler.templates._old_month_day=scheduler.templates.month_day);var t=scheduler.templates._old_month_day;if(scheduler.templates.month_day=function(i){if("month"==this._mode){var s=e(i);return 1==i.getDate()&&(s=scheduler.locale.date.month_full[i.getMonth()]+" "+s),+i==+scheduler.date.date_part(new Date)&&(s=scheduler.locale.labels.dhx_cal_today_button+" "+s),s}return t.call(this,i)},scheduler.config.fix_tab_position){for(var i=scheduler._els.dhx_cal_navline[0].getElementsByTagName("div"),s=null,a=211,n=0;n<i.length;n++){
+var r=i[n],d=r.getAttribute("name");if(d)switch(r.style.right="auto",d){case"day_tab":r.style.left="14px",r.className+=" dhx_cal_tab_first";break;case"week_tab":r.style.left="75px";break;case"month_tab":r.style.left="136px",r.className+=" dhx_cal_tab_last";break;default:r.style.left=a+"px",r.className+=" dhx_cal_tab_standalone",a=a+14+r.offsetWidth}else 0===(r.className||"").indexOf("dhx_minical_icon")&&r.parentNode==scheduler._els.dhx_cal_navline[0]&&(s=r)}s&&(s.style.left=a+"px")}}),scheduler._skin_init=function(){};
+
+}},window.jQuery&&!function(e){var t=[];e.fn.dhx_scheduler=function(i){if("string"!=typeof i){var s=[];return this.each(function(){if(this&&this.getAttribute&&!this.getAttribute("dhxscheduler")){for(var e in i)"data"!=e&&(scheduler.config[e]=i[e]);this.getElementsByTagName("div").length||(this.innerHTML='<div class="dhx_cal_navline"><div class="dhx_cal_prev_button">&nbsp;</div><div class="dhx_cal_next_button">&nbsp;</div><div class="dhx_cal_today_button"></div><div class="dhx_cal_date"></div><div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div><div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div><div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div></div><div class="dhx_cal_header"></div><div class="dhx_cal_data"></div>',
+this.className+=" dhx_cal_container"),scheduler.init(this,scheduler.config.date,scheduler.config.mode),i.data&&scheduler.parse(i.data),s.push(scheduler)}}),1===s.length?s[0]:s}return t[i]?t[i].apply(this,[]):void e.error("Method "+i+" does not exist on jQuery.dhx_scheduler")}}(jQuery),function(){function e(e,t,i){t&&(e._date=t),i&&(e._mode=i)}var t=scheduler.setCurrentView,i=scheduler.updateView,s=null,a=null,n=function(t,n){var r=this;window.clearTimeout(a),window.clearTimeout(s),e(this,t,n),a=setTimeout(function(){
+r.callEvent("onBeforeViewChange",[r._mode,r._date,n||r._mode,t||r._date])&&(i.call(r,t,n),r.callEvent("onViewChange",[r._mode,r._date]),window.clearTimeout(s),a=0)},scheduler.config.delay_render)},r=function(t,n){var r=this,d=arguments;e(this,t,n),window.clearTimeout(s),s=setTimeout(function(){a||i.apply(r,d)},scheduler.config.delay_render)};scheduler.attachEvent("onSchedulerReady",function(){scheduler.config.delay_render?(scheduler.setCurrentView=n,scheduler.updateView=r):(scheduler.setCurrentView=t,
+scheduler.updateView=i)})}();
+//# sourceMappingURL=sources/dhtmlxscheduler.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.xml
new file mode 100644
index 0000000000..b30fcded8c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.css
new file mode 100644
index 0000000000..30c7bb1148
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.css
@@ -0,0 +1,9 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000}.dhtmlx-info{min-width:120px;font-family:Tahoma;z-index:10000;overflow:hidden;margin:5px 5px 10px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.dhtmlx-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;width:300px;text-align:center;position:fixed;background:-webkit-linear-gradient(top,#fff 1%,#d0d0d0 99%);background:-moz-linear-gradient(top,#fff 1%,#d0d0d0 99%);box-shadow:0 0 14px #888;font-family:Tahoma;z-index:20000;border-radius:6px;border:1px solid #fff}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%)}.dhtmlx-info,.dhtmlx_button,.dhtmlx_popup_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer}.dhtmlx_popup_text{overflow:hidden}.dhtmlx_popup_controls{border-radius:6px;padding:5px}.dhtmlx_button,.dhtmlx_popup_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF}.dhtmlx_popup_button{min-width:120px}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity=20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC)}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid red}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);border-radius:6px;font-size:15px;font-weight:400;-moz-box-sizing:content-box;box-sizing:content-box;color:#fff;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px}.dhtmlx_button input:active,.dhtmlx_button input:focus,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);background:-webkit-linear-gradient(top,#707070 1%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#4c4c4c 99%)}.dhtmlx_popup_title{color:#fff;text-shadow:1px 1px #000;height:40px;line-height:40px;font-size:20px}.dhtmlx_popup_text{margin:15px 15px 5px;font-size:14px;color:#000;min-height:30px;border-radius:6px}.dhtmlx-error,.dhtmlx-info{font-size:14px;color:#000;box-shadow:0 0 10px #888;padding:0;background-color:#FFF;border-radius:3px;border:1px solid #fff}.dhtmlx-info div{padding:5px 10px;background-color:#fff;border-radius:3px;border:1px solid #B8B8B8}.dhtmlx-error{background-color:#d81b1b;border:1px solid #ff3c3c;box-shadow:0 0 10px #000}.dhtmlx-error div{background-color:#d81b1b;border:1px solid #940000;color:#FFF}.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0;cursor:pointer}.dhx_cal_event .dhx_title{height:12px;border-width:0 1px 1px;border-bottom-style:dotted;font-size:7pt;font-weight:700;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px;padding:5px}.dhx_resize_denied,.dhx_resize_denied .dhx_event_resize{cursor:default!important}.dhx_cal_event .dhx_event_resize{cursor:s-resize}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px;position:relative}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;font-family:Tahoma;font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;color:#887A2E;white-space:nowrap;overflow:hidden;cursor:pointer}.dhx_in_move{background-color:#FFFF80}.dhx_cal_event.dhx_cal_editor{border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid #000;margin:0;padding:0;overflow:auto}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer}div.icon_details{background-position:0 0}div.icon_edit{background-position:-22px 0}div.icon_save{background-position:-84px -1px}div.icon_cancel{background-position:-62px 0}div.icon_delete{background-position:-42px 0}.dhx_month_link{position:absolute;box-sizing:border-box;-moz-box-sizing:border-box;text-align:right;cursor:pointer;padding-right:10px}.dhx_month_link a{color:#00f}.dhx_month_link a:hover{text-decoration:underline}.dhx_global_tip{font-family:Tahoma,Helvetica;text-align:center;font-size:20px;position:fixed;top:60px;right:20px;background-color:rgba(255,255,255,.7);color:#000;z-index:10000;padding:20px 30px;width:190px}.dhx_global_tip div{font-size:30px}@media (-moz-touch-enabled){.dhx_cal_container{user-select:none;-moz-user-select:none}}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_light{-webkit-tap-highlight-color:transparent;background-color:#FFE763;border-radius:5px;font-family:Tahoma;font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888}.dhx_mark{position:relative;top:3px;background-image:url(imgs/controls.gif);background-position:0 -43px;padding-left:10px}.dhx_ie6 .dhx_mark{background-position:6px -41px}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;color:#887A2E;padding:2px;margin:0}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap}.dhx_cal_ltitle span{white-space:nowrap}.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:700;padding:5px 0 3px 10px}.dhx_section_time{background-color:#DBCF8C;white-space:nowrap}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:400;line-height:20px;vertical-align:top;cursor:pointer}.dhx_cal_lsection{font-size:18px;font-family:Arial}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:0!important;resize:none}.dhx_time{font-weight:700}.dhx_cal_light .dhx_title{padding-left:10px}.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px}.dhx_btn_set{padding:5px 10px 0;float:left}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer}.dhx_save_btn{background-image:url(imgs/controls.gif);background-position:-84px 0;width:21px}.dhx_cancel_btn{background-image:url(imgs/controls.gif);background-position:-63px 0;width:20px}.dhx_delete_btn{background-image:url(imgs/controls.gif);background-position:-42px 0;width:20px}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:#000;opacity:.1;filter:alpha(opacity=10)}.dhx_custom_button{padding:0 3px;color:#887A2E;font-family:Tahoma;font-size:8pt;background-color:#FFE763;font-weight:400;margin-right:5px;margin-top:0;cursor:pointer}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important}.dhx_section_time{text-align:center}.dhx_cal_light_wide .dhx_cal_larea{width:730px}.dhx_cal_light_wide{width:738px}.dhx_cal_light_wide .dhx_section_time{background:0 0}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px}.dhx_cal_light input{font-family:Tahoma;font-size:8pt;color:#887A2E}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:700;font-size:16px;font-family:Arial;cursor:pointer}.dhx_custom_button{float:right;height:21px}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px}.dhx_minical_popup{position:absolute;z-index:10100;width:251px;height:175px}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%}.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(imgs/collapse_expand_icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16}.dhx_scheduler_agenda .dhx_cal_data{background-image:url(imgs/databg.png)}.dhx_agenda_area{width:100%;overflow-y:auto;background-image:url(imgs/databg.png)}.dhx_agenda_line{height:21px;clear:both;overflow:hidden}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3}.dhx_v_border{position:absolute;left:187px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_agenda_line span{padding-left:5px;line-height:21px}.dhx_year_body{border-left:1px dotted #586A7E}.dhx_year_week{position:relative}.dhx_scale_bar_last{border-right:1px dotted #586A7E}.dhx_year_month{height:18px;padding-top:3px;border:1px dotted #586A7E;text-align:center;vertical-align:middle}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head a,.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a{color:#E2E3E6!important}.dhx_year_body .dhx_month_body{height:0;overflow:hidden}.dhx_month_head.dhx_year_event{background-color:#FFE763}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head{cursor:default}.dhx_year_tooltip{border:1px solid #BBB;background-image:url(imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center}.dhx_text_disabled{color:#887A2E;font-family:Tahoma;font-size:8pt}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;-moz-user-select:-moz-none;-webkit-user-select:none;-user-select:none}.dhx_mini_calendar .dhx_month_head{cursor:pointer}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC}.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(imgs/calendar.gif)}.dhx_matrix_scell{height:100%}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3}.dhx_matrix_cell{background-color:#fff}.dhx_matrix_line{overflow:hidden}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;background:url(imgs/resize_dots.png) repeat-y;position:absolute;top:0;width:4px;height:100%}.dhx_event_resize_start{left:0}.dhx_event_resize_end{right:0}.dhx_data_table.folder .dhx_matrix_cell,.dhx_matrix_scell.folder{background-color:#969394;cursor:pointer}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px}.dhx_matrix_scell.folder{font-weight:700;text-align:left}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left}.dhx_data_table.folder .dhx_matrix_cell{border-right:0}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px}.dhx_section_timeline select{width:552px}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(imgs/databg.png)}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_map_line{height:21px;clear:both;overflow:hidden}.dhx_map{position:absolute}.dhx_map_line .headline_description,.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border-left:0}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden}.dhx_map_line.highlight{background-color:#C4C5CC}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);background-color:#fff;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;font-family:Tahoma;font-size:8pt;opacity:1}.dhx_cal_checkbox label{padding-left:5px}.dhx_cal_light .radio{padding:2px 0 2px 10px}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px}.dhx_cal_light .combo{padding:4px}.dhx_cal_light_wide .dhx_combo_box{width:608px!important;left:10px}.dhx_wa_column{float:left}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543}.dhx_cal_event_selected{background-color:#9cc1db;color:#fff}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px}.dhx_cal_header div div{border-left:1px dotted #8894A3}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC}.dhx_grid_area table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed}.dhx_grid_area td{table-layout:fixed;text-align:center}.dhx_grid_line{height:21px;clear:both;overflow:hidden}.dhx_grid_line div{float:left;cursor:default;padding-top:0;padding-bottom:0;text-align:center;line-height:21px;overflow:hidden}.dhx_grid_area td,.dhx_grid_line div{padding-left:8px;padding-right:8px}.dhx_grid_area tr.dhx_grid_event{height:21px;overflow:hidden;margin:0 0 1px}.dhx_grid_area tr.dhx_grid_event td{border-bottom:1px solid #ECEEF4}.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td,.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td{border-bottom-width:0;border-bottom-style:none}.dhx_grid_area tr.dhx_grid_event:nth-child(2n){background-color:#ECEEF4}.dhx_grid_area .dhx_grid_dummy{table-layout:auto;margin:0!important;padding:0!important}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%}.dhx_grid_event_selected{background-color:#9cc1db!important;color:#fff!important}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(imgs/images.png)}.dhx_marked_timespan{position:absolute;width:100%;margin-left:0}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100)}.dhx_mini_calendar .dhx_marked_timespan,.dhx_scheduler_month .dhx_marked_timespan{display:none}.dhx_now_time{width:100%;border-bottom:2px solid red;z-index:1}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px solid red}.dhx_matrix_now_time{border-left:2px solid red;z-index:1}.dhx_matrix_now_time,.dhx_now_time{opacity:.5}.dhx_cal_quick_info{border:2px solid #888;border-radius:5px;position:absolute;z-index:300;background-color:#8e99ae;background-color:rgba(98,107,127,.5);padding-left:7px;width:300px;transition:left .5s ease,right .5s;-moz-transition:left .5s ease,right .5s;-webkit-transition:left .5s ease,right .5s;-o-transition:left .5s ease,right .5s}.dhx_no_animate{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon{float:right}.dhx_cal_qi_title{padding:5px 0 10px 5px;color:#FFF;letter-spacing:1px}.dhx_cal_qi_tdate{font-size:14px}.dhx_cal_qi_tcontent{font-size:18px;font-weight:700}.dhx_cal_qi_content{border:1px solid #888;background-color:#fefefe;padding:16px 8px;font-size:14px;color:#444;width:275px;overflow:hidden}.dhx_qi_big_icon{border-radius:3px;color:#444;margin:5px 9px 5px 0;min-width:60px;line-height:20px;vertical-align:middle;padding:5px 10px 5px 5px;cursor:pointer;background-color:#fefefe;border-bottom:1px solid #666;border-right:1px solid #666;float:left}.dhx_cal_qi_controls div{float:left;height:20px;text-align:center;line-height:20px}.dhx_qi_big_icon .dhx_menu_icon{margin:0 8px 0 0}.dhx_drag_marker{width:100%;filter:alpha(Opacity=50);opacity:.5;background-color:#FFE763;position:absolute;box-sizing:border-box!important;border-top:1px solid #B6B6B6;border-bottom:1px solid #b6b6b6}.dhx_cal_data,.dhx_cal_data div,.dhx_cal_data table *,.dhx_cal_header,.dhx_cal_header div,.dhx_cal_navline div,.dhx_cal_quick_info,.dhx_cal_quick_info div,.dhx_multi_day,.dhx_multi_day div,.dhx_tooltip_line div{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dhx_cal_data table{border-collapse:separate}.dhx_cal_light .dhx_cal_radio label{margin-bottom:0}.dhx_cal_event div{line-height:normal}.dhx_cal_container{background-color:#C2D5FC;font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48}.dhx_cal_navline div{position:absolute;top:2px;white-space:nowrap}.dhx_cal_navline .dhx_cal_date{font-weight:600;left:210px;padding-top:1px}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;width:29px;height:17px;left:50px;cursor:pointer}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;width:29px;height:17px;left:80px;cursor:pointer}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;width:75px;height:17px;left:112px;cursor:pointer;text-align:center;text-decoration:underline}.dhx_cal_tab{width:59px;height:19px;text-align:center;text-decoration:underline;padding-top:2px;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:700;border:1px dotted #586A7E;border-bottom:0;background-color:#C2D5FC}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;border-top:1px dotted #8894A3;border-right:1px dotted #8894A3;z-index:2;overflow:hidden;color:#2F3A48}.dhx_cal_data{-webkit-tap-highlight-color:transparent;border-top:1px dotted #8894A3;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;-ms-touch-action:pan-y}.dhx_cal_event,.dhx_cal_event_clear,.dhx_cal_event_line{-ms-touch-action:none}.dhx_scale_bar{position:absolute;text-align:center;background-color:#C2D5FC;padding-top:3px;border-left:1px dotted #586A7E}.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png)}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png)}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden}.dhx_month_head{background-color:#EBEFF4;color:#2F3A48;height:18px;padding-right:5px;padding-top:3px;text-align:right;border-right:1px dotted #586A7E}.dhx_month_body{border-right:1px dotted #586A7E;border-bottom:1px dotted #586A7E;background-color:#FFF}.dhx_now .dhx_month_body{background-color:#E2EDFF}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#E2E3E6;color:#94A6BB}.dhx_now .dhx_month_head{background-color:#D1DEF4;font-weight:700}.dhx_scale_ignore{display:none}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50)}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999}.dhx_multi_day,.dhx_multi_day_icon{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3}.dhx_multi_day_icon{background-image:url(imgs/clock_big.gif)}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif)}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff}.dhx_month_body_border,.dhx_month_head_border,.dhx_scale_bar_border,.dhx_scale_hour_border{border-left:1px dotted #8894A3}.dhx_cal_navline .dhx_cal_export{width:18px;height:18px;margin:2px;cursor:pointer;top:0}.dhx_cal_navline .dhx_cal_export.pdf{left:2px;background-image:url(imgs/export_pdf.png)}.dhx_cal_navline .dhx_cal_export.ical{left:24px;background-image:url(imgs/export_ical.png)}.dhx_form_repeat,.dhx_form_repeat input{padding:0 0 0 5px;margin:0;font-family:Tahoma,Verdana;font-size:11px;line-height:24px}.dhx_form_repeat{overflow:hidden;background-color:#FFF4B5}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent}.dhx_repeat_center,.dhx_repeat_divider,.dhx_repeat_left,.dhx_repeat_right{height:115px;-moz-box-sizing:border-box;box-sizing:border-box}.dhx_repeat_center,.dhx_repeat_left{padding:10px 0 0 10px;float:left}.dhx_repeat_left{width:105px}.dhx_repeat_center{width:345px;padding-top:22px}.dhx_repeat_divider{float:left;border-left:1px dotted #DCC43E;width:1px}.dhx_repeat_right{float:right;width:173px;padding:17px 3px 0 10px}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px;line-height:18px;padding:0 0 0 2px}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px solid #7f9db9;line-height:18px}input.dhx_repeat_radio{margin-right:4px}input.dhx_repeat_checkbox{margin:4px 4px 0 0}.dhx_repeat_days td{padding-right:5px}.dhx_repeat_days label{font-size:10px}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.dhx_custom_button_recurring{background-image:url(imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px}.dhx_cal_light_rec{width:640px}.dhx_cal_light_rec .dhx_cal_larea{width:632px}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.xml
new file mode 100644
index 0000000000..dbc52c8261
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_classic.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_classic.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.css
new file mode 100644
index 0000000000..ded85e824b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.css
@@ -0,0 +1,9 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000}.dhtmlx-info{min-width:120px;font-family:Tahoma;z-index:10000;overflow:hidden;margin:5px 5px 10px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.dhtmlx-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;text-align:center;position:fixed;box-shadow:0 0 14px #888;z-index:20000}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%)}.dhtmlx-info,.dhtmlx_button,.dhtmlx_popup_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer}.dhtmlx_popup_text{overflow:hidden}.dhtmlx_popup_controls{border-radius:6px;padding:5px}.dhtmlx_button,.dhtmlx_popup_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF}.dhtmlx_popup_button{min-width:120px}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity=20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC)}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid red}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);border-radius:6px;font-size:15px;font-weight:400;-moz-box-sizing:content-box;box-sizing:content-box;color:#fff;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px}.dhtmlx_button input:active,.dhtmlx_button input:focus,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);background:-webkit-linear-gradient(top,#707070 1%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#4c4c4c 99%)}.dhtmlx_popup_title{color:#fff;text-shadow:1px 1px #000;height:40px;line-height:40px;font-size:20px}.dhtmlx_popup_text{margin:15px 15px 5px;color:#000;min-height:30px;border-radius:6px}.dhtmlx-error,.dhtmlx-info{font-size:14px;color:#000;box-shadow:0 0 10px #888;padding:0;background-color:#FFF;border-radius:3px;border:1px solid #fff}.dhtmlx-info div{padding:5px 10px;background-color:#fff;border-radius:3px;border:1px solid #B8B8B8}.dhtmlx-error{background-color:#d81b1b;border:1px solid #ff3c3c;box-shadow:0 0 10px #000}.dhtmlx-error div{background-color:#d81b1b;border:1px solid #940000;color:#FFF}.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0;cursor:pointer}.dhx_cal_event .dhx_title{border-bottom-style:dotted;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px;padding:5px}.dhx_resize_denied,.dhx_resize_denied .dhx_event_resize{cursor:default!important}.dhx_cal_event .dhx_event_resize{cursor:s-resize}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px;position:relative}.dhx_cal_event_line{padding-left:10px;cursor:pointer;overflow:hidden}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;white-space:nowrap;overflow:hidden;cursor:pointer}.dhx_in_move{background-color:#FFFF80}.dhx_cal_event.dhx_cal_editor{z-index:999;position:absolute;overflow:hidden}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid #000;margin:0;padding:0;overflow:auto}div.dhx_menu_head{background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default}div.dhx_menu_icon{width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer}div.icon_details{background-position:0 0}div.icon_edit{background-position:-22px 0}div.icon_save{background-position:-84px -1px}div.icon_cancel{background-position:-62px 0}div.icon_delete{background-position:-42px 0}.dhx_month_link{position:absolute;box-sizing:border-box;-moz-box-sizing:border-box;text-align:right;cursor:pointer;padding-right:10px}.dhx_month_link a{color:#00f}.dhx_month_link a:hover{text-decoration:underline}.dhx_global_tip{font-family:Tahoma,Helvetica;text-align:center;font-size:20px;position:fixed;top:60px;right:20px;background-color:rgba(255,255,255,.7);color:#000;z-index:10000;padding:20px 30px;width:190px}.dhx_global_tip div{font-size:30px}@media (-moz-touch-enabled){.dhx_cal_container{user-select:none;-moz-user-select:none}}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_light{-webkit-tap-highlight-color:transparent;font-size:8pt;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888}.dhx_mark{position:relative;top:3px;background-image:url(imgs/controls.gif);background-position:0 -43px;padding-left:10px}.dhx_ie6 .dhx_mark{background-position:6px -41px}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;padding:2px;margin:0}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap}.dhx_cal_ltitle span{white-space:nowrap}.dhx_cal_lsection{font-weight:700;padding:5px 0 3px 10px}.dhx_section_time{white-space:nowrap}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;font-size:12px;font-weight:400;line-height:20px;vertical-align:top;cursor:pointer}.dhx_cal_lsection{font-size:18px}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden}.dhx_cal_ltext textarea{overflow:auto;height:100%;width:100%;outline:0!important;resize:none}.dhx_time{font-weight:700}.dhx_cal_larea{overflow:hidden;width:572px;height:1px}.dhx_btn_set{float:left}.dhx_btn_set div{float:left;vertical-align:middle;cursor:pointer}.dhx_save_btn{background-image:url(imgs/controls.gif);background-position:-84px 0;width:21px}.dhx_cancel_btn{background-image:url(imgs/controls.gif);background-position:-63px 0;width:20px}.dhx_delete_btn{background-image:url(imgs/controls.gif);background-position:-42px 0;width:20px}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:#000;opacity:.1;filter:alpha(opacity=10)}.dhx_custom_button{padding:0 3px;font-family:Tahoma;font-size:8pt;font-weight:400;margin-right:5px;margin-top:0;cursor:pointer}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;padding:5px 0 0 10px}.dhx_cal_light_wide .dhx_wrap_section{position:relative;overflow:hidden}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important}.dhx_section_time{text-align:center}.dhx_cal_light_wide .dhx_cal_larea{width:730px}.dhx_cal_light_wide{width:738px}.dhx_cal_light_wide .dhx_section_time{background:0 0}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px}.dhx_cal_light input{font-size:8pt}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;cursor:pointer}.dhx_custom_button{float:right;height:21px}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px}.dhx_minical_popup{position:absolute;z-index:10100;width:251px;height:175px}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%}.dhx_expand_icon{position:absolute;right:0;background-image:url(imgs/collapse_expand_icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16}.dhx_agenda_area{width:100%;overflow-y:auto}.dhx_agenda_line{clear:both;overflow:hidden}.dhx_agenda_line div{float:left;width:188px;text-align:center;overflow:hidden}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3}.dhx_v_border{position:absolute;left:187px;top:0;width:1px;height:100%}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_agenda_line span{padding-left:5px}.dhx_year_week{position:relative}.dhx_year_month{height:18px;padding-top:3px;text-align:center;vertical-align:middle}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head a,.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a{color:#E2E3E6!important}.dhx_year_body .dhx_month_body{height:0;overflow:hidden}.dhx_month_head.dhx_year_event{background-color:#FFE763}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head{cursor:default}.dhx_year_tooltip{border:1px solid #BBB;background-image:url(imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center}.dhx_text_disabled{font-family:Tahoma;font-size:8pt}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;-moz-user-select:-moz-none;-webkit-user-select:none;-user-select:none}.dhx_mini_calendar .dhx_month_head{cursor:pointer}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC}.dhx_cal_navline div.dhx_minical_icon{cursor:pointer;background-image:url(imgs/calendar.gif)}.dhx_matrix_scell{height:100%}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle}.dhx_matrix_cell{background-color:#fff}.dhx_matrix_line{overflow:hidden}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;position:absolute;top:0;width:4px;height:100%}.dhx_event_resize_start{left:0}.dhx_event_resize_end{right:0}.dhx_data_table.folder .dhx_matrix_cell,.dhx_matrix_scell.folder{background-color:#969394;cursor:pointer}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px}.dhx_matrix_scell.folder{font-weight:700;text-align:left}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left}.dhx_data_table.folder .dhx_matrix_cell{border-right:0}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px}.dhx_section_timeline select{width:552px}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_map_line{clear:both;overflow:hidden}.dhx_map{position:absolute}.dhx_map_line .headline_description,.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;overflow:hidden}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);background-color:#fff;cursor:default;padding:10px;position:absolute;z-index:500;font-family:Tahoma;opacity:1}.dhx_cal_checkbox label{padding-left:5px}.dhx_cal_light .radio{padding:2px 0 2px 10px}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px}.dhx_cal_light .combo{padding:4px}.dhx_cal_light_wide .dhx_combo_box{width:608px!important;left:10px}.dhx_wa_column{float:left}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto}.dhx_wa_ev_body{font-size:12px;padding:5px 0 5px 7px}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important}.dhx_cal_event_selected{background-color:#9cc1db;color:#fff}.dhx_second_scale_bar{padding-top:2px}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC}.dhx_grid_area table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed}.dhx_grid_area td{table-layout:fixed;text-align:center}.dhx_grid_line{height:21px;clear:both;overflow:hidden}.dhx_grid_line div{float:left;cursor:default;padding-top:0;padding-bottom:0;text-align:center;line-height:21px;overflow:hidden}.dhx_grid_area td,.dhx_grid_line div{padding-left:8px;padding-right:8px}.dhx_grid_area tr.dhx_grid_event{height:21px;overflow:hidden;margin:0 0 1px}.dhx_grid_area tr.dhx_grid_event td{border-bottom:1px solid #ECEEF4}.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td,.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td{border-bottom-width:0;border-bottom-style:none}.dhx_grid_area tr.dhx_grid_event:nth-child(2n){background-color:#ECEEF4}.dhx_grid_area .dhx_grid_dummy{table-layout:auto;margin:0!important;padding:0!important}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%}.dhx_grid_event_selected{background-color:#9cc1db!important;color:#fff!important}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(imgs/images.png)}.dhx_marked_timespan{position:absolute;width:100%;margin-left:0}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100)}.dhx_mini_calendar .dhx_marked_timespan,.dhx_scheduler_month .dhx_marked_timespan{display:none}.dhx_now_time{width:100%;border-bottom:2px solid red;z-index:1}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px solid red}.dhx_matrix_now_time{border-left:2px solid red;z-index:1}.dhx_matrix_now_time,.dhx_now_time{opacity:.5}.dhx_cal_quick_info{position:absolute;z-index:300;background-color:#8e99ae;background-color:rgba(98,107,127,.5);padding-left:7px;transition:left .5s ease,right .5s;-moz-transition:left .5s ease,right .5s;-webkit-transition:left .5s ease,right .5s;-o-transition:left .5s ease,right .5s}.dhx_no_animate{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon{float:right}.dhx_cal_qi_title{padding:5px 0 10px 5px;letter-spacing:1px}.dhx_cal_qi_tdate{font-size:14px}.dhx_cal_qi_tcontent{font-size:18px;font-weight:700}.dhx_cal_qi_content{background-color:#fefefe;font-size:14px;color:#444;width:275px;overflow:hidden}.dhx_qi_big_icon{margin:5px 9px 5px 0;min-width:60px;line-height:20px;vertical-align:middle;padding:5px 10px 5px 5px;cursor:pointer;background-color:#fefefe}.dhx_cal_qi_controls div{float:left;height:20px;text-align:center;line-height:20px}.dhx_qi_big_icon .dhx_menu_icon{margin:0 8px 0 0}.dhx_drag_marker{width:100%;filter:alpha(Opacity=50);opacity:.5;background-color:#FFE763;position:absolute;box-sizing:border-box!important;border-top:1px solid #B6B6B6;border-bottom:1px solid #b6b6b6}.dhx_cal_data,.dhx_cal_data div,.dhx_cal_data table *,.dhx_cal_header,.dhx_cal_header div,.dhx_cal_navline div,.dhx_cal_quick_info,.dhx_cal_quick_info div,.dhx_multi_day,.dhx_multi_day div,.dhx_tooltip_line div{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dhx_cal_data table{border-collapse:separate}.dhx_cal_light .dhx_cal_radio label{margin-bottom:0}.dhx_cal_event div{line-height:normal}.dhx_cal_container{font-size:8pt;position:relative;overflow:hidden}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48}.dhx_cal_navline div{position:absolute;white-space:nowrap}.dhx_cal_navline .dhx_cal_date{padding-top:1px}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;cursor:pointer}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;cursor:pointer}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;cursor:pointer;text-align:center}.dhx_cal_tab{text-align:center;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px}.dhx_cal_tab.active{cursor:default}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;z-index:2;overflow:hidden;color:#2F3A48}.dhx_cal_data{-webkit-tap-highlight-color:transparent;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;-ms-touch-action:pan-y}.dhx_cal_event,.dhx_cal_event_clear,.dhx_cal_event_line{-ms-touch-action:none}.dhx_scale_bar{position:absolute;text-align:center}.dhx_scale_holder,.dhx_scale_holder_now{position:absolute}.dhx_scale_hour{height:41px;width:50px;text-align:center;line-height:40px;overflow:hidden}.dhx_month_head{padding-right:5px;text-align:right}.dhx_scale_ignore{display:none}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50)}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999}.dhx_multi_day,.dhx_multi_day_icon{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3}.dhx_multi_day{position:absolute}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-repeat:no-repeat}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff}.dhx_form_repeat,.dhx_form_repeat input{padding:0 0 0 5px;margin:0;font-family:Tahoma,Verdana;font-size:11px;line-height:24px}.dhx_form_repeat{overflow:hidden}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent}.dhx_repeat_center,.dhx_repeat_divider,.dhx_repeat_left,.dhx_repeat_right{height:115px;-moz-box-sizing:border-box;box-sizing:border-box}.dhx_repeat_center,.dhx_repeat_left{padding:10px 0 0 10px;float:left}.dhx_repeat_left{width:105px}.dhx_repeat_center{width:345px;padding-top:22px}.dhx_repeat_divider{float:left;width:1px}.dhx_repeat_right{float:right;width:173px;padding:17px 3px 0 10px}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px;line-height:18px;padding:0 0 0 2px}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px solid #7f9db9;line-height:18px}input.dhx_repeat_radio{margin-right:4px}input.dhx_repeat_checkbox{margin:4px 4px 0 0}.dhx_repeat_days td{padding-right:5px}.dhx_repeat_days label{font-size:10px}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px}.dhx_custom_button_recurring{background-position:-5px 20px;width:20px;margin-right:10px}.dhx_cal_light_rec{width:640px}.dhx_cal_light_rec .dhx_cal_larea{width:632px}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px}.dhx_cal_event .dhx_title{border-width:1px 1px 0;-webkit-border-top-left-radius:1px;-webkit-border-top-right-radius:1px;-moz-border-radius-topleft:1px;-moz-border-radius-topright:1px;border-top-left-radius:1px;border-top-right-radius:1px;font-family:"Segoe UI",Arial;font-weight:700;font-size:12px;height:14px;line-height:14px}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{padding-bottom:8px;-webkit-border-bottom-right-radius:1px;-webkit-border-bottom-left-radius:1px;-moz-border-radius-bottomright:1px;-moz-border-radius-bottomleft:1px;border-bottom-right-radius:1px;border-bottom-left-radius:1px}.dhx_cal_event .dhx_header,.dhx_cal_event.dhx_cal_select_menu .dhx_footer{display:none}.dhx_cal_event .dhx_footer{height:15px;border:0;background-color:transparent!important;margin-top:-11px}.dhx_cal_event .dhx_footer:hover{background:url(imgs_flat/resizing.png) center center no-repeat}.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title{background-color:#5B9BE0;border-color:transparent;color:#fff}.dhx_cal_event,.dhx_cal_event_line{-webkit-box-shadow:0 0 1px #FFF;-moz-box-shadow:0 0 1px #FFF;box-shadow:0 0 1px #FFF}.dhx_cal_event.dhx_cal_editor{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border:1px solid transparent}.dhx_cal_editor{font-size:12px;font-family:"Segoe UI",Arial}div.dhx_menu_head,div.dhx_menu_icon{background-image:url(imgs_flat/controls.png)}.dhx_cal_event_line{border:1px solid transparent;background-color:#5B9BE0;color:#FFF;height:17px;line-height:16px;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.dhx_cal_event_line:hover div{background:url(imgs_flat/resize_dots.png) repeat-y}.dhx_cal_event_line_start{-webkit-border-top-left-radius:1px;-webkit-border-bottom-left-radius:1px;-moz-border-radius-topleft:1px;-moz-border-radius-bottomleft:1px;border-top-left-radius:1px;border-bottom-left-radius:1px}.dhx_cal_event_line_end{-webkit-border-top-right-radius:1px;-webkit-border-bottom-right-radius:1px;-moz-border-radius-topright:1px;-moz-border-radius-bottomright:1px;border-top-right-radius:1px;border-bottom-right-radius:1px}.dhx_cal_event .dhx_body,.dhx_cal_event_line{font-size:12px;font-family:"Segoe UI",Arial}.dhx_cal_event:hover .dhx_footer{background:url(imgs_flat/resizing.png) center center no-repeat}.dhx_cal_container{background-color:#fff;font-family:"Segoe UI",Arial}.dhx_cal_data{border-top:1px solid #CECECE}.dhx_scale_holder{background-image:url(imgs_flat/databg.png);border-right:1px solid #CECECE}.dhx_scale_holder_now{background-image:url(imgs_flat/databg_now.png);border-right:1px solid #CECECE}.dhx_scale_hour{border-bottom:1px solid #CECECE;background-color:#fff;font:11px/44px Arial;font-family:"Segoe UI",Arial;font-weight:lighter;color:#767676}.dhx_scale_h{display:inline-block;font-size:22px}.dhx_scale_m{display:inline-block;font-size:11px;line-height:35px;vertical-align:top}.dhx_cal_header{border:1px solid #CECECE;border-left:0;border-bottom:0}.dhx_scale_bar{border-left:1px solid #CECECE;font:12px/16px "Segoe UI",Arial;color:#767676;line-height:30px;padding-top:2px;background-color:#fff}.dhx_scale_bar>a{color:#5780AD;text-decoration:none}.dhx_scale_bar>a:hover{text-decoration:underline}.dhx_month_head>a{color:#5780AD;text-decoration:none}.dhx_month_head>a:hover{text-decoration:underline}.dhx_cal_navline div{top:14px}.dhx_cal_date,.dhx_cal_next_button,.dhx_cal_prev_button,.dhx_cal_tab,.dhx_cal_today_button{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none;color:#454544;height:30px;line-height:30px;background:0 0;font-family:"Segoe UI",Arial;font-weight:lighter}.dhx_cal_navline .dhx_cal_date{border:0;color:#454544;font-family:"Segoe UI",Arial;font-weight:lighter;font-size:22px;text-align:center;top:14px;position:absolute;left:0;width:100%;z-index:-1}.dhx_cal_today_button{background:0 0;color:#5780AD;font-size:13px;font-weight:bolder;left:auto;right:123px;text-decoration:none;width:80px}.dhx_cal_next_button,.dhx_cal_prev_button{left:auto;width:46px}.dhx_cal_prev_button{right:61px;background:url(imgs_flat/arrow_left.png) center center no-repeat}.dhx_cal_next_button{right:14px;background:url(imgs_flat/arrow_right.png) center center no-repeat}.dhx_cal_tab{color:#5780AD;font-size:13px;font-weight:bolder;padding-top:0;text-decoration:none;width:60px}.dhx_cal_tab:hover,.dhx_cal_today_button:hover{text-decoration:underline}.dhx_cal_tab.active{background-color:#5780AD;border:none;color:#FFF;font-family:"Segoe UI",Arial;font-weight:lighter;text-decoration:none}.dhx_cal_tab_standalone{padding:0 5px}.dhx_multi_day,.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-color:#fff}.dhx_multi_day{border-top:1px solid #CECECE}.dhx_multi_day_icon,.dhx_multi_day_icon_small{border-bottom:1px solid #CECECE;border-right:1px solid #CECECE}.dhx_multi_day_icon_small{background-image:url(imgs_flat/clock.png)}.dhx_multi_day_icon{background-image:url(imgs_flat/clock_big.gif)}.dhx_month_body,.dhx_month_head{background-color:#fff}.dhx_after .dhx_month_body,.dhx_after .dhx_month_head,.dhx_before .dhx_month_body,.dhx_before .dhx_month_head{background-color:#F7F7F7}.dhx_month_head{height:21px;padding-top:0;font:12px/21px "Segoe UI",Arial;color:#5780AD;border-right:1px solid #CECECE}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{color:#bbb}.dhx_month_body{border-right:1px solid #CECECE;border-bottom:1px solid #CECECE}.dhx_now .dhx_month_body,.dhx_now .dhx_month_head{background-color:#FFF3A1;font-weight:400}.dhx_cal_event_clear{color:#0E64A0}.dhx_cal_larea{margin-left:0}.dhx_cal_light_wide .dhx_cal_larea{margin-left:3px}.dhx_cal_light_wide .dhx_wrap_section{padding:5px 0}.dhx_cal_larea,.dhx_cal_light,.dhx_cal_light_wide .dhx_wrap_section,.dhx_cal_lsection,.dhx_cal_ltext textarea,.dhx_wrap_section{background-color:#fff;font-family:"Segoe UI",Arial}.dhx_cal_light input,.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.dhx_cal_lsection,.dhx_cal_lsection .dhx_fullday{color:#444;font-family:"Segoe UI",Arial}.dhx_cal_light_wide .dhx_wrap_section{border-top:0;border-bottom:1px solid #CECECE}.dhx_cal_larea{border:1px solid transparent}.dhx_cal_light,.dhx_cal_light select,.dhx_cal_ltext textarea{color:#2E2E2E}.dhx_cal_light{border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.dhx_cal_light_wide .dhx_cal_lsection,.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{font-family:"Segoe UI",Arial;font-size:13px;font-weight:700}.dhx_section_time{background-color:transparent}.dhx_btn_set div:first-child,.dhx_cancel_btn,.dhx_delete_btn,.dhx_save_btn{display:none}.dhx_btn_set,.dhx_btn_set div{height:30px;padding:0 20px;line-height:30px}.dhx_btn_set{margin:12px 0 0;padding:0;font-size:13px;color:#444;font-weight:400;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.dhx_left_btn_set{margin-left:20px}.dhx_right_btn_set{margin-right:20px}.dhx_save_btn_set{border:none;color:#FFF;background-color:#5B9BE0}.dhx_cancel_btn_set{background-color:#FE7510;color:#FFF}.dhx_delete_btn_set{border:1px solid #888;color:#444}.dhx_cal_ltitle{height:30px;line-height:30px;border-bottom:1px solid #CECECE}.dhx_cal_ltitle span{float:left}.dhx_cal_light .dhx_title{font-size:13px;padding-left:13px}.dhx_mark{display:none}.dhx_time{font-size:12px;padding-left:10px}.dhx_close_icon{float:right;width:9px;height:9px;background:url(imgs_flat/close_icon.png) center center no-repeat;padding:10px;margin-top:1px}.dhx_cal_light_wide .dhx_cal_ltext.dhx_cal_template{line-height:22px}.dhx_cal_ltext textarea{line-height:20px;box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid #CECECE;background-color:#F9F9F9}.dhtmlx_modal_box{border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:#fff;font-family:"Segoe UI",Arial;width:330px}.dhtmlx_popup_text{font-size:16px}.dhtmlx_popup_controls{padding-bottom:9px}.dhtmlx_popup_button,.dhtmlx_popup_button div,.dhtmlx_popup_button div:active,.dhtmlx_popup_button:active{color:#444;background:#fff;box-shadow:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.dhtmlx_popup_button{border:1px solid #888}.dhtmlx_popup_button div{border:none}.dhtmlx_popup_button.dhtmlx_ok_button{border-color:#5B9BE0;background-color:#5B9BE0;color:#FFF}.dhtmlx_popup_button.dhtmlx_cancel_button{border-color:#FE7510;background-color:#FE7510;color:#FFF}.dhtmlx_popup_button.dhtmlx_cancel_button div,.dhtmlx_popup_button.dhtmlx_ok_button div{background:0 0;color:#FFF}.dhx_cal_container.dhx_mini_calendar{box-sizing:border-box;border:none;box-shadow:0 2px 10px 0 #AAA;border-radius:0}.dhx_mini_calendar .dhx_year_month{border:1px solid #CECECE;font-family:"Segoe UI",Arial}.dhx_mini_calendar .dhx_month_body,.dhx_mini_calendar .dhx_month_head,.dhx_mini_calendar .dhx_scale_bar,.dhx_mini_calendar .dhx_year_body,.dhx_mini_calendar .dhx_year_month{border-color:transparent}.dhx_mini_calendar .dhx_year_body{padding-top:1px}.dhx_mini_calendar .dhx_scale_bar{border-width:0}.dhx_mini_calendar .dhx_year_week{border-bottom:1px solid #CECECE;padding-top:1px}.dhx_mini_calendar .dhx_month_head{padding-right:0;text-align:center}.dhx_mini_calendar .dhx_cal_next_button,.dhx_mini_calendar .dhx_cal_prev_button{border:0;height:20px}.dhx_cal_navline div.dhx_minical_icon{left:210px;top:14px;width:30px;height:30px;background:url(imgs_flat/calendar.gif) 3px 5px no-repeat}.dhx_cal_event_line .dhx_event_resize{background:0 0}.dhx_cal_event_line .dhx_event_resize:hover{background:url(imgs_flat/resize_dots.png) repeat-y}.dhx_matrix_cell,.dhx_matrix_scell{border-bottom:1px solid #CECECE;border-right:1px solid #CECECE}.dhx_cal_header div div{border-left:1px solid #CECECE}.dhx_matrix_scell{font-size:13px}.dhx_second_scale_bar{border-bottom:1px solid #CECECE}.dhx_repeat_divider{border-left:1px solid #CECECE}.dhx_custom_button{background-color:#fff;border:1px solid #a4a4a4;border-radius:0;color:#444}.dhx_cal_light_wide .dhx_custom_button{margin-top:6px}.dhx_custom_button_recurring{background-image:url(imgs_flat/but_repeat.gif)}input.dhx_repeat_date{border-color:#a8a8a8}.dhx_form_repeat{background-color:transparent}.dhx_agenda_line div,.dhx_v_border{border-right:1px solid #CECECE}.dhx_cal_header .dhx_agenda_line,.dhx_cal_header .dhx_agenda_line div{height:100%;line-height:35px}.dhx_agenda_area,.dhx_scheduler_agenda .dhx_cal_data{background-image:url(imgs_flat/agenda_bg.gif)}.dhx_agenda_line{height:26px}.dhx_agenda_line div,.dhx_agenda_line span{line-height:26px}.dhx_agenda_line .dhx_event_icon{background-position:5px 6px}.dhx_year_month{border:1px solid #CECECE}.dhx_scale_bar_last{border-right:1px solid #CECECE}.dhx_year_body{border-left:1px solid #CECECE}.dhx_expand_icon{top:-3px}.dhx_scale_bar .dhx_cal_next_button,.dhx_scale_bar .dhx_cal_prev_button{width:20px;height:100%;top:0!important;border:0}.dhx_scale_bar .dhx_cal_next_button{right:1px!important;border-left:1px solid #CECECE}.dhx_scale_bar .dhx_cal_prev_button{left:1px!important;border-right:1px solid #CECECE}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border:0}.dhx_map_line .headline_date{border-right:1px solid #CECECE}.dhx_map_line.highlight{background-color:#b3daff}.dhx_cal_header .dhx_map_line{height:100%}.dhx_cal_header .dhx_map_line .headline_date,.dhx_cal_header .dhx_map_line .headline_description{height:100%;line-height:35px}.dhx_map_area{background-image:url(imgs_flat/agenda_bg.gif)}.dhx_map_line{height:26px}.dhx_map_line .line_description,.dhx_map_line div{line-height:26px;height:26px}.dhx_map_line .dhx_event_icon{background-position:5px 6px}.dhx_cal_data div.dhx_map_area,.dhx_cal_header div.dhx_map_line{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-right:1px solid #cecece}.dhtmlXTooltip.tooltip{border-left:1px solid #CECECE;border-top:1px solid #CECECE;color:#747473;font-size:12px;line-height:16px}.dhx_wa_scale_bar{border-top:1px solid #CECECE;border-bottom:1px solid #CECECE}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px solid #CECECE}.dhx_wa_ev_body{border-bottom:1px solid #CECECE}.dhx_wa_scale_bar{background-color:#f0ede7}.dhx_wa_ev_body.dhx_cal_event_selected{background-color:#fff3a1;color:#362d26}.dhx_wa_dnd{background-color:#fddb93!important;color:#747473!important;border:1px solid #ccb177}.dhx_text_disabled{color:#2E2E2E}.dhx_cal_ltext .dhx_text_disabled{line-height:22px}.dhx_grid_v_border{border-right-color:#CECECE}.dhx_cal_header .dhx_grid_line,.dhx_cal_header .dhx_grid_line div{height:100%;line-height:35px}.dhx_cal_header .dhx_grid_line div.dhx_grid_view_sort{height:10px;top:12px}.dhx_month_body_border,.dhx_month_head_border,.dhx_scale_bar_border,.dhx_scale_hour_border{border-left:1px solid #CECECE}.dhx_cal_quick_info{background:rgba(204,204,204,.8);border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-family:"Segoe UI",Arial;width:280px}.dhx_cal_qi_title{color:#000}.dhx_cal_qi_tdate{color:#444}.dhx_cal_qi_content{background:0 0;border:none;padding:10px 8px}.dhx_qi_big_icon{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none;color:#FFF;float:none;font-size:13px}.dhx_qi_big_icon .dhx_menu_icon{display:none!important}.dhx_cal_quick_info .icon_details{background:#5B9BE0;margin-left:100px}.dhx_cal_quick_info .icon_details div{padding-left:12px}.dhx_cal_quick_info .icon_delete{background:#FE7510}.dhx_cal_quick_info .icon_delete div{padding-left:12px}.dhx_cal_navline .dhx_cal_export{width:32px;height:32px;margin:2px;cursor:pointer;top:12px}.dhx_cal_navline .dhx_cal_export.pdf{left:auto;right:249px;background-image:url(imgs_flat/export_pdf.png)}.dhx_cal_navline .dhx_cal_export.ical{left:auto;right:210px;background-image:url(imgs_flat/export_ical.png)}.dhx_mini_calendar{font-family:"Segoe UI",Arial;padding:5px}.dhx_mini_calendar .dhx_calendar_click,.dhx_mini_calendar .dhx_year_event{border-radius:0}.dhx_mini_calendar .dhx_month_head{color:#363636;font-family:"Segoe UI",Arial;font-size:13px;margin:2px}.dhx_mini_calendar .dhx_year_month{color:#454544;line-height:20px;height:25px;font-size:20px;font-weight:lighter}.dhx_mini_calendar .dhx_cal_next_button,.dhx_mini_calendar .dhx_cal_prev_button{top:8px!important}.dhx_mini_calendar .dhx_scale_bar{font-family:"Segoe UI",Arial;font-size:11px}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.xml
new file mode 100644
index 0000000000..1b683fef30
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_flat.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_flat.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.css
new file mode 100644
index 0000000000..f44f14c006
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.css
@@ -0,0 +1,9 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000}.dhtmlx-info{min-width:120px;font-family:Tahoma;z-index:10000;overflow:hidden;margin:5px 5px 10px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.dhtmlx-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;width:300px;text-align:center;position:fixed;background:-webkit-linear-gradient(top,#fff 1%,#d0d0d0 99%);background:-moz-linear-gradient(top,#fff 1%,#d0d0d0 99%);box-shadow:0 0 14px #888;font-family:Tahoma;z-index:20000;border-radius:6px;border:1px solid #fff}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%)}.dhtmlx-info,.dhtmlx_button,.dhtmlx_popup_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer}.dhtmlx_popup_text{overflow:hidden}.dhtmlx_popup_controls{border-radius:6px;padding:5px}.dhtmlx_button,.dhtmlx_popup_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF}.dhtmlx_popup_button{min-width:120px}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity=20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC)}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid red}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);background:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);border-radius:6px;font-size:15px;font-weight:400;-moz-box-sizing:content-box;box-sizing:content-box;color:#fff;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px}.dhtmlx_button input:active,.dhtmlx_button input:focus,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);background:-webkit-linear-gradient(top,#707070 1%,#4c4c4c 99%);background:-moz-linear-gradient(top,#707070 1%,#4c4c4c 99%)}.dhtmlx_popup_title{color:#fff;text-shadow:1px 1px #000;height:40px;line-height:40px;font-size:20px}.dhtmlx_popup_text{margin:15px 15px 5px;font-size:14px;color:#000;min-height:30px;border-radius:6px}.dhtmlx-error,.dhtmlx-info{font-size:14px;color:#000;box-shadow:0 0 10px #888;padding:0;background-color:#FFF;border-radius:3px;border:1px solid #fff}.dhtmlx-info div{padding:5px 10px;background-color:#fff;border-radius:3px;border:1px solid #B8B8B8}.dhtmlx-error{background-color:#d81b1b;border:1px solid #ff3c3c;box-shadow:0 0 10px #000}.dhtmlx-error div{background-color:#d81b1b;border:1px solid #940000;color:#FFF}.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0;cursor:pointer}.dhx_cal_event .dhx_title{height:12px;border-width:0 1px 1px;border-bottom-style:dotted;font-size:7pt;font-weight:700;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px;padding:5px}.dhx_resize_denied,.dhx_resize_denied .dhx_event_resize{cursor:default!important}.dhx_cal_event .dhx_event_resize{cursor:s-resize}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px;position:relative}.dhx_cal_event_line{background-color:#FFE763;border-radius:3px;font-family:Tahoma;font-size:8pt;height:13px;padding-left:10px;cursor:pointer;overflow:hidden}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;white-space:nowrap;overflow:hidden;cursor:pointer}.dhx_in_move{background-color:#FFFF80}.dhx_cal_event.dhx_cal_editor{border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid #000;margin:0;padding:0;overflow:auto}div.dhx_menu_head{background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;cursor:default}div.dhx_menu_icon{width:20px;height:20px;margin-left:-5px;margin-top:0;cursor:pointer}div.icon_details{background-position:0 0}div.icon_edit{background-position:-22px 0}div.icon_save{background-position:-84px -1px}div.icon_cancel{background-position:-62px 0}div.icon_delete{background-position:-42px 0}.dhx_month_link{position:absolute;box-sizing:border-box;-moz-box-sizing:border-box;text-align:right;cursor:pointer;padding-right:10px}.dhx_month_link a{color:#00f}.dhx_month_link a:hover{text-decoration:underline}.dhx_global_tip{font-family:Tahoma,Helvetica;text-align:center;font-size:20px;position:fixed;top:60px;right:20px;background-color:rgba(255,255,255,.7);color:#000;z-index:10000;padding:20px 30px;width:190px}.dhx_global_tip div{font-size:30px}@media (-moz-touch-enabled){.dhx_cal_container{user-select:none;-moz-user-select:none}}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_light{-webkit-tap-highlight-color:transparent;border-radius:5px;font-family:Tahoma;font-size:8pt;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888}.dhx_mark{position:relative;top:3px;background-image:url(imgs/controls.gif);background-position:0 -43px;padding-left:10px}.dhx_ie6 .dhx_mark{background-position:6px -41px}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;padding:2px;margin:0}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap}.dhx_cal_ltitle span{white-space:nowrap}.dhx_cal_lsection{background-color:#DBCF8C;font-weight:700}.dhx_section_time{background-color:#DBCF8C;white-space:nowrap}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;font-weight:400;line-height:20px;vertical-align:top;cursor:pointer}.dhx_cal_lsection{font-family:Arial}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden}.dhx_cal_ltext textarea{overflow:auto;border:none;height:100%;width:100%;outline:0!important;resize:none}.dhx_time{font-weight:700}.dhx_cal_light .dhx_title{padding-left:10px}.dhx_cal_larea{overflow:hidden;margin-left:3px;width:572px;height:1px}.dhx_btn_set{padding:5px 10px 0;float:left}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer}.dhx_save_btn{background-position:-84px 0;width:21px}.dhx_cancel_btn{background-position:-63px 0;width:20px}.dhx_delete_btn{background-position:-42px 0;width:20px}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:#000;opacity:.1;filter:alpha(opacity=10)}.dhx_custom_button{padding:0 3px;font-family:Tahoma;font-size:8pt;background-color:#FFE763;font-weight:400;margin-right:5px;cursor:pointer}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;padding:5px 0 0 10px}.dhx_cal_light_wide .dhx_wrap_section{position:relative;background-color:#DBCF8C;overflow:hidden}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important}.dhx_cal_light_wide .dhx_cal_larea{width:730px}.dhx_cal_light_wide{width:738px}.dhx_cal_light_wide .dhx_section_time{background:0 0}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px}.dhx_cal_light input{font-family:Tahoma;font-size:8pt}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;font-weight:700;font-family:Arial;cursor:pointer}.dhx_custom_button{float:right;height:21px}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px}.dhx_minical_popup{position:absolute;z-index:10100;width:251px;height:175px}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%}.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(imgs/collapse_expand_icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16}.dhx_scheduler_agenda .dhx_cal_data{background-image:url(imgs/databg.png)}.dhx_agenda_area{width:100%;overflow-y:auto;background-image:url(imgs/databg.png)}.dhx_agenda_line{height:21px;clear:both;overflow:hidden}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3}.dhx_v_border{position:absolute;left:187px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_agenda_line span{padding-left:5px;line-height:21px}.dhx_year_week{position:relative}.dhx_year_month{height:18px;padding-top:3px;text-align:center;vertical-align:middle}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head a,.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a{color:#E2E3E6!important}.dhx_year_body .dhx_month_body{height:0;overflow:hidden}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head{cursor:default}.dhx_year_tooltip{border:1px solid #BBB;background-image:url(imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center}.dhx_text_disabled{color:#887A2E;font-family:Tahoma;font-size:8pt}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;-moz-user-select:-moz-none;-webkit-user-select:none;-user-select:none}.dhx_mini_calendar .dhx_month_head{cursor:pointer}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC}.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(imgs/calendar.gif)}.dhx_matrix_scell{height:100%}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle}.dhx_matrix_cell{background-color:#fff}.dhx_matrix_line{overflow:hidden}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;background:url(imgs/resize_dots.png) repeat-y;position:absolute;top:0;width:4px;height:100%}.dhx_event_resize_start{left:0}.dhx_event_resize_end{right:0}.dhx_data_table.folder .dhx_matrix_cell,.dhx_matrix_scell.folder{background-color:#969394;cursor:pointer}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px}.dhx_matrix_scell.folder{font-weight:700;text-align:left}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left}.dhx_data_table.folder .dhx_matrix_cell{border-right:0}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px}.dhx_section_timeline select{width:552px}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(imgs/databg.png)}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(imgs/icon.png) 5px 4px no-repeat;cursor:pointer}.dhx_map_line{height:21px;clear:both;overflow:hidden}.dhx_map{position:absolute}.dhx_map_line .headline_description,.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border-left:0}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden}.dhx_map_line.highlight{background-color:#C4C5CC}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);background-color:#fff;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;font-family:Tahoma;font-size:8pt;opacity:1}.dhx_cal_checkbox label{padding-left:5px}.dhx_cal_light .radio{padding:2px 0 2px 10px}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px}.dhx_cal_light .combo{padding:4px}.dhx_wa_column{float:left}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543}.dhx_cal_event_selected{background-color:#9cc1db;color:#fff}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC}.dhx_grid_area table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed}.dhx_grid_area td{table-layout:fixed;text-align:center}.dhx_grid_line{height:21px;clear:both;overflow:hidden}.dhx_grid_line div{float:left;cursor:default;padding-top:0;padding-bottom:0;text-align:center;line-height:21px;overflow:hidden}.dhx_grid_area td,.dhx_grid_line div{padding-left:8px;padding-right:8px}.dhx_grid_area tr.dhx_grid_event{height:21px;overflow:hidden;margin:0 0 1px}.dhx_grid_area tr.dhx_grid_event td{border-bottom:1px solid #ECEEF4}.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td,.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td{border-bottom-width:0;border-bottom-style:none}.dhx_grid_area tr.dhx_grid_event:nth-child(2n){background-color:#ECEEF4}.dhx_grid_area .dhx_grid_dummy{table-layout:auto;margin:0!important;padding:0!important}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%}.dhx_grid_event_selected{background-color:#9cc1db!important;color:#fff!important}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(imgs/images.png)}.dhx_marked_timespan{position:absolute;width:100%;margin-left:0}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100)}.dhx_mini_calendar .dhx_marked_timespan,.dhx_scheduler_month .dhx_marked_timespan{display:none}.dhx_now_time{width:100%;border-bottom:2px solid red;z-index:1}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px solid red}.dhx_matrix_now_time{border-left:2px solid red;z-index:1}.dhx_matrix_now_time,.dhx_now_time{opacity:.5}.dhx_cal_quick_info{border:2px solid #888;border-radius:5px;position:absolute;z-index:300;background-color:#8e99ae;background-color:rgba(98,107,127,.5);padding-left:7px;width:300px;transition:left .5s ease,right .5s;-moz-transition:left .5s ease,right .5s;-webkit-transition:left .5s ease,right .5s;-o-transition:left .5s ease,right .5s}.dhx_no_animate{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon{float:right}.dhx_cal_qi_title{padding:5px 0 10px 5px;color:#FFF;letter-spacing:1px}.dhx_cal_qi_tdate{font-size:14px}.dhx_cal_qi_tcontent{font-size:18px;font-weight:700}.dhx_cal_qi_content{border:1px solid #888;background-color:#fefefe;padding:16px 8px;font-size:14px;color:#444;width:275px;overflow:hidden}.dhx_qi_big_icon{border-radius:3px;color:#444;margin:5px 9px 5px 0;min-width:60px;line-height:20px;vertical-align:middle;padding:5px 10px 5px 5px;cursor:pointer;background-color:#fefefe;border-bottom:1px solid #666;border-right:1px solid #666;float:left}.dhx_cal_qi_controls div{float:left;height:20px;text-align:center;line-height:20px}.dhx_qi_big_icon .dhx_menu_icon{margin:0 8px 0 0}.dhx_drag_marker{width:100%;filter:alpha(Opacity=50);opacity:.5;background-color:#FFE763;position:absolute;box-sizing:border-box!important;border-top:1px solid #B6B6B6;border-bottom:1px solid #b6b6b6}.dhx_cal_data,.dhx_cal_data div,.dhx_cal_data table *,.dhx_cal_header,.dhx_cal_header div,.dhx_cal_navline div,.dhx_cal_quick_info,.dhx_cal_quick_info div,.dhx_multi_day,.dhx_multi_day div,.dhx_tooltip_line div{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dhx_cal_data table{border-collapse:separate}.dhx_cal_light .dhx_cal_radio label{margin-bottom:0}.dhx_cal_event div{line-height:normal}.dhx_cal_container{font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none}.dhx_cal_navline{position:absolute;z-index:3;width:750px;color:#2F3A48}.dhx_cal_navline div{position:absolute;top:2px;white-space:nowrap}.dhx_cal_navline .dhx_cal_date{font-weight:600}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0}.dhx_cal_prev_button{background-position:0 0;left:50px;cursor:pointer}.dhx_cal_next_button{background-position:-30px 0;left:80px;cursor:pointer}.dhx_cal_today_button{background-position:-60px 0;height:17px;cursor:pointer;text-align:center}.dhx_cal_tab{text-align:center;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:700;background-color:#C2D5FC}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;z-index:2;overflow:hidden;color:#2F3A48}.dhx_cal_data{-webkit-tap-highlight-color:transparent;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;-ms-touch-action:pan-y}.dhx_cal_event,.dhx_cal_event_clear,.dhx_cal_event_line{-ms-touch-action:none}.dhx_scale_bar{position:absolute;text-align:center}.dhx_scale_holder{position:absolute;background-image:url(imgs/databg.png)}.dhx_scale_holder_now{position:absolute;background-image:url(imgs/databg_now.png)}.dhx_scale_hour{height:41px;width:50px;background-color:#C2D5FC;text-align:center;line-height:40px;overflow:hidden}.dhx_month_head{color:#2F3A48;height:18px;padding-right:5px;padding-top:3px;text-align:right}.dhx_month_body{background-color:#FFF}.dhx_now .dhx_month_body{background-color:#E2EDFF}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{color:#94A6BB}.dhx_now .dhx_month_head{font-weight:700}.dhx_scale_ignore{display:none}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50)}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999}.dhx_multi_day,.dhx_multi_day_icon{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3}.dhx_multi_day{position:absolute}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff}.dhx_form_repeat,.dhx_form_repeat input{padding:0 0 0 5px;margin:0;font-family:Tahoma,Verdana;font-size:11px;line-height:24px}.dhx_form_repeat{overflow:hidden;background-color:#FFF4B5}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent}.dhx_repeat_center,.dhx_repeat_divider,.dhx_repeat_left,.dhx_repeat_right{height:115px;-moz-box-sizing:border-box;box-sizing:border-box}.dhx_repeat_center,.dhx_repeat_left{padding:10px 0 0 10px;float:left}.dhx_repeat_left{width:105px}.dhx_repeat_center{width:345px;padding-top:22px}.dhx_repeat_divider{float:left;width:1px}.dhx_repeat_right{float:right;width:173px;padding:17px 3px 0 10px}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px;line-height:18px;padding:0 0 0 2px}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px solid #7f9db9;line-height:18px}input.dhx_repeat_radio{margin-right:4px}input.dhx_repeat_checkbox{margin:4px 4px 0 0}.dhx_repeat_days td{padding-right:5px}.dhx_repeat_days label{font-size:10px}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.dhx_custom_button_recurring{background-image:url(imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px}.dhx_cal_light_rec{width:640px}.dhx_cal_light_rec .dhx_cal_larea{width:632px}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px}.dhx_cal_tab.active{border:none}.dhx_multi_day{border:none;border-top:1px solid #A4BED4}.dhx_multi_day_icon,.dhx_multi_day_icon_small{border-right:none}.dhx_cal_container{background-image:url(imgs_glossy/top-days-bg.png);background-position:0 24px;background-repeat:repeat-x;background-color:#EBEBEB}.dhx_cal_navline{background-color:#EBEBEB;height:23px!important}.dhx_cal_next_button,.dhx_cal_prev_button{background-image:url(imgs_glossy/buttons.gif);width:30px;height:20px}.dhx_cal_today_button{padding-top:3px;background-image:url(imgs_glossy/buttons.gif);width:67px;left:110px;text-decoration:none}.dhx_cal_navline .dhx_cal_date{padding-top:4px;left:230px}.dhx_cal_tab{background-image:url(imgs_glossy/white_tab.png);width:60px;height:15px;text-decoration:none;padding-top:4px;margin-top:4px}.dhx_cal_tab.active{background-image:url(imgs_glossy/blue_tab.png);height:18px;width:60px;padding-top:4px;margin-top:2px}.dhx_cal_data{border-top:1px solid #A4BED4}.dhx_cal_header{background-image:url(imgs_glossy/top-days-bg.png);background-repeat:repeat-x;border-top:0;border-right:0}.dhx_scale_bar{background-image:url(imgs_glossy/top-separator.gif);background-position:0 0;background-repeat:no-repeat;background-color:transparent;border-left:0}.dhx_scale_holder,.dhx_scale_holder_now{border-right:1px solid #A4BED4}.dhx_scale_hour{background-image:url(imgs_glossy/left-time-bg.png);border-bottom:1px solid #A4BED4;color:#2F3A48}.dhx_multi_day{background-image:url(imgs_glossy/multi-days-bg.png);background-repeat:repeat;border-bottom:1px solid #A4BED4;border-left:0}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-image:url(imgs_glossy/clock_big.png);border-bottom:1px solid #A4BED4;border-left:1px solid #fff;background-color:transparent;background-repeat:no-repeat}.dhx_multi_day_icon_small{background-image:url(imgs_glossy/clock_small.png)}.dhx_month_head{background-color:#FFF}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#EFEDE2}.dhx_now .dhx_month_head{background-color:#E4EFFF}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#EFEDE2}.dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000}.dhx_cal_event_clear{color:#000}.dhx_cal_event_line{background-image:url(imgs_glossy/event-bg.png);border:1px solid #FFBD51;color:#000}.dhx_in_move{background-image:url(imgs_glossy/move.png)}.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_title{background-color:#FFE4AB}.dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000}.dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF}.dhx_cal_lsection{background-image:url(imgs_glossy/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000}.dhx_cal_light_wide .dhx_cal_lsection{background-image:url(imgs_glossy/multi-days-bg.png)}.dhx_cal_ltext textarea{background-color:#fff;color:#000}.dhx_cal_light input,.dhx_cal_light select{color:#000}.dhx_cancel_btn,.dhx_delete_btn,.dhx_save_btn{background-image:url(imgs_glossy/controlls5.png)}div.dhx_menu_head{background-image:url(imgs_glossy/controlls5.png);border:1px solid #FFE4AB}div.dhx_menu_icon{background-image:url(imgs_glossy/controlls5.png);border:none}.dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:#fff}.dhx_year_month{background-image:url(imgs_glossy/top-days-bg.png);border:0}.dhx_year_week{background-image:url(imgs_glossy/top-days-bg.png)}.dhx_month_head{border-right:1px solid #A4BED4}.dhx_matrix_cell,.dhx_matrix_scell,.dhx_month_body{border-right:1px solid #A4BED4;border-bottom:1px solid #A4BED4}.dhx_year_body{border-left:1px solid #A4BED4}.dhx_scale_bar_last{border-right:none}.dhx_month_head.dhx_year_event{background-color:#FFE4AB}.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head a,.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a{color:#EFEDE2!important}.dhx_cal_lsection .dhx_readonly{color:#000}.dhx_year_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888}.dhx_custom_button{margin-top:-2px}.dhx_cal_lsection.dhx_cal_checkbox{height:16px;line-height:18px}.dhx_cal_light_wide .dhx_cal_lsection.dhx_cal_checkbox{height:20px}.dhx_cal_light_wide .dhx_combo_box{width:602px!important;left:0}.dhx_cal_checkbox label{vertical-align:top}.dhx_cal_light_wide .dhx_cal_lsection{color:#000}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(imgs_glossy/multi-days-bg.png)}.dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;background-color:#fff}.dhx_custom_button{background:#fff;color:#000}.dhx_form_repeat{background:#fff}.dhx_repeat_divider{border-left:1px solid #A4BED4}.dhx_cal_header.dhx_second_cal_header{background-image:url(imgs_glossy/second-top-days-bg.png);padding-right:20px}.dhx_cal_header div div{border-left:0}.dhx_scale_bar{padding-top:4px}.dhx_second_scale_bar{border-bottom:0;padding-top:4px}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.dhx_cal_lsection .dhx_fullday{color:#000;font-size:14px}.dhx_cal_light_wide .dhx_cal_lsection{font-size:14px;padding-right:10px}.dhx_month_body_border,.dhx_month_head_border,.dhx_scale_bar_border,.dhx_scale_hour_border{border-left:1px solid #A4BED4}.dhx_cal_navline .dhx_cal_export{width:18px;height:18px;margin:2px;cursor:pointer;top:1px}.dhx_cal_navline .dhx_cal_export.pdf{left:2px;background-image:url(imgs_glossy/export_pdf.png)}.dhx_cal_navline .dhx_cal_export.ical{left:24px;background-image:url(imgs_glossy/export_ical.png)}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.xml
new file mode 100644
index 0000000000..39bb9b00f0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/dhtmlxscheduler_glossy.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_glossy.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext.xml
new file mode 100644
index 0000000000..d03257fa11
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ext</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.js
new file mode 100644
index 0000000000..d1498fac8f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.active_link_view="day",scheduler._active_link_click=function(e){var t=e.target||event.srcElement,i=t.getAttribute("jump_to"),s=scheduler.date.str_to_date(scheduler.config.api_date);return i?(scheduler.setCurrentView(s(i),scheduler.config.active_link_view),e&&e.preventDefault&&e.preventDefault(),!1):void 0},scheduler.attachEvent("onTemplatesReady",function(){var e=function(e,t){t=t||e+"_scale_date",scheduler.templates["_active_links_old_"+t]||(scheduler.templates["_active_links_old_"+t]=scheduler.templates[t]);
+
+var i=scheduler.templates["_active_links_old_"+t],s=scheduler.date.date_to_str(scheduler.config.api_date);scheduler.templates[t]=function(e){return"<a jump_to='"+s(e)+"' href='#'>"+i(e)+"</a>"}};if(e("week"),e("","month_day"),this.matrix)for(var t in this.matrix)e(t);this._detachDomEvent(this._obj,"click",scheduler._active_link_click),dhtmlxEvent(this._obj,"click",scheduler._active_link_click)});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_active_links.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.xml
new file mode 100644
index 0000000000..7a2e20b255
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_active_links.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_active_links.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.js
new file mode 100644
index 0000000000..fbe8c8cd2a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.js
@@ -0,0 +1,17 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.date.add_agenda=function(e){return scheduler.date.add(e,1,"year")},scheduler.templates.agenda_time=function(e,t,s){return s._timed?this.day_date(s.start_date,s.end_date,s)+" "+this.event_date(e):scheduler.templates.day_date(e)+" &ndash; "+scheduler.templates.day_date(t)},scheduler.templates.agenda_text=function(e,t,s){return s.text},scheduler.templates.agenda_date=function(){return""},scheduler.date.agenda_start=function(){return scheduler.date.date_part(scheduler._currentDate())},scheduler.attachEvent("onTemplatesReady",function(){
+function e(e){if(e){var t=scheduler.locale.labels;scheduler._els.dhx_cal_header[0].innerHTML="<div class='dhx_agenda_line'><div>"+t.date+"</div><span style='padding-left:25px'>"+t.description+"</span></div>",scheduler._table_view=!0,scheduler.set_sizes()}}function t(){var e=(scheduler._date,scheduler.get_visible_events());e.sort(function(e,t){return e.start_date>t.start_date?1:-1});for(var t="<div class='dhx_agenda_area'>",s=0;s<e.length;s++){var i=e[s],a=i.color?"background:"+i.color+";":"",r=i.textColor?"color:"+i.textColor+";":"",n=scheduler.templates.event_class(i.start_date,i.end_date,i);
+
+t+="<div class='dhx_agenda_line"+(n?" "+n:"")+"' event_id='"+i.id+"' style='"+r+a+(i._text_style||"")+"'><div class='dhx_agenda_event_time'>"+scheduler.templates.agenda_time(i.start_date,i.end_date,i)+"</div>",t+="<div class='dhx_event_icon icon_details'>&nbsp</div>",t+="<span>"+scheduler.templates.agenda_text(i.start_date,i.end_date,i)+"</span></div>"}t+="<div class='dhx_v_border'></div></div>",scheduler._els.dhx_cal_data[0].innerHTML=t,scheduler._els.dhx_cal_data[0].childNodes[0].scrollTop=scheduler._agendaScrollTop||0;
+
+var d=scheduler._els.dhx_cal_data[0].childNodes[0],o=d.childNodes[d.childNodes.length-1];o.style.height=d.offsetHeight<scheduler._els.dhx_cal_data[0].offsetHeight?"100%":d.offsetHeight+"px";var l=scheduler._els.dhx_cal_data[0].firstChild.childNodes;scheduler._els.dhx_cal_date[0].innerHTML=scheduler.templates.agenda_date(scheduler._min_date,scheduler._max_date,scheduler._mode),scheduler._rendered=[];for(var s=0;s<l.length-1;s++)scheduler._rendered[s]=l[s]}var s=scheduler.dblclick_dhx_cal_data;scheduler.dblclick_dhx_cal_data=function(){
+if("agenda"==this._mode)!this.config.readonly&&this.config.dblclick_create&&this.addEventNow();else if(s)return s.apply(this,arguments)},scheduler.attachEvent("onSchedulerResize",function(){return"agenda"==this._mode?(this.agenda_view(!0),!1):!0});var i=scheduler.render_data;scheduler.render_data=function(e){return"agenda"!=this._mode?i.apply(this,arguments):void t()};var a=scheduler.render_view_data;scheduler.render_view_data=function(){return"agenda"==this._mode&&(scheduler._agendaScrollTop=scheduler._els.dhx_cal_data[0].childNodes[0].scrollTop,
+scheduler._els.dhx_cal_data[0].childNodes[0].scrollTop=0),a.apply(this,arguments)},scheduler.agenda_view=function(s){scheduler._min_date=scheduler.config.agenda_start||scheduler.date.agenda_start(scheduler._date),scheduler._max_date=scheduler.config.agenda_end||scheduler.date.add_agenda(scheduler._min_date,1),scheduler._table_view=!0,e(s),s&&t()}});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_agenda_view.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.xml
new file mode 100644
index 0000000000..24d9dc2627
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_agenda_view.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_agenda_view.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.js
new file mode 100644
index 0000000000..616ec139c9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.js
@@ -0,0 +1,18 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+!function(){scheduler.config.all_timed="short";var e=function(e){return!((e.end_date-e.start_date)/36e5>=24)};scheduler._safe_copy=function(e){var t=null,a=null;return e.event_pid&&(t=scheduler.getEvent(e.event_pid)),t&&t.isPrototypeOf(e)?(a=scheduler._copy_event(e),delete a.event_length,delete a.event_pid,delete a.rec_pattern,delete a.rec_type):a=scheduler._lame_clone(e),a};var t=scheduler._pre_render_events_line;scheduler._pre_render_events_line=function(a,i){function n(e){var t=r(e.start_date);
+
+return+e.end_date>+t}function r(e){var t=scheduler.date.add(e,1,"day");return t=scheduler.date.date_part(t)}function l(e,t){var a=scheduler.date.date_part(new Date(e));return a.setHours(t),a}if(!this.config.all_timed)return t.call(this,a,i);for(var d=0;d<a.length;d++){var o=a[d];if(!o._timed)if("short"!=this.config.all_timed||e(o)){var s=this._safe_copy(o);s.start_date=new Date(s.start_date),n(o)?(s.end_date=r(s.start_date),24!=this.config.last_hour&&(s.end_date=l(s.start_date,this.config.last_hour))):s.end_date=new Date(o.end_date);
+
+var _=!1;s.start_date<this._max_date&&s.end_date>this._min_date&&s.start_date<s.end_date&&(a[d]=s,_=!0);var c=this._safe_copy(o);if(c.end_date=new Date(c.end_date),c.start_date<this._min_date?c.start_date=l(this._min_date,this.config.first_hour):c.start_date=l(r(o.start_date),this.config.first_hour),c.start_date<this._max_date&&c.start_date<c.end_date){if(!_){a[d--]=c;continue}a.splice(d+1,0,c)}}else a.splice(d--,1)}var u="move"==this._drag_mode?!1:i;return t.call(this,a,u)};var a=scheduler.get_visible_events;
+
+scheduler.get_visible_events=function(e){return this.config.all_timed&&this.config.multi_day?a.call(this,!1):a.call(this,e)},scheduler.attachEvent("onBeforeViewChange",function(e,t,a,i){return scheduler._allow_dnd="day"==a||"week"==a,!0}),scheduler._is_main_area_event=function(t){return!!(t._timed||this.config.all_timed===!0||"short"==this.config.all_timed&&e(t))};var i=scheduler.updateEvent;scheduler.updateEvent=function(e){var t,a=scheduler.config.all_timed&&!(scheduler.isOneDayEvent(scheduler._events[e])||scheduler.getState().drag_id);
+
+a&&(t=scheduler.config.update_render,scheduler.config.update_render=!0),i.apply(scheduler,arguments),a&&(scheduler.config.update_render=t)}}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_all_timed.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.xml
new file mode 100644
index 0000000000..b386f077d2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_all_timed.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_all_timed.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.js
new file mode 100644
index 0000000000..ceac47dc1e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.js
@@ -0,0 +1,15 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+!function(){function e(e){var a=scheduler._get_section_view();a&&e&&(t=scheduler.getEvent(e)[scheduler._get_section_property()])}var t,a;scheduler.config.collision_limit=1,scheduler.attachEvent("onBeforeDrag",function(t){return e(t),!0}),scheduler.attachEvent("onBeforeLightbox",function(t){var i=scheduler.getEvent(t);return a=[i.start_date,i.end_date],e(t),!0}),scheduler.attachEvent("onEventChanged",function(e){if(!e||!scheduler.getEvent(e))return!0;var t=scheduler.getEvent(e);if(!scheduler.checkCollision(t)){
+if(!a)return!1;t.start_date=a[0],t.end_date=a[1],t._timed=this.isOneDayEvent(t)}return!0}),scheduler.attachEvent("onBeforeEventChanged",function(e,t,a){return scheduler.checkCollision(e)}),scheduler.attachEvent("onEventAdded",function(e,t){var a=scheduler.checkCollision(t);a||scheduler.deleteEvent(e)}),scheduler.attachEvent("onEventSave",function(e,t,a){if(t=scheduler._lame_clone(t),t.id=e,!t.start_date||!t.end_date){var i=scheduler.getEvent(e);t.start_date=new Date(i.start_date),t.end_date=new Date(i.end_date);
+
+}return t.rec_type&&scheduler._roll_back_dates(t),scheduler.checkCollision(t)}),scheduler._check_sections_collision=function(e,t){var a=scheduler._get_section_property();return e[a]==t[a]&&e.id!=t.id?!0:!1},scheduler.checkCollision=function(e){var a=[],i=scheduler.config.collision_limit;if(e.rec_type)for(var n=scheduler.getRecDates(e),r=0;r<n.length;r++)for(var l=scheduler.getEvents(n[r].start_date,n[r].end_date),d=0;d<l.length;d++)(l[d].event_pid||l[d].id)!=e.id&&a.push(l[d]);else{a=scheduler.getEvents(e.start_date,e.end_date);
+
+for(var o=0;o<a.length;o++)if(a[o].id==e.id){a.splice(o,1);break}}var s=scheduler._get_section_view(),_=scheduler._get_section_property(),c=!0;if(s){for(var u=0,o=0;o<a.length;o++)a[o].id!=e.id&&this._check_sections_collision(a[o],e)&&u++;u>=i&&(c=!1)}else a.length>=i&&(c=!1);if(!c){var h=!scheduler.callEvent("onEventCollision",[e,a]);return h||(e[_]=t||e[_]),h}return c}}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_collision.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.xml
new file mode 100644
index 0000000000..315f0d11d1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_collision.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_collision.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.js
new file mode 100644
index 0000000000..3162403c78
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.js
@@ -0,0 +1,20 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+!function(){scheduler.config.container_autoresize=!0,scheduler.config.month_day_min_height=90;var e=scheduler._pre_render_events,t=!0;scheduler._pre_render_events=function(a,i){if(!scheduler.config.container_autoresize||!t)return e.apply(this,arguments);var n=this.xy.bar_height,l=this._colsS.heights,r=this._colsS.heights=[0,0,0,0,0,0,0],d=this._els.dhx_cal_data[0];if(a=this._table_view?this._pre_render_events_table(a,i):this._pre_render_events_line(a,i),this._table_view)if(i)this._colsS.heights=l;
+else{var o=d.firstChild;if(o.rows){for(var s=0;s<o.rows.length;s++){if(r[s]++,r[s]*n>this._colsS.height-this.xy.month_head_height){var _=o.rows[s].cells,c=this._colsS.height-this.xy.month_head_height;1*this.config.max_month_events!==this.config.max_month_events||r[s]<=this.config.max_month_events?c=r[s]*n:(this.config.max_month_events+1)*n>this._colsS.height-this.xy.month_head_height&&(c=(this.config.max_month_events+1)*n);for(var u=0;u<_.length;u++)_[u].childNodes[1].style.height=c+"px";r[s]=(r[s-1]||0)+_[0].offsetHeight;
+
+}r[s]=(r[s-1]||0)+o.rows[s].cells[0].offsetHeight}r.unshift(0),o.parentNode.offsetHeight<o.parentNode.scrollHeight&&!o._h_fix}else if(a.length||"visible"!=this._els.dhx_multi_day[0].style.visibility||(r[0]=-1),a.length||-1==r[0]){var h=(o.parentNode.childNodes,(r[0]+1)*n+1+"px");d.style.top=this._els.dhx_cal_navline[0].offsetHeight+this._els.dhx_cal_header[0].offsetHeight+parseInt(h,10)+"px",d.style.height=this._obj.offsetHeight-parseInt(d.style.top,10)-(this.xy.margin_top||0)+"px";var p=this._els.dhx_multi_day[0];
+
+p.style.height=h,p.style.visibility=-1==r[0]?"hidden":"visible",p=this._els.dhx_multi_day[1],p.style.height=h,p.style.visibility=-1==r[0]?"hidden":"visible",p.className=r[0]?"dhx_multi_day_icon":"dhx_multi_day_icon_small",this._dy_shift=(r[0]+1)*n,r[0]=0}}return a};var a=["dhx_cal_navline","dhx_cal_header","dhx_multi_day","dhx_cal_data"],i=function(e){for(var t=0,i=0;i<a.length;i++){var n=a[i],l=scheduler._els[n]?scheduler._els[n][0]:null,r=0;switch(n){case"dhx_cal_navline":case"dhx_cal_header":r=parseInt(l.style.height,10);
+
+break;case"dhx_multi_day":r=l?l.offsetHeight:0,1==r&&(r=0);break;case"dhx_cal_data":var d=scheduler.getState().mode;if(r=l.childNodes[1]&&"month"!=d?l.childNodes[1].offsetHeight:Math.max(l.offsetHeight-1,l.scrollHeight),"month"==d){if(scheduler.config.month_day_min_height&&!e){var o=l.getElementsByTagName("tr").length;r=o*scheduler.config.month_day_min_height}e&&(l.style.height=r+"px")}if(scheduler.matrix&&scheduler.matrix[d])if(e)r+=2,l.style.height=r+"px";else{r=2;for(var s=scheduler.matrix[d],_=s.y_unit,c=0;c<_.length;c++)r+=_[c].children?s.folder_dy||s.dy:s.dy;
+
+}("day"==d||"week"==d)&&(r+=2)}t+=r}scheduler._obj.style.height=t+"px",e||scheduler.updateView()},n=function(){if(!scheduler.config.container_autoresize||!t)return!0;var e=scheduler.getState().mode;i(),(scheduler.matrix&&scheduler.matrix[e]||"month"==e)&&window.setTimeout(function(){i(!0)},1)};scheduler.attachEvent("onViewChange",n),scheduler.attachEvent("onXLE",n),scheduler.attachEvent("onEventChanged",n),scheduler.attachEvent("onEventCreated",n),scheduler.attachEvent("onEventAdded",n),scheduler.attachEvent("onEventDeleted",n),
+scheduler.attachEvent("onAfterSchedulerResize",n),scheduler.attachEvent("onClearAll",n),scheduler.attachEvent("onBeforeExpand",function(){return t=!1,!0}),scheduler.attachEvent("onBeforeCollapse",function(){return t=!0,!0})}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_container_autoresize.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.xml
new file mode 100644
index 0000000000..ca59be562b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_container_autoresize.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_container_autoresize.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.js
new file mode 100644
index 0000000000..f7581fb102
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.js
@@ -0,0 +1,13 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+!function(){function e(e,t,a){var i=e+"="+a+(t?"; "+t:"");document.cookie=i}function t(e){var t=e+"=";if(document.cookie.length>0){var a=document.cookie.indexOf(t);if(-1!=a){a+=t.length;var i=document.cookie.indexOf(";",a);return-1==i&&(i=document.cookie.length),document.cookie.substring(a,i)}}return""}var a=!0;scheduler.attachEvent("onBeforeViewChange",function(i,n,l,r){if(a&&scheduler._get_url_nav){var d=scheduler._get_url_nav();(d.date||d.mode||d.event)&&(a=!1)}if(a){a=!1;var o=t("scheduler_settings");
+
+if(o){scheduler._min_date||(scheduler._min_date=r),o=unescape(o).split("@"),o[0]=this.templates.xml_date(o[0]);var s=this.isViewExists(o[1])?o[1]:l,_=isNaN(+o[0])?r:o[0];return window.setTimeout(function(){scheduler.setCurrentView(_,s)},1),!1}}var c=escape(this.templates.xml_format(r||n)+"@"+(l||i));return e("scheduler_settings","expires=Sun, 31 Jan 9999 22:00:00 GMT",c),!0});var i=scheduler._load;scheduler._load=function(){var e=arguments;if(!scheduler._date&&scheduler._load_mode){var t=this;window.setTimeout(function(){
+i.apply(t,e)},1)}else i.apply(this,e)}}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_cookie.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.xml
new file mode 100644
index 0000000000..20c45c1d7b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_cookie.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_cookie.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.js
new file mode 100644
index 0000000000..230fd7e71b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.js
@@ -0,0 +1,18 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.form_blocks.combo={render:function(e){e.cached_options||(e.cached_options={});var t="";return t+="<div class='"+e.type+"' style='height:"+(e.height||20)+"px;' ></div>"},set_value:function(e,t,a,i){!function(){function t(){if(e._combo&&e._combo.DOMParent){var t=e._combo;t.unload?t.unload():t.destructor&&t.destructor(),t.DOMParent=t.DOMelem=null}}t();var a=scheduler.attachEvent("onAfterLightbox",function(){t(),scheduler.detachEvent(a)})}(),window.dhx_globalImgPath=i.image_path||"/",e._combo=new dhtmlXCombo(e,i.name,e.offsetWidth-8),
+i.onchange&&e._combo.attachEvent("onChange",i.onchange),i.options_height&&e._combo.setOptionHeight(i.options_height);var n=e._combo;if(n.enableFilteringMode(i.filtering,i.script_path||null,!!i.cache),i.script_path){var r=a[i.map_to];r?i.cached_options[r]?(n.addOption(r,i.cached_options[r]),n.disable(1),n.selectOption(0),n.disable(0)):dhtmlxAjax.get(i.script_path+"?id="+r+"&uid="+scheduler.uid(),function(e){var t=e.doXPath("//option")[0],a=t.childNodes[0].nodeValue;i.cached_options[r]=a,n.addOption(r,a),
+n.disable(1),n.selectOption(0),n.disable(0)}):n.setComboValue("")}else{for(var l=[],d=0;d<i.options.length;d++){var o=i.options[d],s=[o.key,o.label,o.css];l.push(s)}if(n.addOption(l),a[i.map_to]){var _=n.getIndexByValue(a[i.map_to]);n.selectOption(_)}}},get_value:function(e,t,a){var i=e._combo.getSelectedValue();return a.script_path&&(a.cached_options[i]=e._combo.getSelectedText()),i},focus:function(e){}},scheduler.form_blocks.radio={render:function(e){var t="";t+="<div class='dhx_cal_ltext dhx_cal_radio' style='height:"+e.height+"px;' >";
+
+for(var a=0;a<e.options.length;a++){var i=scheduler.uid();t+="<input id='"+i+"' type='radio' name='"+e.name+"' value='"+e.options[a].key+"'><label for='"+i+"'> "+e.options[a].label+"</label>",e.vertical&&(t+="<br/>")}return t+="</div>"},set_value:function(e,t,a,i){for(var n=e.getElementsByTagName("input"),r=0;r<n.length;r++){n[r].checked=!1;var l=a[i.map_to]||t;n[r].value==l&&(n[r].checked=!0)}},get_value:function(e,t,a){for(var i=e.getElementsByTagName("input"),n=0;n<i.length;n++)if(i[n].checked)return i[n].value;
+
+},focus:function(e){}},scheduler.form_blocks.checkbox={render:function(e){return scheduler.config.wide_form?'<div class="dhx_cal_wide_checkbox" '+(e.height?"style='height:"+e.height+"px;'":"")+"></div>":""},set_value:function(e,t,a,i){e=document.getElementById(i.id);var n=scheduler.uid(),r="undefined"!=typeof i.checked_value?t==i.checked_value:!!t;e.className+=" dhx_cal_checkbox";var l="<input id='"+n+"' type='checkbox' value='true' name='"+i.name+"'"+(r?"checked='true'":"")+"'>",d="<label for='"+n+"'>"+(scheduler.locale.labels["section_"+i.name]||i.name)+"</label>";
+
+if(scheduler.config.wide_form?(e.innerHTML=d,e.nextSibling.innerHTML=l):e.innerHTML=l+d,i.handler){var o=e.getElementsByTagName("input")[0];o.onclick=i.handler}},get_value:function(e,t,a){e=document.getElementById(a.id);var i=e.getElementsByTagName("input")[0];return i||(i=e.nextSibling.getElementsByTagName("input")[0]),i.checked?a.checked_value||!0:a.unchecked_value||!1},focus:function(e){}};
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_editors.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.xml
new file mode 100644
index 0000000000..bb43468a39
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_editors.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_editors.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.js
new file mode 100644
index 0000000000..77b5b68cea
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.js
@@ -0,0 +1,13 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.expand=function(){if(scheduler.callEvent("onBeforeExpand",[])){var e=scheduler._obj;do e._position=e.style.position||"",e.style.position="static";while((e=e.parentNode)&&e.style);e=scheduler._obj,e.style.position="absolute",e._width=e.style.width,e._height=e.style.height,e.style.width=e.style.height="100%",e.style.top=e.style.left="0px";var t=document.body;t.scrollTop=0,t=t.parentNode,t&&(t.scrollTop=0),document.body._overflow=document.body.style.overflow||"",document.body.style.overflow="hidden",
+scheduler._maximize(),scheduler.callEvent("onExpand",[])}},scheduler.collapse=function(){if(scheduler.callEvent("onBeforeCollapse",[])){var e=scheduler._obj;do e.style.position=e._position;while((e=e.parentNode)&&e.style);e=scheduler._obj,e.style.width=e._width,e.style.height=e._height,document.body.style.overflow=document.body._overflow,scheduler._maximize(),scheduler.callEvent("onCollapse",[])}},scheduler.attachEvent("onTemplatesReady",function(){var e=document.createElement("DIV");e.className="dhx_expand_icon",
+scheduler.toggleIcon=e,scheduler._obj.appendChild(e),e.onclick=function(){scheduler.expanded?scheduler.collapse():scheduler.expand()}}),scheduler._maximize=function(){this.expanded=!this.expanded,this.toggleIcon.style.backgroundPosition="0 "+(this.expanded?"0":"18")+"px";for(var e=["left","top"],t=0;t<e.length;t++){var a=(scheduler.xy["margin_"+e[t]],scheduler["_prev_margin_"+e[t]]);scheduler.xy["margin_"+e[t]]?(scheduler["_prev_margin_"+e[t]]=scheduler.xy["margin_"+e[t]],scheduler.xy["margin_"+e[t]]=0):a&&(scheduler.xy["margin_"+e[t]]=scheduler["_prev_margin_"+e[t]],
+delete scheduler["_prev_margin_"+e[t]])}scheduler.callEvent("onSchedulerResize",[])&&(scheduler.update_view(),scheduler.callEvent("onAfterSchedulerResize"))};
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_expand.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.xml
new file mode 100644
index 0000000000..1cf0215a62
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_expand.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_expand.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.js
new file mode 100644
index 0000000000..ebec3962f4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.js
@@ -0,0 +1,10 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){for(var e=document.body.getElementsByTagName("DIV"),t=0;t<e.length;t++){var a=e[t].className||"";if(a=a.split(":"),2==a.length&&"template"==a[0]){var i='return "'+(e[t].innerHTML||"").replace(/\"/g,'\\"').replace(/[\n\r]+/g,"")+'";';i=unescape(i).replace(/\{event\.([a-z]+)\}/g,function(e,t){return'"+ev.'+t+'+"'}),scheduler.templates[a[1]]=Function("start","end","ev",i),e[t].style.display="none"}}});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_html_templates.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.xml
new file mode 100644
index 0000000000..c090fdb041
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_html_templates.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_html_templates.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.js
new file mode 100644
index 0000000000..3b25b3447a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.js
@@ -0,0 +1,15 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler._temp_key_scope=function(){function e(e){delete e.rec_type,delete e.rec_pattern,delete e.event_pid,delete e.event_length}scheduler.config.key_nav=!0;var t,a,i=null;scheduler.attachEvent("onMouseMove",function(e,i){t=scheduler.getActionData(i).date,a=scheduler.getActionData(i).section}),scheduler._make_pasted_event=function(i){var n=i.end_date-i.start_date,r=scheduler._lame_copy({},i);if(e(r),r.start_date=new Date(t),r.end_date=new Date(r.start_date.valueOf()+n),a){var l=scheduler._get_section_property();
+
+scheduler.config.multisection?r[l]=i[l]:r[l]=a}return r},scheduler._do_paste=function(e,t,a){scheduler.addEvent(t),scheduler.callEvent("onEventPasted",[e,t,a])},scheduler._is_key_nav_active=function(){return this._is_initialized()&&!this._is_lightbox_open()&&this.config.key_nav?!0:!1},dhtmlxEvent(document,_isOpera?"keypress":"keydown",function(e){if(!scheduler._is_key_nav_active())return!0;if(e=e||event,37==e.keyCode||39==e.keyCode){e.cancelBubble=!0;var t=scheduler.date.add(scheduler._date,37==e.keyCode?-1:1,scheduler._mode);
+
+return scheduler.setCurrentView(t),!0}var a=scheduler._select_id;if(e.ctrlKey&&67==e.keyCode)return a&&(scheduler._buffer_id=a,i=!0,scheduler.callEvent("onEventCopied",[scheduler.getEvent(a)])),!0;if(e.ctrlKey&&88==e.keyCode&&a){i=!1,scheduler._buffer_id=a;var n=scheduler.getEvent(a);scheduler.updateEvent(n.id),scheduler.callEvent("onEventCut",[n])}if(e.ctrlKey&&86==e.keyCode){var n=scheduler.getEvent(scheduler._buffer_id);if(n){var r=scheduler._make_pasted_event(n);if(i)r.id=scheduler.uid(),scheduler._do_paste(i,r,n);
+else{var l=scheduler.callEvent("onBeforeEventChanged",[r,e,!1,n]);l&&(scheduler._do_paste(i,r,n),i=!0)}}return!0}})},scheduler._temp_key_scope();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_key_nav.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.xml
new file mode 100644
index 0000000000..9a57988cfe
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_key_nav.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_key_nav.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.js
new file mode 100644
index 0000000000..c5056b1bdd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.js
@@ -0,0 +1,37 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){this.layers.sort(function(e,t){return e.zIndex-t.zIndex}),scheduler._dp_init=function(e){e._methods=["_set_event_text_style","","changeEventId","deleteEvent"],this.attachEvent("onEventAdded",function(t){!this._loading&&this.validId(t)&&this.getEvent(t)&&this.getEvent(t).layer==e.layer&&e.setUpdated(t,!0,"inserted")}),this.attachEvent("onBeforeEventDelete",function(t){if(this.getEvent(t)&&this.getEvent(t).layer==e.layer){if(!this.validId(t))return;
+
+var a=e.getState(t);return"inserted"==a||this._new_event?(e.setUpdated(t,!1),!0):"deleted"==a?!1:"true_deleted"==a?!0:(e.setUpdated(t,!0,"deleted"),!1)}return!0}),this.attachEvent("onEventChanged",function(t){!this._loading&&this.validId(t)&&this.getEvent(t)&&this.getEvent(t).layer==e.layer&&e.setUpdated(t,!0,"updated")}),e._getRowData=function(e,t){var a=this.obj.getEvent(e),i={};for(var n in a)0!==n.indexOf("_")&&(a[n]&&a[n].getUTCFullYear?i[n]=this.obj.templates.xml_format(a[n]):i[n]=a[n]);return i;
+
+},e._clearUpdateFlag=function(){},e.attachEvent("insertCallback",scheduler._update_callback),e.attachEvent("updateCallback",scheduler._update_callback),e.attachEvent("deleteCallback",function(e,t){this.obj.setUserData(t,this.action_param,"true_deleted"),this.obj.deleteEvent(t)})},function(){var e=function(t){if(null===t||"object"!=typeof t)return t;var a=new t.constructor;for(var i in t)a[i]=e(t[i]);return a};scheduler._dataprocessors=[],scheduler._layers_zindex={};for(var t=0;t<scheduler.layers.length;t++){
+if(scheduler.config["lightbox_"+scheduler.layers[t].name]={},scheduler.config["lightbox_"+scheduler.layers[t].name].sections=e(scheduler.config.lightbox.sections),scheduler._layers_zindex[scheduler.layers[t].name]=scheduler.config.inital_layer_zindex||5+3*t,scheduler.layers[t].url){var a=new dataProcessor(scheduler.layers[t].url);a.layer=scheduler.layers[t].name,scheduler._dataprocessors.push(a),scheduler._dataprocessors[t].init(scheduler)}scheduler.layers[t].isDefault&&(scheduler.defaultLayer=scheduler.layers[t].name);
+
+}}(),scheduler.showLayer=function(e){this.toggleLayer(e,!0)},scheduler.hideLayer=function(e){this.toggleLayer(e,!1)},scheduler.toggleLayer=function(e,t){var a=this.getLayer(e);"undefined"!=typeof t?a.visible=!!t:a.visible=!a.visible,this.setCurrentView(this._date,this._mode)},scheduler.getLayer=function(e){var t,a;"string"==typeof e&&(a=e),"object"==typeof e&&(a=e.layer);for(var i=0;i<scheduler.layers.length;i++)scheduler.layers[i].name==a&&(t=scheduler.layers[i]);return t},scheduler.attachEvent("onBeforeLightbox",function(e){
+var t=this.getEvent(e);return this.config.lightbox.sections=this.config["lightbox_"+t.layer].sections,scheduler.resetLightbox(),!0}),scheduler.attachEvent("onClick",function(e,t){var a=scheduler.getEvent(e);return!scheduler.getLayer(a.layer).noMenu}),scheduler.attachEvent("onEventCollision",function(e,t){var a=this.getLayer(e);if(!a.checkCollision)return!1;for(var i=0,n=0;n<t.length;n++)t[n].layer==a.name&&t[n].id!=e.id&&i++;return i>=scheduler.config.collision_limit}),scheduler.addEvent=function(e,t,a,i,n){
+var r=e;1!=arguments.length&&(r=n||{},r.start_date=e,r.end_date=t,r.text=a,r.id=i,r.layer=this.defaultLayer),r.id=r.id||scheduler.uid(),r.text=r.text||"","string"==typeof r.start_date&&(r.start_date=this.templates.api_date(r.start_date)),"string"==typeof r.end_date&&(r.end_date=this.templates.api_date(r.end_date)),r._timed=this.isOneDayEvent(r);var l=!this._events[r.id];this._events[r.id]=r,this.event_updated(r),this._loading||this.callEvent(l?"onEventAdded":"onEventChanged",[r.id,r])},this._evs_layer={};
+
+for(var e=0;e<this.layers.length;e++)this._evs_layer[this.layers[e].name]=[];scheduler.addEventNow=function(e,t,a){var i={};"object"==typeof e&&(i=e,e=null);var n=6e4*(this.config.event_duration||this.config.time_step);e||(e=Math.round(scheduler._currentDate().valueOf()/n)*n);var r=new Date(e);if(!t){var l=this.config.first_hour;l>r.getHours()&&(r.setHours(l),e=r.valueOf()),t=e+n}i.start_date=i.start_date||r,i.end_date=i.end_date||new Date(t),i.text=i.text||this.locale.labels.new_event,i.id=this._drag_id=this.uid(),
+i.layer=this.defaultLayer,this._drag_mode="new-size",this._loading=!0,this.addEvent(i),this.callEvent("onEventCreated",[this._drag_id,a]),this._loading=!1,this._drag_event={},this._on_mouse_up(a)},scheduler._t_render_view_data=function(e){if(this.config.multi_day&&!this._table_view){for(var t=[],a=[],i=0;i<e.length;i++)e[i]._timed?t.push(e[i]):a.push(e[i]);this._table_view=!0,this.render_data(a),this._table_view=!1,this.render_data(t)}else this.render_data(e)},scheduler.render_view_data=function(){
+if(this._not_render)return void(this._render_wait=!0);this._render_wait=!1,this.clear_view(),this._evs_layer={};for(var e=0;e<this.layers.length;e++)this._evs_layer[this.layers[e].name]=[];for(var t=this.get_visible_events(),e=0;e<t.length;e++)this._evs_layer[t[e].layer]&&this._evs_layer[t[e].layer].push(t[e]);if("month"==this._mode){for(var a=[],e=0;e<this.layers.length;e++)this.layers[e].visible&&(a=a.concat(this._evs_layer[this.layers[e].name]));this._t_render_view_data(a)}else for(var e=0;e<this.layers.length;e++)if(this.layers[e].visible){
+var i=this._evs_layer[this.layers[e].name];this._t_render_view_data(i)}},scheduler._render_v_bar=function(e,t,a,i,n,r,l,d,s){var o=e.id;-1==l.indexOf("<div class=")&&(l=scheduler.templates["event_header_"+e.layer]?scheduler.templates["event_header_"+e.layer](e.start_date,e.end_date,e):l),-1==d.indexOf("<div class=")&&(d=scheduler.templates["event_text_"+e.layer]?scheduler.templates["event_text_"+e.layer](e.start_date,e.end_date,e):d);var _=document.createElement("DIV"),c="dhx_cal_event",u=scheduler.templates["event_class_"+e.layer]?scheduler.templates["event_class_"+e.layer](e.start_date,e.end_date,e):scheduler.templates.event_class(e.start_date,e.end_date,e);
+
+u&&(c=c+" "+u);var h='<div event_id="'+o+'" class="'+c+'" style="position:absolute; top:'+a+"px; left:"+t+"px; width:"+(i-4)+"px; height:"+n+"px;"+(r||"")+'">';return h+='<div class="dhx_header" style=" width:'+(i-6)+'px;" >&nbsp;</div>',h+='<div class="dhx_title">'+l+"</div>",h+='<div class="dhx_body" style=" width:'+(i-(this._quirks?4:14))+"px; height:"+(n-(this._quirks?20:30))+'px;">'+d+"</div>",h+='<div class="dhx_footer" style=" width:'+(i-8)+"px;"+(s?" margin-top:-1px;":"")+'" ></div></div>',
+_.innerHTML=h,_.style.zIndex=100,_.firstChild},scheduler.render_event_bar=function(e){var t=this._els.dhx_cal_data[0],a=this._colsS[e._sday],i=this._colsS[e._eday];i==a&&(i=this._colsS[e._eday+1]);var n=this.xy.bar_height,r=this._colsS.heights[e._sweek]+(this._colsS.height?this.xy.month_scale_height+2:2)+e._sorder*n,l=document.createElement("DIV"),d=e._timed?"dhx_cal_event_clear":"dhx_cal_event_line",s=scheduler.templates["event_class_"+e.layer]?scheduler.templates["event_class_"+e.layer](e.start_date,e.end_date,e):scheduler.templates.event_class(e.start_date,e.end_date,e);
+
+s&&(d=d+" "+s);var o='<div event_id="'+e.id+'" class="'+d+'" style="position:absolute; top:'+r+"px; left:"+a+"px; width:"+(i-a-15)+"px;"+(e._text_style||"")+'">';e._timed&&(o+=scheduler.templates["event_bar_date_"+e.layer]?scheduler.templates["event_bar_date_"+e.layer](e.start_date,e.end_date,e):scheduler.templates.event_bar_date(e.start_date,e.end_date,e)),o+=scheduler.templates["event_bar_text_"+e.layer]?scheduler.templates["event_bar_text_"+e.layer](e.start_date,e.end_date,e):scheduler.templates.event_bar_text(e.start_date,e.end_date,e)+"</div>)",
+o+="</div>",l.innerHTML=o,this._rendered.push(l.firstChild),t.appendChild(l.firstChild)},scheduler.render_event=function(e){var t=scheduler.xy.menu_width;if(scheduler.getLayer(e.layer).noMenu&&(t=0),!(e._sday<0)){var a=scheduler.locate_holder(e._sday);if(a){var i=60*e.start_date.getHours()+e.start_date.getMinutes(),n=60*e.end_date.getHours()+e.end_date.getMinutes()||60*scheduler.config.last_hour,r=Math.round((60*i*1e3-60*this.config.first_hour*60*1e3)*this.config.hour_size_px/36e5)%(24*this.config.hour_size_px)+1,l=Math.max(scheduler.xy.min_event_height,(n-i)*this.config.hour_size_px/60)+1,d=Math.floor((a.clientWidth-t)/e._count),s=e._sorder*d+1;
+
+e._inner||(d*=e._count-e._sorder);var o=this._render_v_bar(e.id,t+s,r,d,l,e._text_style,scheduler.templates.event_header(e.start_date,e.end_date,e),scheduler.templates.event_text(e.start_date,e.end_date,e));if(this._rendered.push(o),a.appendChild(o),s=s+parseInt(a.style.left,10)+t,r+=this._dy_shift,o.style.zIndex=this._layers_zindex[e.layer],this._edit_id==e.id){o.style.zIndex=parseInt(o.style.zIndex)+1;var _=o.style.zIndex;d=Math.max(d-4,scheduler.xy.editor_width);var o=document.createElement("DIV");
+
+o.setAttribute("event_id",e.id),this.set_xy(o,d,l-20,s,r+14),o.className="dhx_cal_editor",o.style.zIndex=_;var c=document.createElement("DIV");this.set_xy(c,d-6,l-26),c.style.cssText+=";margin:2px 2px 2px 2px;overflow:hidden;",c.style.zIndex=_,o.appendChild(c),this._els.dhx_cal_data[0].appendChild(o),this._rendered.push(o),c.innerHTML="<textarea class='dhx_cal_editor'>"+e.text+"</textarea>",this._quirks7&&(c.firstChild.style.height=l-12+"px"),this._editor=c.firstChild,this._editor.onkeypress=function(e){
+if((e||event).shiftKey)return!0;var t=(e||event).keyCode;t==scheduler.keys.edit_save&&scheduler.editStop(!0),t==scheduler.keys.edit_cancel&&scheduler.editStop(!1)},this._editor.onselectstart=function(e){return(e||event).cancelBubble=!0,!0},c.firstChild.focus(),this._els.dhx_cal_data[0].scrollLeft=0,c.firstChild.select()}if(this._select_id==e.id){o.style.zIndex=parseInt(o.style.zIndex)+1;for(var u=this.config["icons_"+(this._edit_id==e.id?"edit":"select")],h="",p=0;p<u.length;p++)h+="<div class='dhx_menu_icon "+u[p]+"' title='"+this.locale.labels[u[p]]+"'></div>";
+
+var v=this._render_v_bar(e.id,s-t+1,r,t,20*u.length+26,"","<div class='dhx_menu_head'></div>",h,!0);v.style.left=s-t+1,v.style.zIndex=o.style.zIndex,this._els.dhx_cal_data[0].appendChild(v),this._rendered.push(v)}}}},scheduler.filter_agenda=function(e,t){var a=scheduler.getLayer(t.layer);return a&&a.visible}});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_layer.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.xml
new file mode 100644
index 0000000000..3b36da87e3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_layer.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_layer.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.js
new file mode 100644
index 0000000000..373b1f2d80
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.js
@@ -0,0 +1,50 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.limit_start=null,scheduler.config.limit_end=null,scheduler.config.limit_view=!1,scheduler.config.check_limits=!0,scheduler.config.mark_now=!0,scheduler.config.display_marked_timespans=!0,scheduler._temp_limit_scope=function(){function e(e,t,a,r,i){var n=scheduler,l=[],d={_props:"map_to",matrix:"y_property"};for(var s in d){var o=d[s];if(n[s])for(var _ in n[s]){var c=n[s][_],u=c[o];e[u]&&(l=n._add_timespan_zones(l,scheduler._get_blocked_zones(t[_],e[u],a,r,i)))}}return l=n._add_timespan_zones(l,scheduler._get_blocked_zones(t,"global",a,r,i));
+
+}var t=null,a="dhx_time_block",r="default",i=function(e,t,a){return t instanceof Date&&a instanceof Date?(e.start_date=t,e.end_date=a):(e.days=t,e.zones=a),e},n=function(e,t,r){var n="object"==typeof e?e:{days:e};return n.type=a,n.css="",t&&(r&&(n.sections=r),n=i(n,e,t)),n};scheduler.blockTime=function(e,t,a){var r=n(e,t,a);return scheduler.addMarkedTimespan(r)},scheduler.unblockTime=function(e,t,a){t=t||"fullday";var r=n(e,t,a);return scheduler.deleteMarkedTimespan(r)},scheduler.attachEvent("onBeforeViewChange",function(e,t,a,r){
+function i(e,t){var a=scheduler.config.limit_start,r=scheduler.config.limit_end,i=scheduler.date.add(e,1,t);return e.valueOf()>r.valueOf()||i<=a.valueOf()}return scheduler.config.limit_view&&(r=r||t,a=a||e,i(r,a)&&t.valueOf()!=r.valueOf())?(setTimeout(function(){var e=i(t,a)?scheduler.config.limit_start:t;scheduler.setCurrentView(i(e,a)?null:e,a)},1),!1):!0}),scheduler.checkInMarkedTimespan=function(t,a,i){a=a||r;for(var n=!0,l=new Date(t.start_date.valueOf()),d=scheduler.date.add(l,1,"day"),s=scheduler._marked_timespans;l<t.end_date;l=scheduler.date.date_part(d),
+d=scheduler.date.add(l,1,"day")){var o=+scheduler.date.date_part(new Date(l)),_=l.getDay(),c=e(t,s,_,o,a);if(c)for(var u=0;u<c.length;u+=2){var h=scheduler._get_zone_minutes(l),p=t.end_date>d||t.end_date.getDate()!=l.getDate()?1440:scheduler._get_zone_minutes(t.end_date),v=c[u],m=c[u+1];if(p>v&&m>h&&(n="function"==typeof i?i(t,h,p,v,m):!1,!n))break}}return!n};var l=scheduler.checkLimitViolation=function(e){if(!e)return!0;if(!scheduler.config.check_limits)return!0;var t=scheduler,r=t.config,i=[];if(e.rec_type)for(var n=scheduler.getRecDates(e),l=0;l<n.length;l++){
+var d=scheduler._copy_event(e);scheduler._lame_copy(d,n[l]),i.push(d)}else i=[e];for(var s=!0,o=0;o<i.length;o++){var _=!0,d=i[o];d._timed=scheduler.isOneDayEvent(d),_=r.limit_start&&r.limit_end?d.start_date.valueOf()>=r.limit_start.valueOf()&&d.end_date.valueOf()<=r.limit_end.valueOf():!0,_&&(_=!scheduler.checkInMarkedTimespan(d,a,function(e,a,r,i,n){var l=!0;return n>=a&&a>=i&&((1440==n||n>r)&&(l=!1),e._timed&&t._drag_id&&"new-size"==t._drag_mode?(e.start_date.setHours(0),e.start_date.setMinutes(n)):l=!1),
+(r>=i&&n>r||i>a&&r>n)&&(e._timed&&t._drag_id&&"new-size"==t._drag_mode?(e.end_date.setHours(0),e.end_date.setMinutes(i)):l=!1),l})),_||(_=t.checkEvent("onLimitViolation")?t.callEvent("onLimitViolation",[d.id,d]):_),s=s&&_}return s||(t._drag_id=null,t._drag_mode=null),s};scheduler._get_blocked_zones=function(e,t,a,r,i){var n=[];if(e&&e[t])for(var l=e[t],d=this._get_relevant_blocked_zones(a,r,l,i),s=0;s<d.length;s++)n=this._add_timespan_zones(n,d[s].zones);return n},scheduler._get_relevant_blocked_zones=function(e,t,a,r){
+var i=a[t]&&a[t][r]?a[t][r]:a[e]&&a[e][r]?a[e][r]:[];return i},scheduler.attachEvent("onMouseDown",function(e){return!(e==a)}),scheduler.attachEvent("onBeforeDrag",function(e){return e?l(scheduler.getEvent(e)):!0}),scheduler.attachEvent("onClick",function(e,t){return l(scheduler.getEvent(e))}),scheduler.attachEvent("onBeforeLightbox",function(e){var a=scheduler.getEvent(e);return t=[a.start_date,a.end_date],l(a)}),scheduler.attachEvent("onEventSave",function(e,t,a){if(!t.start_date||!t.end_date){
+var r=scheduler.getEvent(e);t.start_date=new Date(r.start_date),t.end_date=new Date(r.end_date)}if(t.rec_type){var i=scheduler._lame_clone(t);return scheduler._roll_back_dates(i),l(i)}return l(t)}),scheduler.attachEvent("onEventAdded",function(e){if(!e)return!0;var t=scheduler.getEvent(e);return!l(t)&&scheduler.config.limit_start&&scheduler.config.limit_end&&(t.start_date<scheduler.config.limit_start&&(t.start_date=new Date(scheduler.config.limit_start)),t.start_date.valueOf()>=scheduler.config.limit_end.valueOf()&&(t.start_date=this.date.add(scheduler.config.limit_end,-1,"day")),
+t.end_date<scheduler.config.limit_start&&(t.end_date=new Date(scheduler.config.limit_start)),t.end_date.valueOf()>=scheduler.config.limit_end.valueOf()&&(t.end_date=this.date.add(scheduler.config.limit_end,-1,"day")),t.start_date.valueOf()>=t.end_date.valueOf()&&(t.end_date=this.date.add(t.start_date,this.config.event_duration||this.config.time_step,"minute")),t._timed=this.isOneDayEvent(t)),!0}),scheduler.attachEvent("onEventChanged",function(e){if(!e)return!0;var a=scheduler.getEvent(e);if(!l(a)){
+if(!t)return!1;a.start_date=t[0],a.end_date=t[1],a._timed=this.isOneDayEvent(a)}return!0}),scheduler.attachEvent("onBeforeEventChanged",function(e,t,a){return l(e)}),scheduler.attachEvent("onBeforeEventCreated",function(e){var t=scheduler.getActionData(e).date,a={_timed:!0,start_date:t,end_date:scheduler.date.add(t,scheduler.config.time_step,"minute")};return l(a)}),scheduler.attachEvent("onViewChange",function(){scheduler._mark_now()}),scheduler.attachEvent("onSchedulerResize",function(){return window.setTimeout(function(){
+scheduler._mark_now()},1),!0}),scheduler.attachEvent("onTemplatesReady",function(){scheduler._mark_now_timer=window.setInterval(function(){scheduler._is_initialized()&&scheduler._mark_now()},6e4)}),scheduler._mark_now=function(e){var t="dhx_now_time";this._els[t]||(this._els[t]=[]);var a=scheduler._currentDate(),r=this.config;if(scheduler._remove_mark_now(),!e&&r.mark_now&&a<this._max_date&&a>this._min_date&&a.getHours()>=r.first_hour&&a.getHours()<r.last_hour){var i=this.locate_holder_day(a);this._els[t]=scheduler._append_mark_now(i,a);
+
+}},scheduler._append_mark_now=function(e,t){var a="dhx_now_time",r=scheduler._get_zone_minutes(t),i={zones:[r,r+1],css:a,type:a};if(!this._table_view){if(this._props&&this._props[this._mode]){for(var n=this._props[this._mode],l=n.size||n.options.length,d=e*l,s=(e+1)*l,o=(this._els.dhx_cal_data[0].childNodes,[]),_=d;s>_;_++){var c=_;i.days=c;var u=scheduler._render_marked_timespan(i,null,c)[0];o.push(u)}return o}return i.days=e,scheduler._render_marked_timespan(i,null,e)}return"month"==this._mode?(i.days=+scheduler.date.date_part(t),
+scheduler._render_marked_timespan(i,null,null)):void 0},scheduler._remove_mark_now=function(){for(var e="dhx_now_time",t=this._els[e],a=0;a<t.length;a++){var r=t[a],i=r.parentNode;i&&i.removeChild(r)}this._els[e]=[]},scheduler._marked_timespans={global:{}},scheduler._get_zone_minutes=function(e){return 60*e.getHours()+e.getMinutes()},scheduler._prepare_timespan_options=function(e){var t=[],a=[];if("fullweek"==e.days&&(e.days=[0,1,2,3,4,5,6]),e.days instanceof Array){for(var i=e.days.slice(),n=0;n<i.length;n++){
+var l=scheduler._lame_clone(e);l.days=i[n],t.push.apply(t,scheduler._prepare_timespan_options(l))}return t}if(!e||!(e.start_date&&e.end_date&&e.end_date>e.start_date||void 0!==e.days&&e.zones))return t;var d=0,s=1440;"fullday"==e.zones&&(e.zones=[d,s]),e.zones&&e.invert_zones&&(e.zones=scheduler.invertZones(e.zones)),e.id=scheduler.uid(),e.css=e.css||"",e.type=e.type||r;var o=e.sections;if(o){for(var _ in o)if(o.hasOwnProperty(_)){var c=o[_];c instanceof Array||(c=[c]);for(var n=0;n<c.length;n++){
+var u=scheduler._lame_copy({},e);u.sections={},u.sections[_]=c[n],a.push(u)}}}else a.push(e);for(var h=0;h<a.length;h++){var p=a[h],v=p.start_date,m=p.end_date;if(v&&m)for(var g=scheduler.date.date_part(new Date(v)),b=scheduler.date.add(g,1,"day");m>g;){var u=scheduler._lame_copy({},p);delete u.start_date,delete u.end_date,u.days=g.valueOf();var y=v>g?scheduler._get_zone_minutes(v):d,f=m>b||m.getDate()!=g.getDate()?s:scheduler._get_zone_minutes(m);u.zones=[y,f],t.push(u),g=b,b=scheduler.date.add(b,1,"day");
+
+}else p.days instanceof Date&&(p.days=scheduler.date.date_part(p.days).valueOf()),p.zones=e.zones.slice(),t.push(p)}return t},scheduler._get_dates_by_index=function(e,t,a){var r=[];t=scheduler.date.date_part(new Date(t||scheduler._min_date)),a=new Date(a||scheduler._max_date);for(var i=t.getDay(),n=e-i>=0?e-i:7-t.getDay()+e,l=scheduler.date.add(t,n,"day");a>l;l=scheduler.date.add(l,1,"week"))r.push(l);return r},scheduler._get_css_classes_by_config=function(e){var t=[];return e.type==a&&(t.push(a),
+e.css&&t.push(a+"_reset")),t.push("dhx_marked_timespan",e.css),t.join(" ")},scheduler._get_block_by_config=function(e){var t=document.createElement("DIV");return e.html&&("string"==typeof e.html?t.innerHTML=e.html:t.appendChild(e.html)),t},scheduler._render_marked_timespan=function(e,t,a){var r=[],i=scheduler.config,n=this._min_date,l=this._max_date,d=!1;if(!i.display_marked_timespans)return r;if(!a&&0!==a){if(e.days<7)a=e.days;else{var s=new Date(e.days);if(d=+s,!(+l>+s&&+s>=+n))return r;a=s.getDay();
+
+}var o=n.getDay();o>a?a=7-(o-a):a-=o}var _=e.zones,c=scheduler._get_css_classes_by_config(e);if(scheduler._table_view&&"month"==scheduler._mode){var u=[],h=[];if(t)u.push(t),h.push(a);else{h=d?[d]:scheduler._get_dates_by_index(a);for(var p=0;p<h.length;p++)u.push(this._scales[h[p]])}for(var p=0;p<u.length;p++){t=u[p],a=h[p];var v=Math.floor((this._correct_shift(a,1)-n.valueOf())/(864e5*this._cols.length)),m=this.locate_holder_day(a,!1)%this._cols.length;if(!this._ignores[m]){var g=scheduler._get_block_by_config(e),b=Math.max(t.offsetHeight-1,0),y=Math.max(t.offsetWidth-1,0),f=this._colsS[m],x=this._colsS.heights[v]+(this._colsS.height?this.xy.month_scale_height+2:2)-1;
+
+g.className=c,g.style.top=x+"px",g.style.lineHeight=g.style.height=b+"px";for(var k=0;k<_.length;k+=2){var w=_[p],D=_[p+1];if(w>=D)return[];var E=g.cloneNode(!0);E.style.left=f+Math.round(w/1440*y)+"px",E.style.width=Math.round((D-w)/1440*y)+"px",t.appendChild(E),r.push(E)}}}}else{var M=a;if(this._ignores[this.locate_holder_day(a,!1)])return r;if(this._props&&this._props[this._mode]&&e.sections&&e.sections[this._mode]){var S=this._props[this._mode];M=S.order[e.sections[this._mode]];var O=S.order[e.sections[this._mode]];
+
+if(S.days>1){var N=S.size||S.options.length;M=M*N+O}else M=O,S.size&&M>S.position+S.size&&(M=0)}t=t?t:scheduler.locate_holder(M);for(var p=0;p<_.length;p+=2){var w=Math.max(_[p],60*i.first_hour),D=Math.min(_[p+1],60*i.last_hour);if(w>=D){if(p+2<_.length)continue;return[]}var E=scheduler._get_block_by_config(e);E.className=c;var L=24*this.config.hour_size_px+1,A=36e5;E.style.top=Math.round((60*w*1e3-this.config.first_hour*A)*this.config.hour_size_px/A)%L+"px",E.style.lineHeight=E.style.height=Math.max(Math.round(60*(D-w)*1e3*this.config.hour_size_px/A)%L,1)+"px",
+t.appendChild(E),r.push(E)}}return r},scheduler.markTimespan=function(e){var t=[],a=!1;this._els.dhx_cal_data||(scheduler.get_elements(),a=!0);var r=this._els.dhx_cal_data[0],i=scheduler._marked_timespans_ids,n=scheduler._marked_timespans_types,l=scheduler._marked_timespans;scheduler.deleteMarkedTimespan(),scheduler.addMarkedTimespan(e);for(var d=new Date(scheduler._min_date),s=0,o=r.childNodes.length;o>s;s++){var _=r.childNodes[s];_.firstChild&&(_.firstChild.className||"").indexOf("dhx_scale_hour")>-1||(t.push.apply(t,scheduler._on_scale_add_marker(_,d)),
+d=scheduler.date.add(d,1,"day"))}return a&&(scheduler._els=[]),scheduler._marked_timespans_ids=i,scheduler._marked_timespans_types=n,scheduler._marked_timespans=l,t},scheduler.unmarkTimespan=function(e){if(e)for(var t=0;t<e.length;t++){var a=e[t];a.parentNode&&a.parentNode.removeChild(a)}},scheduler._marked_timespans_ids={},scheduler.addMarkedTimespan=function(e){var t=scheduler._prepare_timespan_options(e),a="global";if(t.length){var r=t[0].id,i=scheduler._marked_timespans,n=scheduler._marked_timespans_ids;
+
+n[r]||(n[r]=[]);for(var l=0;l<t.length;l++){var d=t[l],s=d.days,o=(d.zones,d.css,d.sections),_=d.type;if(d.id=r,o){for(var c in o)if(o.hasOwnProperty(c)){i[c]||(i[c]={});var u=o[c],h=i[c];h[u]||(h[u]={}),h[u][s]||(h[u][s]={}),h[u][s][_]||(h[u][s][_]=[],scheduler._marked_timespans_types||(scheduler._marked_timespans_types={}),scheduler._marked_timespans_types[_]||(scheduler._marked_timespans_types[_]=!0));var p=h[u][s][_];d._array=p,p.push(d),n[r].push(d)}}else{i[a][s]||(i[a][s]={}),i[a][s][_]||(i[a][s][_]=[]),
+scheduler._marked_timespans_types||(scheduler._marked_timespans_types={}),scheduler._marked_timespans_types[_]||(scheduler._marked_timespans_types[_]=!0);var p=i[a][s][_];d._array=p,p.push(d),n[r].push(d)}}return r}},scheduler._add_timespan_zones=function(e,t){var a=e.slice();if(t=t.slice(),!a.length)return t;for(var r=0;r<a.length;r+=2)for(var i=a[r],n=a[r+1],l=r+2==a.length,d=0;d<t.length;d+=2){var s=t[d],o=t[d+1];if(o>n&&n>=s||i>s&&o>=i)a[r]=Math.min(i,s),a[r+1]=Math.max(n,o),r-=2;else{if(!l)continue;
+
+var _=i>s?0:2;a.splice(r+_,0,s,o)}t.splice(d--,2);break}return a},scheduler._subtract_timespan_zones=function(e,t){for(var a=e.slice(),r=0;r<a.length;r+=2)for(var i=a[r],n=a[r+1],l=0;l<t.length;l+=2){var d=t[l],s=t[l+1];if(s>i&&n>d){var o=!1;i>=d&&s>=n&&a.splice(r,2),d>i&&(a.splice(r,2,i,d),o=!0),n>s&&a.splice(o?r+2:r,o?0:2,s,n),r-=2;break}}return a},scheduler.invertZones=function(e){return scheduler._subtract_timespan_zones([0,1440],e.slice())},scheduler._delete_marked_timespan_by_id=function(e){
+var t=scheduler._marked_timespans_ids[e];if(t)for(var a=0;a<t.length;a++)for(var r=t[a],i=r._array,n=0;n<i.length;n++)if(i[n]==r){i.splice(n,1);break}},scheduler._delete_marked_timespan_by_config=function(e){var t=scheduler._marked_timespans,a=e.sections,i=e.days,n=e.type||r,l=[];if(a){for(var d in a)if(a.hasOwnProperty(d)&&t[d]){var s=a[d];t[d][s]&&t[d][s][i]&&t[d][s][i][n]&&(l=t[d][s][i][n])}}else t.global[i]&&t.global[i][n]&&(l=t.global[i][n]);for(var o=0;o<l.length;o++){var _=l[o],c=scheduler._subtract_timespan_zones(_.zones,e.zones);
+
+if(c.length)_.zones=c;else{l.splice(o,1),o--;for(var u=scheduler._marked_timespans_ids[_.id],h=0;h<u.length;h++)if(u[h]==_){u.splice(h,1);break}}}for(var o in scheduler._marked_timespans.timeline)for(var p in scheduler._marked_timespans.timeline[o])for(var h in scheduler._marked_timespans.timeline[o][p])h===n&&delete scheduler._marked_timespans.timeline[o][p][h]},scheduler.deleteMarkedTimespan=function(e){if(arguments.length||(scheduler._marked_timespans={global:{}},scheduler._marked_timespans_ids={},
+scheduler._marked_timespans_types={}),"object"!=typeof e)scheduler._delete_marked_timespan_by_id(e);else{e.start_date&&e.end_date||(e.days||(e.days="fullweek"),e.zones||(e.zones="fullday"));var t=[];if(e.type)t.push(e.type);else for(var a in scheduler._marked_timespans_types)t.push(a);for(var r=scheduler._prepare_timespan_options(e),i=0;i<r.length;i++)for(var n=r[i],l=0;l<t.length;l++){var d=scheduler._lame_clone(n);d.type=t[l],scheduler._delete_marked_timespan_by_config(d)}}},scheduler._get_types_to_render=function(e,t){
+var a=e?e:{};for(var r in t||{})t.hasOwnProperty(r)&&(a[r]=t[r]);return a},scheduler._get_configs_to_render=function(e){var t=[];for(var a in e)e.hasOwnProperty(a)&&t.push.apply(t,e[a]);return t},scheduler._on_scale_add_marker=function(e,t){if(!scheduler._table_view||"month"==scheduler._mode){var a=t.getDay(),r=t.valueOf(),i=this._mode,n=scheduler._marked_timespans,l=[],d=[];if(this._props&&this._props[i]){var s=this._props[i],o=s.options,_=scheduler._get_unit_index(s,t),c=o[_];if(s.days>1){var u=864e5,h=Math.floor((t-scheduler._min_date)/u);
+
+t=scheduler.date.add(scheduler._min_date,Math.floor(h/o.length),"day"),t=scheduler.date.date_part(t)}else t=scheduler.date.date_part(new Date(this._date));if(a=t.getDay(),r=t.valueOf(),n[i]&&n[i][c.key]){var p=n[i][c.key],v=scheduler._get_types_to_render(p[a],p[r]);l.push.apply(l,scheduler._get_configs_to_render(v))}}var m=n.global,g=m[r]||m[a];l.push.apply(l,scheduler._get_configs_to_render(g));for(var b=0;b<l.length;b++)d.push.apply(d,scheduler._render_marked_timespan(l[b],e,t));return d}},scheduler.attachEvent("onScaleAdd",scheduler._on_scale_add_marker),
+scheduler.dblclick_dhx_marked_timespan=function(e,t){scheduler.config.dblclick_create||scheduler.callEvent("onScaleDblClick",[scheduler.getActionData(e).date,t,e]),scheduler.addEventNow(scheduler.getActionData(e).date,null,e)}},scheduler._temp_limit_scope();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_limit.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.xml
new file mode 100644
index 0000000000..815f898dc4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_limit.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_limit.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.js
new file mode 100644
index 0000000000..1699be3fd3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.js
@@ -0,0 +1,40 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.xy.map_date_width=188,scheduler.xy.map_description_width=400,scheduler.config.map_resolve_event_location=!0,scheduler.config.map_resolve_user_location=!0,scheduler.config.map_initial_position=new google.maps.LatLng(48.724,8.215),scheduler.config.map_error_position=new google.maps.LatLng(15,15),scheduler.config.map_infowindow_max_width=300,scheduler.config.map_type=google.maps.MapTypeId.ROADMAP,scheduler.config.map_zoom_after_resolve=15,scheduler.locale.labels.marker_geo_success="It seems you are here.",
+scheduler.locale.labels.marker_geo_fail="Sorry, could not get your current position using geolocation.",scheduler.templates.marker_date=scheduler.date.date_to_str("%Y-%m-%d %H:%i"),scheduler.templates.marker_text=function(e,t,a){return"<div><b>"+a.text+"</b><br/><br/>"+(a.event_location||"")+"<br/><br/>"+scheduler.templates.marker_date(e)+" - "+scheduler.templates.marker_date(t)+"</div>"},scheduler.dblclick_dhx_map_area=function(){!this.config.readonly&&this.config.dblclick_create&&this.addEventNow({
+start_date:scheduler._date,end_date:scheduler.date.add(scheduler._date,scheduler.config.time_step,"minute")})},scheduler.templates.map_time=function(e,t,a){return a._timed?this.day_date(a.start_date,a.end_date,a)+" "+this.event_date(e):scheduler.templates.day_date(e)+" &ndash; "+scheduler.templates.day_date(t)},scheduler.templates.map_text=function(e,t,a){return a.text},scheduler.date.map_start=function(e){return e},scheduler.date.add_map=function(e,t,a){return new Date(e.valueOf())},scheduler.templates.map_date=function(e,t,a){
+return""},scheduler._latLngUpdate=!1,scheduler.attachEvent("onSchedulerReady",function(){function e(e){if(e){var t=scheduler.locale.labels;scheduler._els.dhx_cal_header[0].innerHTML="<div class='dhx_map_line' style='width: "+(scheduler.xy.map_date_width+scheduler.xy.map_description_width+2)+"px;' ><div class='headline_date' style='width: "+scheduler.xy.map_date_width+"px;'>"+t.date+"</div><div class='headline_description' style='width: "+scheduler.xy.map_description_width+"px;'>"+t.description+"</div></div>",
+scheduler._table_view=!0,scheduler.set_sizes()}}function t(){scheduler._selected_event_id=null,scheduler.map._infowindow.close();var e=scheduler.map._markers;for(var t in e)e.hasOwnProperty(t)&&(e[t].setMap(null),delete scheduler.map._markers[t],scheduler.map._infowindows_content[t]&&delete scheduler.map._infowindows_content[t])}function a(){var e=scheduler.get_visible_events();e.sort(function(e,t){return e.start_date.valueOf()==t.start_date.valueOf()?e.id>t.id?1:-1:e.start_date>t.start_date?1:-1;
+
+});for(var t="<div class='dhx_map_area'>",a=0;a<e.length;a++){var r=e[a],n=r.id==scheduler._selected_event_id?"dhx_map_line highlight":"dhx_map_line",i=r.color?"background:"+r.color+";":"",l=r.textColor?"color:"+r.textColor+";":"";t+="<div class='"+n+"' event_id='"+r.id+"' style='"+i+l+(r._text_style||"")+" width: "+(scheduler.xy.map_date_width+scheduler.xy.map_description_width+2)+"px;'><div style='width: "+scheduler.xy.map_date_width+"px;' >"+scheduler.templates.map_time(r.start_date,r.end_date,r)+"</div>",
+t+="<div class='dhx_event_icon icon_details'>&nbsp</div>",t+="<div class='line_description' style='width:"+(scheduler.xy.map_description_width-25)+"px;'>"+scheduler.templates.map_text(r.start_date,r.end_date,r)+"</div></div>"}t+="<div class='dhx_v_border' style='left: "+(scheduler.xy.map_date_width-2)+"px;'></div><div class='dhx_v_border_description'></div></div>",scheduler._els.dhx_cal_data[0].scrollTop=0,scheduler._els.dhx_cal_data[0].innerHTML=t,scheduler._els.dhx_cal_data[0].style.width=scheduler.xy.map_date_width+scheduler.xy.map_description_width+1+"px";
+
+var d=scheduler._els.dhx_cal_data[0].firstChild.childNodes;scheduler._els.dhx_cal_date[0].innerHTML=scheduler.templates[scheduler._mode+"_date"](scheduler._min_date,scheduler._max_date,scheduler._mode),scheduler._rendered=[];for(var a=0;a<d.length-2;a++)scheduler._rendered[a]=d[a]}function r(e){var t=document.getElementById(e),a=scheduler._y-scheduler.xy.nav_height;0>a&&(a=0);var r=scheduler._x-scheduler.xy.map_date_width-scheduler.xy.map_description_width-1;0>r&&(r=0),t.style.height=a+"px",t.style.width=r+"px",
+t.style.marginLeft=scheduler.xy.map_date_width+scheduler.xy.map_description_width+1+"px",t.style.marginTop=scheduler.xy.nav_height+2+"px"}scheduler._isMapPositionSet=!1;var n=document.createElement("div");n.className="dhx_map",n.id="dhx_gmap",n.style.dispay="none";var i=scheduler._obj;i.appendChild(n),scheduler._els.dhx_gmap=[],scheduler._els.dhx_gmap.push(n),r("dhx_gmap");var l={zoom:scheduler.config.map_inital_zoom||10,center:scheduler.config.map_initial_position,mapTypeId:scheduler.config.map_type||google.maps.MapTypeId.ROADMAP
+},d=new google.maps.Map(document.getElementById("dhx_gmap"),l);d.disableDefaultUI=!1,d.disableDoubleClickZoom=!scheduler.config.readonly,google.maps.event.addListener(d,"dblclick",function(e){if(!scheduler.config.readonly&&scheduler.config.dblclick_create){var t=e.latLng;geocoder.geocode({latLng:t},function(e,a){a==google.maps.GeocoderStatus.OK&&(t=e[0].geometry.location,scheduler.addEventNow({lat:t.lat(),lng:t.lng(),event_location:e[0].formatted_address,start_date:scheduler._date,end_date:scheduler.date.add(scheduler._date,scheduler.config.time_step,"minute")
+}))})}});var s={content:""};scheduler.config.map_infowindow_max_width&&(s.maxWidth=scheduler.config.map_infowindow_max_width),scheduler.map={_points:[],_markers:[],_infowindow:new google.maps.InfoWindow(s),_infowindows_content:[],_initialization_count:-1,_obj:d},geocoder=new google.maps.Geocoder,scheduler.config.map_resolve_user_location&&navigator.geolocation&&(scheduler._isMapPositionSet||navigator.geolocation.getCurrentPosition(function(e){var t=new google.maps.LatLng(e.coords.latitude,e.coords.longitude);
+
+d.setCenter(t),d.setZoom(scheduler.config.map_zoom_after_resolve||10),scheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_success),scheduler.map._infowindow.position=d.getCenter(),scheduler.map._infowindow.open(d),scheduler._isMapPositionSet=!0},function(){scheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_fail),scheduler.map._infowindow.setPosition(d.getCenter()),scheduler.map._infowindow.open(d),scheduler._isMapPositionSet=!0})),google.maps.event.addListener(d,"resize",function(e){
+n.style.zIndex="5",d.setZoom(d.getZoom())}),google.maps.event.addListener(d,"tilesloaded",function(e){n.style.zIndex="5"}),n.style.display="none",scheduler.attachEvent("onSchedulerResize",function(){return"map"==this._mode?(this.map_view(!0),!1):!0});var o=scheduler.render_data;scheduler.render_data=function(e,t){if("map"!=this._mode)return o.apply(this,arguments);a();for(var r=scheduler.get_visible_events(),n=0;n<r.length;n++)scheduler.map._markers[r[n].id]||c(r[n],!1,!1)},scheduler.map_view=function(n){
+scheduler.map._initialization_count++;var i,l=scheduler._els.dhx_gmap[0];if(scheduler._els.dhx_cal_data[0].style.width=scheduler.xy.map_date_width+scheduler.xy.map_description_width+1+"px",scheduler._min_date=scheduler.config.map_start||scheduler._currentDate(),scheduler._max_date=scheduler.config.map_end||scheduler.date.add(scheduler._currentDate(),1,"year"),scheduler._table_view=!0,e(n),n){t(),a(),l.style.display="block",r("dhx_gmap"),i=scheduler.map._obj.getCenter();for(var d=scheduler.get_visible_events(),s=0;s<d.length;s++)scheduler.map._markers[d[s].id]||c(d[s]);
+
+}else l.style.display="none";google.maps.event.trigger(scheduler.map._obj,"resize"),0===scheduler.map._initialization_count&&i&&scheduler.map._obj.setCenter(i),scheduler._selected_event_id&&_(scheduler._selected_event_id)};var _=function(e){scheduler.map._obj.setCenter(scheduler.map._points[e]),scheduler.callEvent("onClick",[e])},c=function(e,t,a){var r=scheduler.config.map_error_position;e.lat&&e.lng&&(r=new google.maps.LatLng(e.lat,e.lng));var n=scheduler.templates.marker_text(e.start_date,e.end_date,e);
+
+scheduler._new_event||(scheduler.map._infowindows_content[e.id]=n,scheduler.map._markers[e.id]&&scheduler.map._markers[e.id].setMap(null),scheduler.map._markers[e.id]=new google.maps.Marker({position:r,map:scheduler.map._obj}),google.maps.event.addListener(scheduler.map._markers[e.id],"click",function(){scheduler.map._infowindow.setContent(scheduler.map._infowindows_content[e.id]),scheduler.map._infowindow.open(scheduler.map._obj,scheduler.map._markers[e.id]),scheduler._selected_event_id=e.id,scheduler.render_data();
+
+}),scheduler.map._points[e.id]=r,t&&scheduler.map._obj.setCenter(scheduler.map._points[e.id]),a&&scheduler.callEvent("onClick",[e.id]))};scheduler.attachEvent("onClick",function(e,t){if("map"==this._mode){scheduler._selected_event_id=e;for(var a=0;a<scheduler._rendered.length;a++)scheduler._rendered[a].className="dhx_map_line",scheduler._rendered[a].getAttribute("event_id")==e&&(scheduler._rendered[a].className+=" highlight");scheduler.map._points[e]&&scheduler.map._markers[e]&&(scheduler.map._obj.setCenter(scheduler.map._points[e]),
+google.maps.event.trigger(scheduler.map._markers[e],"click"))}return!0});var u=function(e){e.event_location&&geocoder?geocoder.geocode({address:e.event_location,language:scheduler.uid().toString()},function(t,a){var r={};a!=google.maps.GeocoderStatus.OK?(r=scheduler.callEvent("onLocationError",[e.id]),r&&r!==!0||(r=scheduler.config.map_error_position)):r=t[0].geometry.location,e.lat=r.lat(),e.lng=r.lng(),scheduler._selected_event_id=e.id,scheduler._latLngUpdate=!0,scheduler.callEvent("onEventChanged",[e.id,e]),
+c(e,!0,!0)}):c(e,!0,!0)},h=function(e){e.event_location&&geocoder&&geocoder.geocode({address:e.event_location,language:scheduler.uid().toString()},function(t,a){var r={};a!=google.maps.GeocoderStatus.OK?(r=scheduler.callEvent("onLocationError",[e.id]),r&&r!==!0||(r=scheduler.config.map_error_position)):r=t[0].geometry.location,e.lat=r.lat(),e.lng=r.lng(),scheduler._latLngUpdate=!0,scheduler.callEvent("onEventChanged",[e.id,e])})},p=function(e,t,a,r){setTimeout(function(){var r=e.apply(t,a);return e=t=a=null,
+r},r||1)};scheduler.attachEvent("onEventChanged",function(e,t){if(this._latLngUpdate)this._latLngUpdate=!1;else{var a=scheduler.getEvent(e);a.start_date<scheduler._min_date&&a.end_date>scheduler._min_date||a.start_date<scheduler._max_date&&a.end_date>scheduler._max_date||a.start_date.valueOf()>=scheduler._min_date&&a.end_date.valueOf()<=scheduler._max_date?(scheduler.map._markers[e]&&scheduler.map._markers[e].setMap(null),u(a)):(scheduler._selected_event_id=null,scheduler.map._infowindow.close(),
+scheduler.map._markers[e]&&scheduler.map._markers[e].setMap(null))}return!0}),scheduler.attachEvent("onEventIdChange",function(e,t){var a=scheduler.getEvent(t);return(a.start_date<scheduler._min_date&&a.end_date>scheduler._min_date||a.start_date<scheduler._max_date&&a.end_date>scheduler._max_date||a.start_date.valueOf()>=scheduler._min_date&&a.end_date.valueOf()<=scheduler._max_date)&&(scheduler.map._markers[e]&&(scheduler.map._markers[e].setMap(null),delete scheduler.map._markers[e]),scheduler.map._infowindows_content[e]&&delete scheduler.map._infowindows_content[e],
+u(a)),!0}),scheduler.attachEvent("onEventAdded",function(e,t){return scheduler._dataprocessor||(t.start_date<scheduler._min_date&&t.end_date>scheduler._min_date||t.start_date<scheduler._max_date&&t.end_date>scheduler._max_date||t.start_date.valueOf()>=scheduler._min_date&&t.end_date.valueOf()<=scheduler._max_date)&&(scheduler.map._markers[e]&&scheduler.map._markers[e].setMap(null),u(t)),!0}),scheduler.attachEvent("onBeforeEventDelete",function(e,t){return scheduler.map._markers[e]&&scheduler.map._markers[e].setMap(null),
+scheduler._selected_event_id=null,scheduler.map._infowindow.close(),!0}),scheduler._event_resolve_delay=1500,scheduler.attachEvent("onEventLoading",function(e){return scheduler.config.map_resolve_event_location&&e.event_location&&!e.lat&&!e.lng&&(scheduler._event_resolve_delay+=1500,p(h,this,[e],scheduler._event_resolve_delay)),!0}),scheduler.attachEvent("onEventCancel",function(e,t){return t&&(scheduler.map._markers[e]&&scheduler.map._markers[e].setMap(null),scheduler.map._infowindow.close()),!0;
+
+})});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_map_view.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.xml
new file mode 100644
index 0000000000..4001b7574e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_map_view.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_map_view.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.js
new file mode 100644
index 0000000000..81321d452e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.js
@@ -0,0 +1,37 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.templates.calendar_month=scheduler.date.date_to_str("%F %Y"),scheduler.templates.calendar_scale_date=scheduler.date.date_to_str("%D"),scheduler.templates.calendar_date=scheduler.date.date_to_str("%d"),scheduler.config.minicalendar={mark_events:!0},scheduler._synced_minicalendars=[],scheduler.renderCalendar=function(e,t,a){var r=null,n=e.date||scheduler._currentDate();if("string"==typeof n&&(n=this.templates.api_date(n)),t)r=this._render_calendar(t.parentNode,n,e,t),scheduler.unmarkCalendar(r);
+else{var i=e.container,d=e.position;if("string"==typeof i&&(i=document.getElementById(i)),"string"==typeof d&&(d=document.getElementById(d)),d&&"undefined"==typeof d.left){var l=getOffset(d);d={top:l.top+d.offsetHeight,left:l.left}}i||(i=scheduler._get_def_cont(d)),r=this._render_calendar(i,n,e),r.onclick=function(e){e=e||event;var t=e.target||e.srcElement;if(-1!=t.className.indexOf("dhx_month_head")){var a=t.parentNode.className;if(-1==a.indexOf("dhx_after")&&-1==a.indexOf("dhx_before")){var r=scheduler.templates.xml_date(this.getAttribute("date"));
+
+r.setDate(parseInt(t.innerHTML,10)),scheduler.unmarkCalendar(this),scheduler.markCalendar(this,r,"dhx_calendar_click"),this._last_date=r,this.conf.handler&&this.conf.handler.call(scheduler,r,this)}}}}if(scheduler.config.minicalendar.mark_events)for(var s=scheduler.date.month_start(n),o=scheduler.date.add(s,1,"month"),_=this.getEvents(s,o),c=this["filter_"+this._mode],u=0;u<_.length;u++){var h=_[u];if(!c||c(h.id,h)){var p=h.start_date;for(p.valueOf()<s.valueOf()&&(p=s),p=scheduler.date.date_part(new Date(p.valueOf()));p<h.end_date&&(this.markCalendar(r,p,"dhx_year_event"),
+p=this.date.add(p,1,"day"),!(p.valueOf()>=o.valueOf())););}}return this._markCalendarCurrentDate(r),r.conf=e,e.sync&&!a&&this._synced_minicalendars.push(r),r.conf._on_xle_handler||(r.conf._on_xle_handler=scheduler.attachEvent("onXLE",function(){scheduler.updateCalendar(r,r.conf.date)})),r},scheduler._get_def_cont=function(e){return this._def_count||(this._def_count=document.createElement("DIV"),this._def_count.className="dhx_minical_popup",this._def_count.onclick=function(e){(e||event).cancelBubble=!0;
+
+},document.body.appendChild(this._def_count)),this._def_count.style.left=e.left+"px",this._def_count.style.top=e.top+"px",this._def_count._created=new Date,this._def_count},scheduler._locateCalendar=function(e,t){if("string"==typeof t&&(t=scheduler.templates.api_date(t)),+t>+e._max_date||+t<+e._min_date)return null;for(var a=e.childNodes[2].childNodes[0],r=0,n=new Date(e._min_date);+this.date.add(n,1,"week")<=+t;)n=this.date.add(n,1,"week"),r++;var i=scheduler.config.start_on_monday,d=(t.getDay()||(i?7:0))-(i?1:0);
+
+return a.rows[r].cells[d].firstChild},scheduler.markCalendar=function(e,t,a){var r=this._locateCalendar(e,t);r&&(r.className+=" "+a)},scheduler.unmarkCalendar=function(e,t,a){if(t=t||e._last_date,a=a||"dhx_calendar_click",t){var r=this._locateCalendar(e,t);r&&(r.className=(r.className||"").replace(RegExp(a,"g")))}},scheduler._week_template=function(e){for(var t=e||250,a=0,r=document.createElement("div"),n=this.date.week_start(scheduler._currentDate()),i=0;7>i;i++)this._cols[i]=Math.floor(t/(7-i)),
+this._render_x_header(i,a,n,r),n=this.date.add(n,1,"day"),t-=this._cols[i],a+=this._cols[i];return r.lastChild.className+=" dhx_scale_bar_last",r},scheduler.updateCalendar=function(e,t){e.conf.date=t,this.renderCalendar(e.conf,e,!0)},scheduler._mini_cal_arrows=["&nbsp","&nbsp"],scheduler._render_calendar=function(e,t,a,r){var n=scheduler.templates,i=this._cols;this._cols=[];var d=this._mode;this._mode="calendar";var l=this._colsS;this._colsS={height:0};var s=new Date(this._min_date),o=new Date(this._max_date),_=new Date(scheduler._date),c=n.month_day,u=this._ignores_detected;
+
+this._ignores_detected=0,n.month_day=n.calendar_date,t=this.date.month_start(t);var h,p=this._week_template(e.offsetWidth-1-this.config.minicalendar.padding);if(r?h=r:(h=document.createElement("DIV"),h.className="dhx_cal_container dhx_mini_calendar"),h.setAttribute("date",this.templates.xml_format(t)),h.innerHTML="<div class='dhx_year_month'></div><div class='dhx_year_week'>"+p.innerHTML+"</div><div class='dhx_year_body'></div>",h.childNodes[0].innerHTML=this.templates.calendar_month(t),a.navigation)for(var v=function(e,t){
+var a=scheduler.date.add(e._date,t,"month");scheduler.updateCalendar(e,a),scheduler._date.getMonth()==e._date.getMonth()&&scheduler._date.getFullYear()==e._date.getFullYear()&&scheduler._markCalendarCurrentDate(e)},m=["dhx_cal_prev_button","dhx_cal_next_button"],g=["left:1px;top:2px;position:absolute;","left:auto; right:1px;top:2px;position:absolute;"],b=[-1,1],f=function(e){return function(){if(a.sync)for(var t=scheduler._synced_minicalendars,r=0;r<t.length;r++)v(t[r],e);else v(h,e)}},y=0;2>y;y++){
+var x=document.createElement("DIV");x.className=m[y],x.style.cssText=g[y],x.innerHTML=this._mini_cal_arrows[y],h.firstChild.appendChild(x),x.onclick=f(b[y])}h._date=new Date(t),h.week_start=(t.getDay()-(this.config.start_on_monday?1:0)+7)%7;var k=h._min_date=this.date.week_start(t);h._max_date=this.date.add(h._min_date,6,"week"),this._reset_month_scale(h.childNodes[2],t,k);for(var w=h.childNodes[2].firstChild.rows,D=w.length;6>D;D++){var E=w[w.length-1];w[0].parentNode.appendChild(E.cloneNode(!0));
+
+var M=parseInt(E.childNodes[E.childNodes.length-1].childNodes[0].innerHTML);M=10>M?M:0;for(var S=0;S<w[D].childNodes.length;S++)w[D].childNodes[S].className="dhx_after",w[D].childNodes[S].childNodes[0].innerHTML=scheduler.date.to_fixed(++M)}return r||e.appendChild(h),h.childNodes[1].style.height=h.childNodes[1].childNodes[0].offsetHeight-1+"px",this._cols=i,this._mode=d,this._colsS=l,this._min_date=s,this._max_date=o,scheduler._date=_,n.month_day=c,this._ignores_detected=u,h},scheduler.destroyCalendar=function(e,t){
+!e&&this._def_count&&this._def_count.firstChild&&(t||(new Date).valueOf()-this._def_count._created.valueOf()>500)&&(e=this._def_count.firstChild),e&&(e.onclick=null,e.innerHTML="",e.parentNode&&e.parentNode.removeChild(e),this._def_count&&(this._def_count.style.top="-1000px"),e.conf&&e.conf._on_xle_handler&&scheduler.detachEvent(e.conf._on_xle_handler))},scheduler.isCalendarVisible=function(){return this._def_count&&parseInt(this._def_count.style.top,10)>0?this._def_count:!1},scheduler._attach_minical_events=function(){
+dhtmlxEvent(document.body,"click",function(){scheduler.destroyCalendar()}),scheduler._attach_minical_events=function(){}},scheduler.attachEvent("onTemplatesReady",function(){scheduler._attach_minical_events()}),scheduler.templates.calendar_time=scheduler.date.date_to_str("%d-%m-%Y"),scheduler.form_blocks.calendar_time={render:function(){var e="<input class='dhx_readonly' type='text' readonly='true'>",t=scheduler.config,a=this.date.date_part(scheduler._currentDate()),r=1440,n=0;t.limit_time_select&&(n=60*t.first_hour,
+r=60*t.last_hour+1),a.setHours(n/60),e+=" <select>";for(var i=n;r>i;i+=1*this.config.time_step){var d=this.templates.time_picker(a);e+="<option value='"+i+"'>"+d+"</option>",a=this.date.add(a,this.config.time_step,"minute")}e+="</select>";scheduler.config.full_day;return"<div style='height:30px;padding-top:0; font-size:inherit;' class='dhx_section_time'>"+e+"<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>"+e+"</div>"},set_value:function(e,t,a){function r(e,t,a){s(e,t,a),
+e.value=scheduler.templates.calendar_time(t),e._date=scheduler.date.date_part(new Date(t))}var n,i,d=e.getElementsByTagName("input"),l=e.getElementsByTagName("select"),s=function(e,t,a){e.onclick=function(){scheduler.destroyCalendar(null,!0),scheduler.renderCalendar({position:e,date:new Date(this._date),navigation:!0,handler:function(t){e.value=scheduler.templates.calendar_time(t),e._date=new Date(t),scheduler.destroyCalendar(),scheduler.config.event_duration&&scheduler.config.auto_end_date&&0===a&&u();
+
+}})}};if(scheduler.config.full_day){if(!e._full_day){var o="<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> "+scheduler.locale.labels.full_day+"&nbsp;</label></input>";scheduler.config.wide_form||(o=e.previousSibling.innerHTML+o),e.previousSibling.innerHTML=o,e._full_day=!0}var _=e.previousSibling.getElementsByTagName("input")[0],c=0===scheduler.date.time_part(a.start_date)&&0===scheduler.date.time_part(a.end_date);_.checked=c,l[0].disabled=_.checked,l[1].disabled=_.checked,
+_.onclick=function(){if(_.checked===!0){var t={};scheduler.form_blocks.calendar_time.get_value(e,t),n=scheduler.date.date_part(t.start_date),i=scheduler.date.date_part(t.end_date),(+i==+n||+i>=+n&&(0!==a.end_date.getHours()||0!==a.end_date.getMinutes()))&&(i=scheduler.date.add(i,1,"day"))}var s=n||a.start_date,o=i||a.end_date;r(d[0],s),r(d[1],o),l[0].value=60*s.getHours()+s.getMinutes(),l[1].value=60*o.getHours()+o.getMinutes(),l[0].disabled=_.checked,l[1].disabled=_.checked}}if(scheduler.config.event_duration&&scheduler.config.auto_end_date){
+var u=function(){n=scheduler.date.add(d[0]._date,l[0].value,"minute"),i=new Date(n.getTime()+60*scheduler.config.event_duration*1e3),d[1].value=scheduler.templates.calendar_time(i),d[1]._date=scheduler.date.date_part(new Date(i)),l[1].value=60*i.getHours()+i.getMinutes()};l[0].onchange=u}r(d[0],a.start_date,0),r(d[1],a.end_date,1),s=function(){},l[0].value=60*a.start_date.getHours()+a.start_date.getMinutes(),l[1].value=60*a.end_date.getHours()+a.end_date.getMinutes()},get_value:function(e,t){var a=e.getElementsByTagName("input"),r=e.getElementsByTagName("select");
+
+return t.start_date=scheduler.date.add(a[0]._date,r[0].value,"minute"),t.end_date=scheduler.date.add(a[1]._date,r[1].value,"minute"),t.end_date<=t.start_date&&(t.end_date=scheduler.date.add(t.start_date,scheduler.config.time_step,"minute")),{start_date:new Date(t.start_date),end_date:new Date(t.end_date)}},focus:function(e){}},scheduler.linkCalendar=function(e,t){var a=function(){var a=scheduler._date,r=new Date(a.valueOf());return t&&(r=t(r)),r.setDate(1),scheduler.updateCalendar(e,r),!0};scheduler.attachEvent("onViewChange",a),
+scheduler.attachEvent("onXLE",a),scheduler.attachEvent("onEventAdded",a),scheduler.attachEvent("onEventChanged",a),scheduler.attachEvent("onAfterEventDelete",a),a()},scheduler._markCalendarCurrentDate=function(e){var t=scheduler._date,a=scheduler._mode,r=scheduler.date.month_start(new Date(e._date)),n=scheduler.date.add(r,1,"month");if("day"==a||this._props&&this._props[a])r.valueOf()<=t.valueOf()&&n>t&&scheduler.markCalendar(e,t,"dhx_calendar_click");else if("week"==a)for(var i=scheduler.date.week_start(new Date(t.valueOf())),d=0;7>d;d++)r.valueOf()<=i.valueOf()&&n>i&&scheduler.markCalendar(e,i,"dhx_calendar_click"),
+i=scheduler.date.add(i,1,"day")},scheduler.attachEvent("onEventCancel",function(){scheduler.destroyCalendar(null,!0)});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_minical.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.xml
new file mode 100644
index 0000000000..d3b947cd63
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_minical.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_minical.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.js
new file mode 100644
index 0000000000..2ef365a988
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){scheduler.xy.scroll_width=0;var e=scheduler.render_view_data;scheduler.render_view_data=function(){var t=this._els.dhx_cal_data[0];t.firstChild._h_fix=!0,e.apply(scheduler,arguments);var a=parseInt(t.style.height);t.style.height="1px",t.style.height=t.scrollHeight+"px",this._obj.style.height=this._obj.clientHeight+t.scrollHeight-a+"px"};var t=scheduler._reset_month_scale;scheduler._reset_month_scale=function(e,a,r){var n={clientHeight:100};t.apply(scheduler,[n,a,r]),
+e.innerHTML=n.innerHTML}});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_monthheight.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.xml
new file mode 100644
index 0000000000..508e7296da
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_monthheight.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_monthheight.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.js
new file mode 100644
index 0000000000..ceff802483
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.js
@@ -0,0 +1,13 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.form_blocks.multiselect={render:function(e){for(var t="<div class='dhx_multi_select_"+e.name+"' style='overflow: auto; height: "+e.height+"px; position: relative;' >",a=0;a<e.options.length;a++)t+="<label><input type='checkbox' value='"+e.options[a].key+"'/>"+e.options[a].label+"</label>",convertStringToBoolean(e.vertical)&&(t+="<br/>");return t+="</div>"},set_value:function(e,t,a,r){function n(t){for(var a=e.getElementsByTagName("input"),r=0;r<a.length;r++)a[r].checked=!!t[a[r].value]}
+for(var i=e.getElementsByTagName("input"),d=0;d<i.length;d++)i[d].checked=!1;var l={};if(a[r.map_to]){for(var s=(a[r.map_to]+"").split(","),d=0;d<s.length;d++)l[s[d]]=!0;n(l)}else{if(scheduler._new_event||!r.script_url)return;var o=document.createElement("div");o.className="dhx_loading",o.style.cssText="position: absolute; top: 40%; left: 40%;",e.appendChild(o),dhtmlxAjax.get(r.script_url+"?dhx_crosslink_"+r.map_to+"="+a.id+"&uid="+scheduler.uid(),function(t){for(var a=t.doXPath("//data/item"),i={},d=0;d<a.length;d++)i[a[d].getAttribute(r.map_to)]=!0;
+
+n(i),e.removeChild(o)})}},get_value:function(e,t,a){for(var r=[],n=e.getElementsByTagName("input"),i=0;i<n.length;i++)n[i].checked&&r.push(n[i].value);return r.join(",")},focus:function(e){}};
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_multiselect.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.xml
new file mode 100644
index 0000000000..523cacf690
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multiselect.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_multiselect.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.js
new file mode 100644
index 0000000000..7fefce499d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.js
@@ -0,0 +1,10 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+!function(){function e(e){var t=function(){};return t.prototype=e,t}var t=scheduler._load;scheduler._load=function(a,r){if(a=a||this._load_url,"object"==typeof a)for(var n=e(this._loaded),i=0;i<a.length;i++)this._loaded=new n,t.call(this,a[i],r);else t.apply(this,arguments)}}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_multisource.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.xml
new file mode 100644
index 0000000000..dc78337e59
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_multisource.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_multisource.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.js
new file mode 100644
index 0000000000..47d2fe97cd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.js
@@ -0,0 +1,15 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+!function(){function e(e){var t={};for(var a in e)0!==a.indexOf("_")&&(t[a]=e[a]);return d.use_id||delete t.id,t}function t(){clearTimeout(i),i=setTimeout(function(){scheduler.updateView()},1)}function a(e){e._loading=!0,e._not_render=!0,e.callEvent("onXLS",[])}function r(e){e._not_render=!1,e._render_wait&&e.render_view_data(),e._loading=!1,e.callEvent("onXLE",[])}function n(e){return d.use_id?e.id:e.cid}var i,d={use_id:!1};scheduler.backbone=function(i,l){function s(){o.length&&(scheduler.parse(o,"json"),
+o=[])}l&&(d=l),i.bind("change",function(e,a){var r=n(e),i=scheduler._events[r]=e.toJSON();i.id=r,scheduler._init_event(i),t()}),i.bind("remove",function(e,t){var a=n(e);scheduler._events[a]&&scheduler.deleteEvent(a)});var o=[];i.bind("add",function(e,t){var a=n(e);if(!scheduler._events[a]){var r=e.toJSON();r.id=a,scheduler._init_event(r),o.push(r),1==o.length&&setTimeout(s,1)}}),i.bind("request",function(e){e instanceof Backbone.Collection&&a(scheduler)}),i.bind("sync",function(e){e instanceof Backbone.Collection&&r(scheduler);
+
+}),i.bind("error",function(e){e instanceof Backbone.Collection&&r(scheduler)}),scheduler.attachEvent("onEventCreated",function(e){var t=new i.model(scheduler.getEvent(e));return scheduler._events[e]=t.toJSON(),scheduler._events[e].id=e,!0}),scheduler.attachEvent("onEventAdded",function(t){if(!i.get(t)){var a=e(scheduler.getEvent(t)),r=new i.model(a),d=n(r);d!=t&&this.changeEventId(t,d),i.add(r),i.trigger("scheduler:add",r)}return!0}),scheduler.attachEvent("onEventChanged",function(t){var a=i.get(t),r=e(scheduler.getEvent(t));
+
+return a.set(r),i.trigger("scheduler:change",a),!0}),scheduler.attachEvent("onEventDeleted",function(e){var t=i.get(e);return t&&(i.trigger("scheduler:remove",t),i.remove(e)),!0})}}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_mvc.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.xml
new file mode 100644
index 0000000000..cd29d1543f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_mvc.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_mvc.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.js
new file mode 100644
index 0000000000..40e8f35cb1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.js
@@ -0,0 +1,16 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.load=function(e,t){var a;return"string"==typeof t&&(this._process=t,a=t,t=arguments[2]),this._load_url=e,this._after_call=t,e.$proxy?void e.load(this,"string"==typeof a?a:null):void this._load(e,this._date)},scheduler._dp_init_backup=scheduler._dp_init,scheduler._dp_init=function(e){e._sendData=function(e,t){if(e){if(!this.callEvent("onBeforeDataSending",t?[t,this.getState(t),e]:[null,null,e]))return!1;if(t&&(this._in_progress[t]=(new Date).valueOf()),this.serverProcessor.$proxy){var a="POST"!=this._tMode?"get":"post",r=[];
+
+for(var n in e)r.push({id:n,data:e[n],operation:this.getState(n)});return void this.serverProcessor._send(r,a,this)}var i=new dtmlXMLLoaderObject(this.afterUpdate,this,!0),d=this.serverProcessor+(this._user?getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&"):"");"POST"!=this._tMode?i.loadXML(d+(-1!=d.indexOf("?")?"&":"?")+this.serialize(e,t)):i.loadXML(d,!0,this.serialize(e,t)),this._waitMode++}},e._updatesToParams=function(e){for(var t={},a=0;a<e.length;a++)t[e[a].id]=e[a].data;
+
+return this.serialize(t)},e._processResult=function(e,t,a){if(200==a.status)t=new dtmlXMLLoaderObject(function(){},this,!0),t.loadXMLString(e),t.xmlDoc=a,this.afterUpdate(this,null,null,null,t);else for(var r in this._in_progress){var n=this.getState(r);this.afterUpdateCallback(r,r,n,null)}},this._dp_init_backup(e)},window.dataProcessor&&(dataProcessor.prototype.init=function(e){this.init_original(e),e._dataprocessor=this,this.setTransactionMode("POST",!0),this.serverProcessor.$proxy||(this.serverProcessor+=(-1!=this.serverProcessor.indexOf("?")?"&":"?")+"editing=true");
+
+});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_offline.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.xml
new file mode 100644
index 0000000000..f7b091055f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_offline.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_offline.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.js
new file mode 100644
index 0000000000..a756994e95
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.js
@@ -0,0 +1,13 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){var e,t=new dhtmlDragAndDropObject,a=t.stopDrag;t.stopDrag=function(t){return e=t||event,a.apply(this,arguments)},t.addDragLanding(scheduler._els.dhx_cal_data[0],{_drag:function(t,a,r,n){if(!scheduler.checkEvent("onBeforeExternalDragIn")||scheduler.callEvent("onBeforeExternalDragIn",[t,a,r,n,e])){var i=scheduler.attachEvent("onEventCreated",function(a){scheduler.callEvent("onExternalDragIn",[a,t,e])||(this._drag_mode=this._drag_id=null,this.deleteEvent(a));
+
+}),d=scheduler.getActionData(e),l={start_date:new Date(d.date)};if(scheduler.matrix&&scheduler.matrix[scheduler._mode]){var s=scheduler.matrix[scheduler._mode];l[s.y_property]=d.section;var o=scheduler._locate_cell_timeline(e);l.start_date=s._trace_x[o.x],l.end_date=scheduler.date.add(l.start_date,s.x_step,s.x_unit)}scheduler._props&&scheduler._props[scheduler._mode]&&(l[scheduler._props[scheduler._mode].map_to]=d.section),scheduler.addEventNow(l),scheduler.detachEvent(i)}},_dragIn:function(e,t){
+return e},_dragOut:function(e){return this}})});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_outerdrag.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.xml
new file mode 100644
index 0000000000..eacdd139f8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_outerdrag.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_outerdrag.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.js
new file mode 100644
index 0000000000..a3a19979a8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.js
@@ -0,0 +1,32 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+!function(){function e(e){return e.replace(f,"\n").replace(b,"")}function t(e,t){e=parseFloat(e),t=parseFloat(t),isNaN(t)||(e-=t);var a=r(e);return e=e-a.width+a.cols*m,isNaN(e)?"auto":100*e/m}function a(e,t,a){e=parseFloat(e),t=parseFloat(t),!isNaN(t)&&a&&(e-=t);var n=r(e);return e=e-n.width+n.cols*m,isNaN(e)?"auto":100*e/(m-(isNaN(t)?0:t))}function r(e){for(var t=0,a=scheduler._els.dhx_cal_header[0].childNodes,r=a[1]?a[1].childNodes:a[0].childNodes,n=0;n<r.length;n++){var i=r[n].style?r[n]:r[n].parentNode,d=parseFloat(i.style.width);
+
+if(!(e>d))break;e-=d+1,t+=d+1}return{width:t,cols:n}}function n(e){return e=parseFloat(e),isNaN(e)?"auto":100*e/g}function i(e,t){return(window.getComputedStyle?window.getComputedStyle(e,null)[t]:e.currentStyle?e.currentStyle[t]:null)||""}function d(e,t){for(var a=parseInt(e.style.left,10),r=0;r<scheduler._cols.length;r++)if(a-=scheduler._cols[r],0>a)return r;return t}function l(e,t){for(var a=parseInt(e.style.top,10),r=0;r<scheduler._colsS.heights.length;r++)if(scheduler._colsS.heights[r]>a)return r;
+
+return t}function s(e){return e?"<"+e+">":""}function o(e){return e?"</"+e+">":""}function _(e,t,a,r){var n="<"+e+" profile='"+t+"'";return a&&(n+=" header='"+a+"'"),r&&(n+=" footer='"+r+"'"),n+=">"}function c(){var t="",a=scheduler._mode;if(scheduler.matrix&&scheduler.matrix[scheduler._mode]&&(a="cell"==scheduler.matrix[scheduler._mode].render?"matrix":"timeline"),t+="<scale mode='"+a+"' today='"+scheduler._els.dhx_cal_date[0].innerHTML+"'>","week_agenda"==scheduler._mode)for(var r=scheduler._els.dhx_cal_data[0].getElementsByTagName("DIV"),n=0;n<r.length;n++)"dhx_wa_scale_bar"==r[n].className&&(t+="<column>"+e(r[n].innerHTML)+"</column>");
+else if("agenda"==scheduler._mode||"map"==scheduler._mode){var r=scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;t+="<column>"+e(r[0].innerHTML)+"</column><column>"+e(r[1].innerHTML)+"</column>"}else if("year"==scheduler._mode)for(var r=scheduler._els.dhx_cal_data[0].childNodes,n=0;n<r.length;n++)t+="<month label='"+e(r[n].childNodes[0].innerHTML)+"'>",t+=h(r[n].childNodes[1].childNodes),t+=u(r[n].childNodes[2]),t+="</month>";else{t+="<x>";var r=scheduler._els.dhx_cal_header[0].childNodes;
+
+t+=h(r),t+="</x>";var i=scheduler._els.dhx_cal_data[0];if(scheduler.matrix&&scheduler.matrix[scheduler._mode]){t+="<y>";for(var n=0;n<i.firstChild.rows.length;n++){var d=i.firstChild.rows[n];t+="<row><![CDATA["+e(d.cells[0].innerHTML)+"]]></row>"}t+="</y>",g=i.firstChild.rows[0].cells[0].offsetHeight}else if("TABLE"==i.firstChild.tagName)t+=u(i);else{for(i=i.childNodes[i.childNodes.length-1];-1==i.className.indexOf("dhx_scale_holder");)i=i.previousSibling;i=i.childNodes,t+="<y>";for(var n=0;n<i.length;n++)t+="\n<row><![CDATA["+e(i[n].innerHTML)+"]]></row>";
+
+t+="</y>",g=i[0].offsetHeight}}return t+="</scale>"}function u(t){for(var a="",r=t.firstChild.rows,n=0;n<r.length;n++){for(var i=[],d=0;d<r[n].cells.length;d++)i.push(r[n].cells[d].firstChild.innerHTML);a+="\n<row height='"+t.firstChild.rows[n].cells[0].offsetHeight+"'><![CDATA["+e(i.join("|"))+"]]></row>",g=t.firstChild.rows[0].cells[0].offsetHeight}return a}function h(t){var a,r="";scheduler.matrix&&scheduler.matrix[scheduler._mode]&&(scheduler.matrix[scheduler._mode].second_scale&&(a=t[1].childNodes),
+t=t[0].childNodes);for(var n=0;n<t.length;n++)r+="\n<column><![CDATA["+e(t[n].innerHTML)+"]]></column>";if(m=t[0].offsetWidth,a)for(var i=0,d=t[0].offsetWidth,l=1,n=0;n<a.length;n++)r+="\n<column second_scale='"+l+"'><![CDATA["+e(a[n].innerHTML)+"]]></column>",i+=a[n].offsetWidth,i>=d&&(d+=t[l]?t[l].offsetWidth:0,l++),m=a[0].offsetWidth;return r}function p(r){var s="",o=scheduler._rendered,_=scheduler.matrix&&scheduler.matrix[scheduler._mode];if("agenda"==scheduler._mode||"map"==scheduler._mode)for(var c=0;c<o.length;c++)s+="<event><head><![CDATA["+e(o[c].childNodes[0].innerHTML)+"]]></head><body><![CDATA["+e(o[c].childNodes[2].innerHTML)+"]]></body></event>";
+else if("week_agenda"==scheduler._mode)for(var c=0;c<o.length;c++)s+="<event day='"+o[c].parentNode.getAttribute("day")+"'><body>"+e(o[c].innerHTML)+"</body></event>";else if("year"==scheduler._mode)for(var o=scheduler.get_visible_events(),c=0;c<o.length;c++){var u=o[c].start_date;for(u.valueOf()<scheduler._min_date.valueOf()&&(u=scheduler._min_date);u<o[c].end_date;){var h=u.getMonth()+12*(u.getFullYear()-scheduler._min_date.getFullYear())-scheduler.week_starts._month,p=scheduler.week_starts[h]+u.getDate()-1,v=r?i(scheduler._get_year_cell(u),"color"):"",m=r?i(scheduler._get_year_cell(u),"backgroundColor"):"";
+
+if(s+="<event day='"+p%7+"' week='"+Math.floor(p/7)+"' month='"+h+"' backgroundColor='"+m+"' color='"+v+"'></event>",u=scheduler.date.add(u,1,"day"),u.valueOf()>=scheduler._max_date.valueOf())break}}else if(_&&"cell"==_.render)for(var o=scheduler._els.dhx_cal_data[0].getElementsByTagName("TD"),c=0;c<o.length;c++){var v=r?i(o[c],"color"):"",m=r?i(o[c],"backgroundColor"):"";s+="\n<event><body backgroundColor='"+m+"' color='"+v+"'><![CDATA["+e(o[c].innerHTML)+"]]></body></event>"}else for(var c=0;c<o.length;c++){
+var b,f;if(scheduler.matrix&&scheduler.matrix[scheduler._mode])b=t(o[c].style.left),f=t(o[c].offsetWidth)-1;else{var y=scheduler.config.use_select_menu_space?0:26;b=a(o[c].style.left,y,!0),f=a(o[c].style.width,y)-1}if(!isNaN(1*f)){var x=n(o[c].style.top),k=n(o[c].style.height),w=o[c].className.split(" ")[0].replace("dhx_cal_","");if("dhx_tooltip_line"!==w){var D=scheduler.getEvent(o[c].getAttribute("event_id"));if(D){var p=D._sday,E=D._sweek,M=D._length||0;if("month"==scheduler._mode)k=parseInt(o[c].offsetHeight,10),
+x=parseInt(o[c].style.top,10)-scheduler.xy.month_head_height,p=d(o[c],p),E=l(o[c],E);else if(scheduler.matrix&&scheduler.matrix[scheduler._mode]){p=0;var S=o[c].parentNode.parentNode.parentNode;E=S.rowIndex;var N=g;g=o[c].parentNode.offsetHeight,x=n(o[c].style.top),x-=.2*x,g=N}else{if(o[c].parentNode==scheduler._els.dhx_cal_data[0])continue;var O=scheduler._els.dhx_cal_data[0].childNodes[0],T=parseFloat(-1!=O.className.indexOf("dhx_scale_holder")?O.style.left:0);b+=t(o[c].parentNode.style.left,T);
+
+}if(s+="\n<event week='"+E+"' day='"+p+"' type='"+w+"' x='"+b+"' y='"+x+"' width='"+f+"' height='"+k+"' len='"+M+"'>","event"==w){s+="<header><![CDATA["+e(o[c].childNodes[1].innerHTML)+"]]></header>";var v=r?i(o[c].childNodes[2],"color"):"",m=r?i(o[c].childNodes[2],"backgroundColor"):"";s+="<body backgroundColor='"+m+"' color='"+v+"'><![CDATA["+e(o[c].childNodes[2].innerHTML)+"]]></body>"}else{var v=r?i(o[c],"color"):"",m=r?i(o[c],"backgroundColor"):"";s+="<body backgroundColor='"+m+"' color='"+v+"'><![CDATA["+e(o[c].innerHTML)+"]]></body>";
+
+}s+="</event>"}}}}return s}function v(e,t,a,r,n,i,d){var l=!1;"fullcolor"==n&&(l=!0,n="color"),n=n||"color";var u=scheduler.uid(),h=document.createElement("div");h.style.display="none",document.body.appendChild(h),h.innerHTML='<form id="'+u+'" method="post" target="_blank" action="'+r+'" accept-charset="utf-8" enctype="application/x-www-form-urlencoded"><input type="hidden" name="mycoolxmlbody"/> </form>';var v="";if(e){var m=scheduler._date,g=scheduler._mode;t=scheduler.date[a+"_start"](t),t=scheduler.date["get_"+a+"_end"]?scheduler.date["get_"+a+"_end"](t):scheduler.date.add(t,1,a),
+v=_("pages",n,i,d);for(var b=new Date(e);+t>+b;b=scheduler.date.add(b,1,a))scheduler.setCurrentView(b,a),v+=s("page")+c().replace("–","-")+p(l)+o("page");v+=o("pages"),scheduler.setCurrentView(m,g)}else v=_("data",n,i,d)+c().replace("–","-")+p(l)+o("data");document.getElementById(u).firstChild.value=encodeURIComponent(v),document.getElementById(u).submit(),h.parentNode.removeChild(h)}var m,g,b=new RegExp("<[^>]*>","g"),f=new RegExp("<br[^>]*>","g");scheduler.toPDF=function(e,t,a,r){return v.apply(this,[null,null,null,e,t,a,r]);
+
+},scheduler.toPDFRange=function(e,t,a,r,n,i,d){return"string"==typeof e&&(e=scheduler.templates.api_date(e),t=scheduler.templates.api_date(t)),v.apply(this,arguments)}}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_pdf.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.xml
new file mode 100644
index 0000000000..fec6f4e546
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_pdf.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_pdf.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.js
new file mode 100644
index 0000000000..7aa5d45465
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.js
@@ -0,0 +1,21 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.icons_select=["icon_details","icon_delete"],scheduler.config.details_on_create=!0,scheduler.config.show_quick_info=!0,scheduler.xy.menu_width=0,scheduler.attachEvent("onClick",function(e){return scheduler.showQuickInfo(e),!0}),function(){for(var e=["onEmptyClick","onViewChange","onLightbox","onBeforeEventDelete","onBeforeDrag"],t=function(){return scheduler._hideQuickInfo(),!0},a=0;a<e.length;a++)scheduler.attachEvent(e[a],t)}(),scheduler.templates.quick_info_title=function(e,t,a){
+return a.text.substr(0,50)},scheduler.templates.quick_info_content=function(e,t,a){return a.details||a.text},scheduler.templates.quick_info_date=function(e,t,a){return scheduler.isOneDayEvent(a)?scheduler.templates.day_date(e,t,a)+" "+scheduler.templates.event_header(e,t,a):scheduler.templates.week_date(e,t,a)},scheduler.showQuickInfo=function(e){if(e!=this._quick_info_box_id&&this.config.show_quick_info){this.hideQuickInfo(!0);var t=this._get_event_counter_part(e);t&&(this._quick_info_box=this._init_quick_info(t),
+this._fill_quick_data(e),this._show_quick_info(t))}},scheduler._hideQuickInfo=function(){scheduler.hideQuickInfo()},scheduler.hideQuickInfo=function(e){var t=this._quick_info_box;if(this._quick_info_box_id=0,t&&t.parentNode){var a=t._offsetWidth;if(scheduler.config.quick_info_detached)return t.parentNode.removeChild(t);"auto"==t.style.right?t.style.left=-a+"px":t.style.right=-a+"px",e&&t.parentNode.removeChild(t)}},dhtmlxEvent(window,"keydown",function(e){27==e.keyCode&&scheduler.hideQuickInfo()}),
+scheduler._show_quick_info=function(e){var t=scheduler._quick_info_box;scheduler._obj.appendChild(t);var a=t.offsetWidth,r=t.offsetHeight;scheduler.config.quick_info_detached?(t.style.left=e.left-e.dx*(a-e.width)+"px",t.style.top=e.top-(e.dy?r:-e.height)+"px"):(t.style.top=this.xy.scale_height+this.xy.nav_height+20+"px",1==e.dx?(t.style.right="auto",t.style.left=-a+"px",setTimeout(function(){t.style.left="-10px"},1)):(t.style.left="auto",t.style.right=-a+"px",setTimeout(function(){t.style.right="-10px";
+
+},1)),t.className=t.className.replace("dhx_qi_left","").replace("dhx_qi_right","")+" dhx_qi_"+(1==e?"left":"right"))},scheduler.attachEvent("onTemplatesReady",function(){if(scheduler.hideQuickInfo(),this._quick_info_box){var e=this._quick_info_box;e.parentNode&&e.parentNode.removeChild(e),this._quick_info_box=null}}),scheduler._quick_info_onscroll_handler=function(e){scheduler.hideQuickInfo()},scheduler._init_quick_info=function(){if(!this._quick_info_box){var e=scheduler.xy,t=this._quick_info_box=document.createElement("div");
+
+t.className="dhx_cal_quick_info",scheduler.$testmode&&(t.className+=" dhx_no_animate");var a='<div class="dhx_cal_qi_title" style="height:'+e.quick_info_title+'px"><div class="dhx_cal_qi_tcontent"></div><div  class="dhx_cal_qi_tdate"></div></div><div class="dhx_cal_qi_content"></div>';a+='<div class="dhx_cal_qi_controls" style="height:'+e.quick_info_buttons+'px">';for(var r=scheduler.config.icons_select,n=0;n<r.length;n++)a+='<div class="dhx_qi_big_icon '+r[n]+'" title="'+scheduler.locale.labels[r[n]]+"\"><div class='dhx_menu_icon "+r[n]+"'></div><div>"+scheduler.locale.labels[r[n]]+"</div></div>";
+
+a+="</div>",t.innerHTML=a,dhtmlxEvent(t,"click",function(e){e=e||event,scheduler._qi_button_click(e.target||e.srcElement)}),scheduler.config.quick_info_detached&&(scheduler._detachDomEvent(scheduler._els.dhx_cal_data[0],"scroll",scheduler._quick_info_onscroll_handler),dhtmlxEvent(scheduler._els.dhx_cal_data[0],"scroll",scheduler._quick_info_onscroll_handler))}return this._quick_info_box},scheduler._qi_button_click=function(e){var t=scheduler._quick_info_box;if(e&&e!=t){var a=e.className;if(-1!=a.indexOf("_icon")){
+var r=scheduler._quick_info_box_id;scheduler._click.buttons[a.split(" ")[1].replace("icon_","")](r)}else scheduler._qi_button_click(e.parentNode)}},scheduler._get_event_counter_part=function(e){for(var t=scheduler.getRenderedEvent(e),a=0,r=0,n=t;n&&n!=scheduler._obj;)a+=n.offsetLeft,r+=n.offsetTop-n.scrollTop,n=n.offsetParent;if(n){var i=a+t.offsetWidth/2>scheduler._x/2?1:0,d=r+t.offsetHeight/2>scheduler._y/2?1:0;return{left:a,top:r,dx:i,dy:d,width:t.offsetWidth,height:t.offsetHeight}}return 0},scheduler._fill_quick_data=function(e){
+var t=scheduler.getEvent(e),a=scheduler._quick_info_box;scheduler._quick_info_box_id=e;var r=a.firstChild.firstChild;r.innerHTML=scheduler.templates.quick_info_title(t.start_date,t.end_date,t);var n=r.nextSibling;n.innerHTML=scheduler.templates.quick_info_date(t.start_date,t.end_date,t);var i=a.firstChild.nextSibling;i.innerHTML=scheduler.templates.quick_info_content(t.start_date,t.end_date,t)};
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_quick_info.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.xml
new file mode 100644
index 0000000000..427d8d8b0d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_quick_info.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_quick_info.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.js
new file mode 100644
index 0000000000..5c6aa2b36f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.js
@@ -0,0 +1,16 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){function e(e,t,a,r){for(var n=t.getElementsByTagName(e),i=a.getElementsByTagName(e),l=i.length-1;l>=0;l--){var a=i[l];if(r){var d=document.createElement("SPAN");d.className="dhx_text_disabled",d.innerHTML=r(n[l]),a.parentNode.insertBefore(d,a),a.parentNode.removeChild(a)}else a.disabled=!0,t.checked&&(a.checked=!0)}}var t=scheduler.config.lightbox.sections.slice(),a=scheduler.config.buttons_left.slice(),r=scheduler.config.buttons_right.slice();scheduler.attachEvent("onBeforeLightbox",function(e){
+if(this.config.readonly_form||this.getEvent(e).readonly){this.config.readonly_active=!0;for(var n=0;n<this.config.lightbox.sections.length;n++)this.config.lightbox.sections[n].focus=!1}else this.config.readonly_active=!1,scheduler.config.lightbox.sections=t.slice(),scheduler.config.buttons_left=a.slice(),scheduler.config.buttons_right=r.slice();var i=this.config.lightbox.sections;if(this.config.readonly_active){for(var n=0;n<i.length;n++)if("recurring"==i[n].type){this.config.readonly_active&&i.splice(n,1);
+
+break}for(var l=["dhx_delete_btn","dhx_save_btn"],d=[scheduler.config.buttons_left,scheduler.config.buttons_right],n=0;n<l.length;n++)for(var s=l[n],o=0;o<d.length;o++){for(var _=d[o],c=-1,u=0;u<_.length;u++)if(_[u]==s){c=u;break}-1!=c&&_.splice(c,1)}}return this.resetLightbox(),!0});var n=scheduler._fill_lightbox;scheduler._fill_lightbox=function(){var t=this.getLightbox();this.config.readonly_active&&(t.style.visibility="hidden",t.style.display="block");var a=n.apply(this,arguments);if(this.config.readonly_active&&(t.style.visibility="",
+t.style.display="none"),this.config.readonly_active){var r=this.getLightbox(),l=this._lightbox_r=r.cloneNode(!0);l.id=scheduler.uid(),e("textarea",r,l,function(e){return e.value}),e("input",r,l,!1),e("select",r,l,function(e){return e.options.length?e.options[Math.max(e.selectedIndex||0,0)].text:""}),r.parentNode.insertBefore(l,r),i.call(this,l),scheduler._lightbox&&scheduler._lightbox.parentNode.removeChild(scheduler._lightbox),this._lightbox=l,scheduler.config.drag_lightbox&&(l.firstChild.onmousedown=scheduler._ready_to_dnd),
+this.setLightboxSize(),l.onclick=function(e){var t=e?e.target:event.srcElement;if(t.className||(t=t.previousSibling),t&&t.className)switch(t.className){case"dhx_cancel_btn":scheduler.callEvent("onEventCancel",[scheduler._lightbox_id]),scheduler._edit_stop_event(scheduler.getEvent(scheduler._lightbox_id),!1),scheduler.hide_lightbox()}}}return a};var i=scheduler.showCover;scheduler.showCover=function(){this.config.readonly_active||i.apply(this,arguments)};var l=scheduler.hide_lightbox;scheduler.hide_lightbox=function(){
+return this._lightbox_r&&(this._lightbox_r.parentNode.removeChild(this._lightbox_r),this._lightbox_r=this._lightbox=null),l.apply(this,arguments)}});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_readonly.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.xml
new file mode 100644
index 0000000000..14942e54eb
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_readonly.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_readonly.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.js
new file mode 100644
index 0000000000..85adb019bd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.js
@@ -0,0 +1,59 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.occurrence_timestamp_in_utc=!1,scheduler.config.recurring_workdays=[1,2,3,4,5],scheduler.form_blocks.recurring={_get_node:function(e){return"string"==typeof e&&(e=document.getElementById(e)),"none"==e.style.display&&(e.style.display=""),e},_outer_html:function(e){function t(e){var t,a=document.createElement("div");return a.appendChild(e.cloneNode(!0)),t=a.innerHTML,a=null,t}return e.outerHTML||t(e)},render:function(e){if(e.form){var t=scheduler.form_blocks.recurring,a=t._get_node(e.form),r=t._outer_html(a);
+
+return a.style.display="none",r}return scheduler.__recurring_template},_ds:{},_get_form_node:function(e,t,a){var r=e[t];if(!r)return null;if(r.nodeName)return r;if(r.length)for(var n=0;n<r.length;n++)if(r[n].value==a)return r[n]},_get_node_value:function(e,t,a){var r=e[t];if(!r)return"";if(r.length){if(a){for(var n=[],i=0;i<r.length;i++)r[i].checked&&n.push(r[i].value);return n}for(var i=0;i<r.length;i++)if(r[i].checked)return r[i].value}return r.value?a?[r.value]:r.value:void 0},_set_node_value:function(e,t,a){
+var r=e[t];if(r)if(r.name==t)r.value=a;else if(r.length)for(var n="object"==typeof a,i=0;i<r.length;i++)(n||r[i].value==a)&&(r[i].checked=n?!!a[r[i].value]:!!a)},_init_set_value:function(e,t,a){function r(e){for(var t=0;t<e.length;t++){var a=e[t];if(a.name)if(m[a.name])if(m[a.name].nodeType){var r=m[a.name];m[a.name]=[r,a]}else m[a.name].push(a);else m[a.name]=a}}function n(){f("dhx_repeat_day").style.display="none",f("dhx_repeat_week").style.display="none",f("dhx_repeat_month").style.display="none",
+f("dhx_repeat_year").style.display="none",f("dhx_repeat_"+this.value).style.display="block",scheduler.setLightboxSize()}function i(e){var t=[_(m,"repeat")];for(b[t[0]](t,e);t.length<5;)t.push("");var a="",r=l(m);if("no"==r)e.end=new Date(9999,1,1),a="no";else if("date_of_end"==r)e.end=h(_(m,"date_of_end"));else{scheduler.transpose_type(t.join("_")),a=Math.max(1,_(m,"occurences_count"));var n=0;e.end=scheduler.date.add(new Date(e.start),a+n,t.join("_"))}return t.join("_")+"#"+a}function l(e){var t=e.end;
+
+if(t.length){for(var a=0;a<t.length;a++)if(t[a].checked)return t[a].value&&"on"!=t[a].value?t[a].value:a?2==a?"date_of_end":"occurences_count":"no"}else if(t.value)return t.value;return"no"}function d(e,t){var a=e.end;if(a.length){var r=!!a[0].value&&"on"!=a[0].value;if(r)for(var n=0;n<a.length;n++)a[n].value==t&&(a[n].checked=!0);else{var i=0;switch(t){case"no":i=0;break;case"date_of_end":i=2;break;default:i=1}a[i].checked=!0}}else a.value=t}function s(e,t){var a=scheduler.form_blocks.recurring._set_node_value,r=e.split("#");
+
+switch(e=r[0].split("_"),y[e[0]](e,t),r[1]){case"no":d(m,"no");break;case"":d(m,"date_of_end");var n=t.end;scheduler.config.include_end_by&&(n=scheduler.date.add(n,-1,"day")),a(m,"date_of_end",p(n));break;default:d(m,"occurences_count"),a(m,"occurences_count",r[1])}a(m,"repeat",e[0]);var i=scheduler.form_blocks.recurring._get_form_node(m,"repeat",e[0]);"SELECT"==i.nodeName&&i.onchange?i.onchange():i.onclick&&i.onclick()}var o=scheduler.form_blocks.recurring,_=o._get_node_value,c=o._set_node_value;
+
+scheduler.form_blocks.recurring._ds={start:a.start_date,end:a._end_date};var u=scheduler.date.str_to_date(scheduler.config.repeat_date),h=function(e){var t=u(e);return scheduler.config.include_end_by&&(t=scheduler.date.add(t,1,"day")),t},p=scheduler.date.date_to_str(scheduler.config.repeat_date),v=e.getElementsByTagName("FORM")[0],m={};if(r(v.getElementsByTagName("INPUT")),r(v.getElementsByTagName("SELECT")),!scheduler.config.repeat_date_of_end){var g=scheduler.date.date_to_str(scheduler.config.repeat_date);
+
+scheduler.config.repeat_date_of_end=g(scheduler.date.add(scheduler._currentDate(),30,"day"))}c(m,"date_of_end",scheduler.config.repeat_date_of_end);var f=function(e){return document.getElementById(e)||{style:{}}};scheduler.form_blocks.recurring._get_repeat_code=i;var b={month:function(e,t){var a=scheduler.form_blocks.recurring._get_node_value;"d"==a(m,"month_type")?(e.push(Math.max(1,a(m,"month_count"))),t.start.setDate(a(m,"month_day"))):(e.push(Math.max(1,a(m,"month_count2"))),e.push(a(m,"month_day2")),
+e.push(Math.max(1,a(m,"month_week2"))),scheduler.config.repeat_precise||t.start.setDate(1)),t._start=!0},week:function(e,t){var a=scheduler.form_blocks.recurring._get_node_value;e.push(Math.max(1,a(m,"week_count"))),e.push(""),e.push("");for(var r=[],n=a(m,"week_day",!0),i=t.start.getDay(),l=!1,d=0;d<n.length;d++)r.push(n[d]),l=l||n[d]==i;r.length||(r.push(i),l=!0),r.sort(),scheduler.config.repeat_precise?l||(scheduler.transpose_day_week(t.start,r,1,7),t._start=!0):(t.start=scheduler.date.week_start(t.start),
+t._start=!0),e.push(r.join(","))},day:function(e){var t=scheduler.form_blocks.recurring._get_node_value;"d"==t(m,"day_type")?e.push(Math.max(1,t(m,"day_count"))):(e.push("week"),e.push(1),e.push(""),e.push(""),e.push(scheduler.config.recurring_workdays.join(",")),e.splice(0,1))},year:function(e,t){var a=scheduler.form_blocks.recurring._get_node_value;"d"==a(m,"year_type")?(e.push("1"),t.start.setMonth(0),t.start.setDate(a(m,"year_day")),t.start.setMonth(a(m,"year_month"))):(e.push("1"),e.push(a(m,"year_day2")),
+e.push(a(m,"year_week2")),t.start.setDate(1),t.start.setMonth(a(m,"year_month2"))),t._start=!0}},y={week:function(e,t){var a=scheduler.form_blocks.recurring._set_node_value;a(m,"week_count",e[1]);for(var r=e[4].split(","),n={},i=0;i<r.length;i++)n[r[i]]=!0;a(m,"week_day",n)},month:function(e,t){var a=scheduler.form_blocks.recurring._set_node_value;""===e[2]?(a(m,"month_type","d"),a(m,"month_count",e[1]),a(m,"month_day",t.start.getDate())):(a(m,"month_type","w"),a(m,"month_count2",e[1]),a(m,"month_week2",e[3]),
+a(m,"month_day2",e[2]))},day:function(e,t){var a=scheduler.form_blocks.recurring._set_node_value;a(m,"day_type","d"),a(m,"day_count",e[1])},year:function(e,t){var a=scheduler.form_blocks.recurring._set_node_value;""===e[2]?(a(m,"year_type","d"),a(m,"year_day",t.start.getDate()),a(m,"year_month",t.start.getMonth())):(a(m,"year_type","w"),a(m,"year_week2",e[3]),a(m,"year_day2",e[2]),a(m,"year_month2",t.start.getMonth()))}};scheduler.form_blocks.recurring._set_repeat_code=s;for(var x=0;x<v.elements.length;x++){
+var k=v.elements[x];switch(k.name){case"repeat":"SELECT"==k.nodeName?k.onchange=n:k.onclick=n}}scheduler._lightbox._rec_init_done=!0},set_value:function(e,t,a){var r=scheduler.form_blocks.recurring;scheduler._lightbox._rec_init_done||r._init_set_value(e,t,a),e.open=!a.rec_type,this._is_modified_occurence(a)?e.blocked=!0:e.blocked=!1;var n=r._ds;n.start=a.start_date,n.end=a._end_date,r.button_click(0,e.previousSibling.firstChild.firstChild,e,e),t&&r._set_repeat_code(t,n)},get_value:function(e,t){if(e.open){
+var a=scheduler.form_blocks.recurring._ds,r={};this.formSection("time").getValue(r),a.start=r.start_date,t.rec_type=scheduler.form_blocks.recurring._get_repeat_code(a),a._start?(t.start_date=new Date(a.start),t._start_date=new Date(a.start),a._start=!1):t._start_date=null,t._end_date=a.end,t.rec_pattern=t.rec_type.split("#")[0]}else t.rec_type=t.rec_pattern="",t._end_date=t.end_date;return t.rec_type},_get_button:function(){var e=scheduler.formSection("recurring").header;return e.firstChild.firstChild;
+
+},_get_form:function(){return scheduler.formSection("recurring").node},open:function(){var e=scheduler.form_blocks.recurring,t=e._get_form();t.open||e._toggle_block()},close:function(){var e=scheduler.form_blocks.recurring,t=e._get_form();t.open&&e._toggle_block()},_toggle_block:function(){var e=scheduler.form_blocks.recurring,t=e._get_form(),a=e._get_button();t.open||t.blocked?(t.style.height="0px",a&&(a.style.backgroundPosition="-5px 20px",a.nextSibling.innerHTML=scheduler.locale.labels.button_recurring)):(t.style.height="auto",
+a&&(a.style.backgroundPosition="-5px 0px",a.nextSibling.innerHTML=scheduler.locale.labels.button_recurring_open)),t.open=!t.open,scheduler.setLightboxSize()},focus:function(e){},button_click:function(e,t,a,r){scheduler.form_blocks.recurring._toggle_block()}},scheduler._rec_markers={},scheduler._rec_markers_pull={},scheduler._add_rec_marker=function(e,t){e._pid_time=t,this._rec_markers[e.id]=e,this._rec_markers_pull[e.event_pid]||(this._rec_markers_pull[e.event_pid]={}),this._rec_markers_pull[e.event_pid][t]=e;
+
+},scheduler._get_rec_marker=function(e,t){var a=this._rec_markers_pull[t];return a?a[e]:null},scheduler._get_rec_markers=function(e){return this._rec_markers_pull[e]||[]},scheduler._rec_temp=[],function(){var e=scheduler.addEvent;scheduler.addEvent=function(t,a,r,n,i){var l=e.apply(this,arguments);if(l){var d=scheduler.getEvent(l);this._is_modified_occurence(d)&&scheduler._add_rec_marker(d,1e3*d.event_length),d.rec_type&&(d.rec_pattern=d.rec_type.split("#")[0])}return l}}(),scheduler.attachEvent("onEventIdChange",function(e,t){
+if(!this._ignore_call){this._ignore_call=!0,scheduler._rec_markers[e]&&(scheduler._rec_markers[t]=scheduler._rec_markers[e],delete scheduler._rec_markers[e]);for(var a=0;a<this._rec_temp.length;a++){var r=this._rec_temp[a];r.event_pid==e&&(r.event_pid=t,this.changeEventId(r.id,t+"#"+r.id.split("#")[1]))}delete this._ignore_call}}),scheduler.attachEvent("onConfirmedBeforeEventDelete",function(e){var t=this.getEvent(e);if(this._is_virtual_event(e)||this._is_modified_occurence(t)&&t.rec_type&&"none"!=t.rec_type){
+e=e.split("#");var a=this.uid(),r=e[1]?e[1]:t._pid_time/1e3,n=this._copy_event(t);n.id=a,n.event_pid=t.event_pid||e[0];var i=r;n.event_length=i,n.rec_type=n.rec_pattern="none",this.addEvent(n),this._add_rec_marker(n,1e3*i)}else{t.rec_type&&this._lightbox_id&&this._roll_back_dates(t);var l=this._get_rec_markers(e);for(var d in l)l.hasOwnProperty(d)&&(e=l[d].id,this.getEvent(e)&&this.deleteEvent(e,!0))}return!0}),scheduler.attachEvent("onEventDeleted",function(e,t){!this._is_virtual_event(e)&&this._is_modified_occurence(t)&&(scheduler._events[e]||(t.rec_type=t.rec_pattern="none",
+this.setEvent(e,t)))}),scheduler.attachEvent("onEventChanged",function(e){if(this._loading)return!0;var t=this.getEvent(e);if(this._is_virtual_event(e)){var e=e.split("#"),a=this.uid();this._not_render=!0;var r=this._copy_event(t);r.id=a,r.event_pid=e[0];var n=e[1];r.event_length=n,r.rec_type=r.rec_pattern="",this._add_rec_marker(r,1e3*n),this.addEvent(r),this._not_render=!1}else{t.rec_type&&this._lightbox_id&&this._roll_back_dates(t);var i=this._get_rec_markers(e);for(var l in i)i.hasOwnProperty(l)&&(delete this._rec_markers[i[l].id],
+this.deleteEvent(i[l].id,!0));delete this._rec_markers_pull[e];for(var d=!1,s=0;s<this._rendered.length;s++)this._rendered[s].getAttribute("event_id")==e&&(d=!0);d||(this._select_id=null)}return!0}),scheduler.attachEvent("onEventAdded",function(e){if(!this._loading){var t=this.getEvent(e);t.rec_type&&!t.event_length&&this._roll_back_dates(t)}return!0}),scheduler.attachEvent("onEventSave",function(e,t,a){var r=this.getEvent(e);return r.rec_type||!t.rec_type||this._is_virtual_event(e)||(this._select_id=null),
+!0}),scheduler.attachEvent("onEventCreated",function(e){var t=this.getEvent(e);return t.rec_type||(t.rec_type=t.rec_pattern=t.event_length=t.event_pid=""),!0}),scheduler.attachEvent("onEventCancel",function(e){var t=this.getEvent(e);t.rec_type&&(this._roll_back_dates(t),this.render_view_data())}),scheduler._roll_back_dates=function(e){e.event_length=(e.end_date.valueOf()-e.start_date.valueOf())/1e3,e.end_date=e._end_date,e._start_date&&(e.start_date.setMonth(0),e.start_date.setDate(e._start_date.getDate()),
+e.start_date.setMonth(e._start_date.getMonth()),e.start_date.setFullYear(e._start_date.getFullYear()))},scheduler._is_virtual_event=function(e){return-1!=e.toString().indexOf("#")},scheduler._is_modified_occurence=function(e){return e.event_pid&&"0"!=e.event_pid},scheduler._validId=function(e){return!this._is_virtual_event(e)},scheduler.showLightbox_rec=scheduler.showLightbox,scheduler.showLightbox=function(e){var t=this.locale,a=scheduler.config.lightbox_recurring,r=this.getEvent(e),n=r.event_pid,i=this._is_virtual_event(e);
+
+i&&(n=e.split("#")[0]);var l=function(e){var t=scheduler.getEvent(e);return t._end_date=t.end_date,t.end_date=new Date(t.start_date.valueOf()+1e3*t.event_length),scheduler.showLightbox_rec(e)};if((n||1*n===0)&&r.rec_type)return l(e);if(!n||"0"===n||!t.labels.confirm_recurring||"instance"==a||"series"==a&&!i)return this.showLightbox_rec(e);if("ask"==a){var d=this;dhtmlx.modalbox({text:t.labels.confirm_recurring,title:t.labels.title_confirm_recurring,width:"500px",position:"middle",buttons:[t.labels.button_edit_series,t.labels.button_edit_occurrence,t.labels.icon_cancel],
+callback:function(t){switch(+t){case 0:return l(n);case 1:return d.showLightbox_rec(e);case 2:return}}})}else l(n)},scheduler.get_visible_events_rec=scheduler.get_visible_events,scheduler.get_visible_events=function(e){for(var t=0;t<this._rec_temp.length;t++)delete this._events[this._rec_temp[t].id];this._rec_temp=[];for(var a=this.get_visible_events_rec(e),r=[],t=0;t<a.length;t++)a[t].rec_type?"none"!=a[t].rec_pattern&&this.repeat_date(a[t],r):r.push(a[t]);return r},function(){var e=scheduler.isOneDayEvent;
+
+scheduler.isOneDayEvent=function(t){return t.rec_type?!0:e.call(this,t)};var t=scheduler.updateEvent;scheduler.updateEvent=function(e){var a=scheduler.getEvent(e);a&&a.rec_type&&(a.rec_pattern=(a.rec_type||"").split("#")[0]),a&&a.rec_type&&!this._is_virtual_event(e)?scheduler.update_view():t.call(this,e)}}(),scheduler.transponse_size={day:1,week:7,month:1,year:12},scheduler.date.day_week=function(e,t,a){e.setDate(1),a=7*(a-1);var r=e.getDay(),n=1*t+a-r+1;e.setDate(a>=n?n+7:n)},scheduler.transpose_day_week=function(e,t,a,r,n){
+for(var i=(e.getDay()||(scheduler.config.start_on_monday?7:0))-a,l=0;l<t.length;l++)if(t[l]>i)return e.setDate(e.getDate()+1*t[l]-i-(r?a:n));this.transpose_day_week(e,t,a+r,null,a)},scheduler.transpose_type=function(e){var t="transpose_"+e;if(!this.date[t]){var a=e.split("_"),r=864e5,n="add_"+e,i=this.transponse_size[a[0]]*a[1];if("day"==a[0]||"week"==a[0]){var l=null;if(a[4]&&(l=a[4].split(","),scheduler.config.start_on_monday)){for(var d=0;d<l.length;d++)l[d]=1*l[d]||7;l.sort()}this.date[t]=function(e,t){
+var a=Math.floor((t.valueOf()-e.valueOf())/(r*i));a>0&&e.setDate(e.getDate()+a*i),l&&scheduler.transpose_day_week(e,l,1,i)},this.date[n]=function(e,t){var a=new Date(e.valueOf());if(l)for(var r=0;t>r;r++)scheduler.transpose_day_week(a,l,0,i);else a.setDate(a.getDate()+t*i);return a}}else("month"==a[0]||"year"==a[0])&&(this.date[t]=function(e,t){var r=Math.ceil((12*t.getFullYear()+1*t.getMonth()-(12*e.getFullYear()+1*e.getMonth()))/i);r>=0&&e.setMonth(e.getMonth()+r*i),a[3]&&scheduler.date.day_week(e,a[2],a[3]);
+
+},this.date[n]=function(e,t){var r=new Date(e.valueOf());return r.setMonth(r.getMonth()+t*i),a[3]&&scheduler.date.day_week(r,a[2],a[3]),r})}},scheduler.repeat_date=function(e,t,a,r,n){r=r||this._min_date,n=n||this._max_date;var i=new Date(e.start_date.valueOf());for(!e.rec_pattern&&e.rec_type&&(e.rec_pattern=e.rec_type.split("#")[0]),this.transpose_type(e.rec_pattern),scheduler.date["transpose_"+e.rec_pattern](i,r);i<e.start_date||scheduler._fix_daylight_saving_date(i,r,e,i,new Date(i.valueOf()+1e3*e.event_length)).valueOf()<=r.valueOf()||i.valueOf()+1e3*e.event_length<=r.valueOf();)i=this.date.add(i,1,e.rec_pattern);
+
+for(;n>i&&i<e.end_date;){var l=scheduler.config.occurrence_timestamp_in_utc?Date.UTC(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),i.getMinutes(),i.getSeconds()):i.valueOf(),d=this._get_rec_marker(l,e.id);if(d)a&&t.push(d);else{var s=new Date(i.valueOf()+1e3*e.event_length),o=this._copy_event(e);if(o.text=e.text,o.start_date=i,o.event_pid=e.id,o.id=e.id+"#"+Math.ceil(l/1e3),o.end_date=s,o.end_date=scheduler._fix_daylight_saving_date(o.start_date,o.end_date,e,i,o.end_date),o._timed=this.isOneDayEvent(o),
+!o._timed&&!this._table_view&&!this.config.multi_day)return;t.push(o),a||(this._events[o.id]=o,this._rec_temp.push(o))}i=this.date.add(i,1,e.rec_pattern)}},scheduler._fix_daylight_saving_date=function(e,t,a,r,n){var i=e.getTimezoneOffset()-t.getTimezoneOffset();return new Date(i?i>0?r.valueOf()+1e3*a.event_length-60*i*1e3:t.valueOf()-60*i*1e3:n.valueOf())},scheduler.getRecDates=function(e,t){var a="object"==typeof e?e:scheduler.getEvent(e),r=0,n=[];t=t||100;var i=new Date(a.start_date.valueOf()),l=new Date(i.valueOf());
+
+if(!a.rec_type)return[{start_date:a.start_date,end_date:a.end_date}];if("none"==a.rec_type)return[];for(this.transpose_type(a.rec_pattern),scheduler.date["transpose_"+a.rec_pattern](i,l);i<a.start_date||i.valueOf()+1e3*a.event_length<=l.valueOf();)i=this.date.add(i,1,a.rec_pattern);for(;i<a.end_date;){var d=this._get_rec_marker(i.valueOf(),a.id),s=!0;if(d)"none"==d.rec_type?s=!1:n.push({start_date:d.start_date,end_date:d.end_date});else{var o=new Date(i),_=new Date(i.valueOf()+1e3*a.event_length);
+
+_=scheduler._fix_daylight_saving_date(o,_,a,i,_),n.push({start_date:o,end_date:_})}if(i=this.date.add(i,1,a.rec_pattern),s&&(r++,r==t))break}return n},scheduler.getEvents=function(e,t){var a=[];for(var r in this._events){var n=this._events[r];if(n&&n.start_date<t&&n.end_date>e)if(n.rec_pattern){if("none"==n.rec_pattern)continue;var i=[];this.repeat_date(n,i,!0,e,t);for(var l=0;l<i.length;l++)!i[l].rec_pattern&&i[l].start_date<t&&i[l].end_date>e&&!this._rec_markers[i[l].id]&&a.push(i[l])}else this._is_virtual_event(n.id)||a.push(n);
+
+}return a},scheduler.config.repeat_date="%m.%d.%Y",scheduler.config.lightbox.sections=[{name:"description",height:130,map_to:"text",type:"textarea",focus:!0},{name:"recurring",type:"recurring",map_to:"rec_type",button:"recurring"},{name:"time",height:72,type:"time",map_to:"auto"}],scheduler._copy_dummy=function(e){var t=new Date(this.start_date),a=new Date(this.end_date);this.start_date=t,this.end_date=a,this.event_length=this.event_pid=this.rec_pattern=this.rec_type=null},scheduler.config.include_end_by=!1,
+scheduler.config.lightbox_recurring="ask",scheduler.attachEvent("onClearAll",function(){scheduler._rec_markers={},scheduler._rec_markers_pull={},scheduler._rec_temp=[]}),scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daily</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Weekly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monthly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Yearly</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />day<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Every workday</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repeat every<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week next days:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Monday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Thursday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tuesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Friday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Wednesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Saturday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunday</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeat</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />day every<input class="dhx_repeat_text" type="text" name="month_count" value="1" />month<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="0">Sunday</select>every<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />month<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />day<select name="year_month"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select>month<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="7">Sunday</select>of<select name="year_month2"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>No end date</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />After</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />End by</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_recurring.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.xml
new file mode 100644
index 0000000000..5d7fbbcb37
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_recurring.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_recurring.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.js
new file mode 100644
index 0000000000..635cf1113c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.js
@@ -0,0 +1,15 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler._get_serializable_data=function(){var e={};for(var t in this._events){var a=this._events[t];-1==a.id.toString().indexOf("#")&&(e[a.id]=a)}return e},scheduler.data_attributes=function(){var e=[],t=scheduler.templates.xml_format,a=this._get_serializable_data();for(var r in a){var n=a[r];for(var i in n)"_"!=i.substr(0,1)&&e.push([i,"start_date"==i||"end_date"==i?t:null]);break}return e},scheduler.toXML=function(e){var t=[],a=this.data_attributes(),r=this._get_serializable_data();for(var n in r){
+var i=r[n];t.push("<event>");for(var l=0;l<a.length;l++)t.push("<"+a[l][0]+"><![CDATA["+(a[l][1]?a[l][1](i[a[l][0]]):i[a[l][0]])+"]]></"+a[l][0]+">");t.push("</event>")}return(e||"")+"<data>"+t.join("\n")+"</data>"},scheduler._serialize_json_value=function(e){return null===e||"boolean"==typeof e?e=""+e:(e||0===e||(e=""),e='"'+e.toString().replace(/\n/g,"").replace(/\\/g,"\\\\").replace(/\"/g,'\\"')+'"'),e},scheduler.toJSON=function(){var e=[],t="",a=this.data_attributes(),r=this._get_serializable_data();
+
+for(var n in r){for(var i=r[n],l=[],d=0;d<a.length;d++)t=a[d][1]?a[d][1](i[a[d][0]]):i[a[d][0]],l.push(' "'+a[d][0]+'": '+this._serialize_json_value(t));e.push("{"+l.join(",")+"}")}return"["+e.join(",\n")+"]"},scheduler.toICal=function(e){var t="BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\nDESCRIPTION:",a="END:VCALENDAR",r=scheduler.date.date_to_str("%Y%m%dT%H%i%s"),n=scheduler.date.date_to_str("%Y%m%d"),i=[],l=this._get_serializable_data();for(var d in l){var s=l[d];
+
+i.push("BEGIN:VEVENT"),i.push(s._timed&&(s.start_date.getHours()||s.start_date.getMinutes())?"DTSTART:"+r(s.start_date):"DTSTART:"+n(s.start_date)),i.push(s._timed&&(s.end_date.getHours()||s.end_date.getMinutes())?"DTEND:"+r(s.end_date):"DTEND:"+n(s.end_date)),i.push("SUMMARY:"+s.text),i.push("END:VEVENT")}return t+(e||"")+"\n"+i.join("\n")+"\n"+a};
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_serialize.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.xml
new file mode 100644
index 0000000000..d64329a957
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_serialize.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_serialize.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.js
new file mode 100644
index 0000000000..8ee3d9a4ed
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.js
@@ -0,0 +1,21 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+window.dhtmlXTooltip=scheduler.dhtmlXTooltip=window.dhtmlxTooltip={},dhtmlXTooltip.config={className:"dhtmlXTooltip tooltip",timeout_to_display:50,timeout_to_hide:50,delta_x:15,delta_y:-20},dhtmlXTooltip.tooltip=document.createElement("div"),dhtmlXTooltip.tooltip.className=dhtmlXTooltip.config.className,dhtmlXTooltip.show=function(e,t){if(!scheduler.config.touch||scheduler.config.touch_tooltip){var a=dhtmlXTooltip,r=this.tooltip,n=r.style;a.tooltip.className=a.config.className;var i=this.position(e),l=e.target||e.srcElement;
+
+if(!this.isTooltip(l)){var d=i.x+(a.config.delta_x||0),s=i.y-(a.config.delta_y||0);n.visibility="hidden",n.removeAttribute?(n.removeAttribute("right"),n.removeAttribute("bottom")):(n.removeProperty("right"),n.removeProperty("bottom")),n.left="0",n.top="0",this.tooltip.innerHTML=t,document.body.appendChild(this.tooltip);var o=this.tooltip.offsetWidth,_=this.tooltip.offsetHeight;document.body.offsetWidth-d-o<0?(n.removeAttribute?n.removeAttribute("left"):n.removeProperty("left"),n.right=document.body.offsetWidth-d+2*(a.config.delta_x||0)+"px"):0>d?n.left=i.x+Math.abs(a.config.delta_x||0)+"px":n.left=d+"px",
+document.body.offsetHeight-s-_<0?(n.removeAttribute?n.removeAttribute("top"):n.removeProperty("top"),n.bottom=document.body.offsetHeight-s-2*(a.config.delta_y||0)+"px"):0>s?n.top=i.y+Math.abs(a.config.delta_y||0)+"px":n.top=s+"px",n.visibility="visible",this.tooltip.onmouseleave=function(e){e=e||window.event;for(var t=scheduler.dhtmlXTooltip,a=e.relatedTarget;a!=scheduler._obj&&a;)a=a.parentNode;a!=scheduler._obj&&t.delay(t.hide,t,[],t.config.timeout_to_hide)},scheduler.callEvent("onTooltipDisplayed",[this.tooltip,this.tooltip.event_id]);
+
+}}},dhtmlXTooltip._clearTimeout=function(){this.tooltip._timeout_id&&window.clearTimeout(this.tooltip._timeout_id)},dhtmlXTooltip.hide=function(){if(this.tooltip.parentNode){var e=this.tooltip.event_id;this.tooltip.event_id=null,this.tooltip.onmouseleave=null,this.tooltip.parentNode.removeChild(this.tooltip),scheduler.callEvent("onAfterTooltip",[e])}this._clearTimeout()},dhtmlXTooltip.delay=function(e,t,a,r){this._clearTimeout(),this.tooltip._timeout_id=setTimeout(function(){var r=e.apply(t,a);return e=t=a=null,
+r},r||this.config.timeout_to_display)},dhtmlXTooltip.isTooltip=function(e){var t=!1;for("dhtmlXTooltip"==e.className.split(" ")[0];e&&!t;)t=e.className==this.tooltip.className,e=e.parentNode;return t},dhtmlXTooltip.position=function(e){if(e=e||window.event,e.pageX||e.pageY)return{x:e.pageX,y:e.pageY};var t=window._isIE&&"BackCompat"!=document.compatMode?document.documentElement:document.body;return{x:e.clientX+t.scrollLeft-t.clientLeft,y:e.clientY+t.scrollTop-t.clientTop}},scheduler.attachEvent("onMouseMove",function(e,t){
+var a=window.event||t,r=a.target||a.srcElement,n=dhtmlXTooltip,i=n.isTooltip(r),l=n.isTooltipTarget&&n.isTooltipTarget(r);if(e||i||l){var d;if(e||n.tooltip.event_id){var s=scheduler.getEvent(e)||scheduler.getEvent(n.tooltip.event_id);if(!s)return;if(n.tooltip.event_id=s.id,d=scheduler.templates.tooltip_text(s.start_date,s.end_date,s),!d)return n.hide()}l&&(d="");var o;if(_isIE){o={pageX:void 0,pageY:void 0,clientX:void 0,clientY:void 0,target:void 0,srcElement:void 0};for(var _ in o)o[_]=a[_]}if(!scheduler.callEvent("onBeforeTooltip",[e])||!d)return;
+
+n.delay(n.show,n,[o||a,d])}else n.delay(n.hide,n,[],n.config.timeout_to_hide)}),scheduler.attachEvent("onBeforeDrag",function(){return dhtmlXTooltip.hide(),!0}),scheduler.attachEvent("onEventDeleted",function(){return dhtmlXTooltip.hide(),!0}),scheduler.templates.tooltip_date_format=scheduler.date.date_to_str("%Y-%m-%d %H:%i"),scheduler.templates.tooltip_text=function(e,t,a){return"<b>Event:</b> "+a.text+"<br/><b>Start date:</b> "+scheduler.templates.tooltip_date_format(e)+"<br/><b>End date:</b> "+scheduler.templates.tooltip_date_format(t);
+
+};
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_tooltip.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.xml
new file mode 100644
index 0000000000..9339e68162
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_tooltip.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_tooltip.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.js
new file mode 100644
index 0000000000..9ac8673f6e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler._get_url_nav=function(){for(var e={},t=(document.location.hash||"").replace("#","").split(","),a=0;a<t.length;a++){var r=t[a].split("=");2==r.length&&(e[r[0]]=r[1])}return e},scheduler.attachEvent("onTemplatesReady",function(){function e(e){n=e,scheduler.getEvent(e)&&scheduler.showEvent(e)}var t=!0,a=scheduler.date.str_to_date("%Y-%m-%d"),r=scheduler.date.date_to_str("%Y-%m-%d"),n=scheduler._get_url_nav().event||null;scheduler.attachEvent("onAfterEventDisplay",function(e){return n=null,
+!0}),scheduler.attachEvent("onBeforeViewChange",function(i,l,d,s){if(t){t=!1;var o=scheduler._get_url_nav();if(o.event)try{if(scheduler.getEvent(o.event))return e(o.event),!1;var _=scheduler.attachEvent("onXLE",function(){e(o.event),scheduler.detachEvent(_)})}catch(c){}if(o.date||o.mode){try{this.setCurrentView(o.date?a(o.date):null,o.mode||null)}catch(c){this.setCurrentView(o.date?a(o.date):null,d)}return!1}}var h=["date="+r(s||l),"mode="+(d||i)];n&&h.push("event="+n);var u="#"+h.join(",");return document.location.hash=u,
+!0})});
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_url.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.xml
new file mode 100644
index 0000000000..197fb57cdf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_url.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_url.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.js
new file mode 100644
index 0000000000..e2322510f1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.js
@@ -0,0 +1,10 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onLightBox",function(){if(this._cover)try{this._cover.style.height=this.expanded?"100%":(document.body.parentNode||document.body).scrollHeight+"px"}catch(e){}}),scheduler.form_blocks.select.set_value=function(e,t,a){("undefined"==typeof t||""===t)&&(t=(e.firstChild.options[0]||{}).value),e.firstChild.value=t||""};
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_wp.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.xml
new file mode 100644
index 0000000000..1bee759143
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_wp.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_wp.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.js
new file mode 100644
index 0000000000..1a987e0005
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.js
@@ -0,0 +1,31 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.year_x=4,scheduler.config.year_y=3,scheduler.xy.year_top=0,scheduler.templates.year_date=function(e){return scheduler.date.date_to_str(scheduler.locale.labels.year_tab+" %Y")(e)},scheduler.templates.year_month=scheduler.date.date_to_str("%F"),scheduler.templates.year_scale_date=scheduler.date.date_to_str("%D"),scheduler.templates.year_tooltip=function(e,t,a){return a.text},function(){var e=function(){return"year"==scheduler._mode};scheduler.dblclick_dhx_month_head=function(t){if(e()){
+var a=t.target||t.srcElement;if(-1!=a.parentNode.className.indexOf("dhx_before")||-1!=a.parentNode.className.indexOf("dhx_after"))return!1;var r=this.templates.xml_date(a.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("date"));r.setDate(parseInt(a.innerHTML,10));var n=this.date.add(r,1,"day");!this.config.readonly&&this.config.dblclick_create&&this.addEventNow(r.valueOf(),n.valueOf(),t)}};var t=scheduler.changeEventId;scheduler.changeEventId=function(){t.apply(this,arguments),
+e()&&this.year_view(!0)};var a=scheduler.render_data,r=scheduler.date.date_to_str("%Y/%m/%d"),n=scheduler.date.str_to_date("%Y/%m/%d");scheduler.render_data=function(t){if(!e())return a.apply(this,arguments);for(var r=0;r<t.length;r++)this._year_render_event(t[r])};var d=scheduler.clear_view;scheduler.clear_view=function(){if(!e())return d.apply(this,arguments);var t=scheduler._year_marked_cells,a=null;for(var r in t)t.hasOwnProperty(r)&&(a=t[r],a.className="dhx_month_head",a.setAttribute("date",""));
+
+scheduler._year_marked_cells={}},scheduler._hideToolTip=function(){this._tooltip&&(this._tooltip.style.display="none",this._tooltip.date=new Date(9999,1,1))},scheduler._showToolTip=function(e,t,a,r){if(this._tooltip){if(this._tooltip.date.valueOf()==e.valueOf())return;this._tooltip.innerHTML=""}else{var n=this._tooltip=document.createElement("DIV");n.className="dhx_year_tooltip",document.body.appendChild(n),n.onclick=scheduler._click.dhx_cal_data}for(var d=this.getEvents(e,this.date.add(e,1,"day")),l="",i=0;i<d.length;i++){
+var s=d[i];if(this.filter_event(s.id,s)){var o=s.color?"background:"+s.color+";":"",_=s.textColor?"color:"+s.textColor+";":"";l+="<div class='dhx_tooltip_line' style='"+o+_+"' event_id='"+d[i].id+"'>",l+="<div class='dhx_tooltip_date' style='"+o+_+"'>"+(d[i]._timed?this.templates.event_date(d[i].start_date):"")+"</div>",l+="<div class='dhx_event_icon icon_details'>&nbsp;</div>",l+=this.templates.year_tooltip(d[i].start_date,d[i].end_date,d[i])+"</div>"}}this._tooltip.style.display="",this._tooltip.style.top="0px",
+document.body.offsetWidth-t.left-this._tooltip.offsetWidth<0?this._tooltip.style.left=t.left-this._tooltip.offsetWidth+"px":this._tooltip.style.left=t.left+r.offsetWidth+"px",this._tooltip.date=e,this._tooltip.innerHTML=l,document.body.offsetHeight-t.top-this._tooltip.offsetHeight<0?this._tooltip.style.top=t.top-this._tooltip.offsetHeight+r.offsetHeight+"px":this._tooltip.style.top=t.top+"px"},scheduler._year_view_tooltip_handler=function(t){if(e()){var t=t||event,a=t.target||t.srcElement;"a"==a.tagName.toLowerCase()&&(a=a.parentNode),
+-1!=(a.className||"").indexOf("dhx_year_event")?scheduler._showToolTip(n(a.getAttribute("date")),getOffset(a),t,a):scheduler._hideToolTip()}},scheduler._init_year_tooltip=function(){scheduler._detachDomEvent(scheduler._els.dhx_cal_data[0],"mouseover",scheduler._year_view_tooltip_handler),dhtmlxEvent(scheduler._els.dhx_cal_data[0],"mouseover",scheduler._year_view_tooltip_handler)},scheduler.attachEvent("onSchedulerResize",function(){return e()?(this.year_view(!0),!1):!0}),scheduler._get_year_cell=function(e){
+var t=e.getMonth()+12*(e.getFullYear()-this._min_date.getFullYear())-this.week_starts._month,a=this._els.dhx_cal_data[0].childNodes[t],e=this.week_starts[t]+e.getDate()-1;return a.childNodes[2].firstChild.rows[Math.floor(e/7)].cells[e%7].firstChild},scheduler._year_marked_cells={},scheduler._mark_year_date=function(e,t){var a=r(e),n=this._get_year_cell(e),d=this.templates.event_class(t.start_date,t.end_date,t);scheduler._year_marked_cells[a]||(n.className="dhx_month_head dhx_year_event",n.setAttribute("date",a),
+scheduler._year_marked_cells[a]=n),n.className+=d?" "+d:""},scheduler._unmark_year_date=function(e){this._get_year_cell(e).className="dhx_month_head"},scheduler._year_render_event=function(e){var t=e.start_date;for(t=t.valueOf()<this._min_date.valueOf()?this._min_date:this.date.date_part(new Date(t));t<e.end_date;)if(this._mark_year_date(t,e),t=this.date.add(t,1,"day"),t.valueOf()>=this._max_date.valueOf())return},scheduler.year_view=function(e){var t;if(e&&(t=scheduler.xy.scale_height,scheduler.xy.scale_height=-1),
+scheduler._els.dhx_cal_header[0].style.display=e?"none":"",scheduler.set_sizes(),e&&(scheduler.xy.scale_height=t),scheduler._table_view=e,!this._load_mode||!this._load())if(e){if(scheduler._init_year_tooltip(),scheduler._reset_year_scale(),scheduler._load_mode&&scheduler._load())return void(scheduler._render_wait=!0);scheduler.render_view_data()}else scheduler._hideToolTip()},scheduler._reset_year_scale=function(){this._cols=[],this._colsS={};var e=[],t=this._els.dhx_cal_data[0],a=this.config;t.scrollTop=0,
+t.innerHTML="";var r=Math.floor(parseInt(t.style.width)/a.year_x),n=Math.floor((parseInt(t.style.height)-scheduler.xy.year_top)/a.year_y);190>n&&(n=190,r=Math.floor((parseInt(t.style.width)-scheduler.xy.scroll_width)/a.year_x));for(var d=r-11,l=0,i=document.createElement("div"),s=this.date.week_start(scheduler._currentDate()),o=0;7>o;o++)this._cols[o]=Math.floor(d/(7-o)),this._render_x_header(o,l,s,i),s=this.date.add(s,1,"day"),d-=this._cols[o],l+=this._cols[o];i.lastChild.className+=" dhx_scale_bar_last";
+
+for(var _=this.date[this._mode+"_start"](this.date.copy(this._date)),c=_,h=null,o=0;o<a.year_y;o++)for(var u=0;u<a.year_x;u++){h=document.createElement("DIV"),h.style.cssText="position:absolute;",h.setAttribute("date",this.templates.xml_format(_)),h.innerHTML="<div class='dhx_year_month'></div><div class='dhx_year_week'>"+i.innerHTML+"</div><div class='dhx_year_body'></div>",h.childNodes[0].innerHTML=this.templates.year_month(_);for(var p=this.date.week_start(_),v=this._reset_month_scale(h.childNodes[2],_,p),m=h.childNodes[2].firstChild.rows,g=m.length;6>g;g++){
+m[0].parentNode.appendChild(m[0].cloneNode(!0));for(var f=0,y=m[g].childNodes.length;y>f;f++)m[g].childNodes[f].className="dhx_after",m[g].childNodes[f].firstChild.innerHTML=scheduler.templates.month_day(v),v=scheduler.date.add(v,1,"day")}t.appendChild(h),h.childNodes[1].style.height=h.childNodes[1].childNodes[0].offsetHeight+"px";var b=Math.round((n-190)/2);h.style.marginTop=b+"px",this.set_xy(h,r-10,n-b-10,r*u+5,n*o+5+scheduler.xy.year_top),e[o*a.year_x+u]=(_.getDay()-(this.config.start_on_monday?1:0)+7)%7,
+_=this.date.add(_,1,"month")}this._els.dhx_cal_date[0].innerHTML=this.templates[this._mode+"_date"](c,_,this._mode),this.week_starts=e,e._month=c.getMonth(),this._min_date=c,this._max_date=_};var l=scheduler.getActionData;scheduler.getActionData=function(t){if(!e())return l.apply(scheduler,arguments);var a=t?t.target:event.srcElement,r=scheduler._get_year_month_date(a),n=scheduler._get_year_month_cell(a),d=scheduler._get_year_day_indexes(n);return d&&r?(r=scheduler.date.add(r,d.week,"week"),r=scheduler.date.add(r,d.day,"day")):r=null,
+{date:r,section:null}},scheduler._get_year_day_indexes=function(e){var t=scheduler._get_year_el_node(e,this._locate_year_month_table);if(!t)return null;for(var a=0,r=0,a=0,n=t.rows.length;n>a;a++){for(var d=t.rows[a].getElementsByTagName("td"),r=0,l=d.length;l>r&&d[r]!=e;r++);if(l>r)break}return n>a?{day:r,week:a}:null},scheduler._get_year_month_date=function(e){var e=scheduler._get_year_el_node(e,scheduler._locate_year_month_root);if(!e)return null;var t=e.getAttribute("date");return t?scheduler.date.week_start(scheduler.templates.xml_date(t)):null;
+
+},scheduler._locate_year_month_day=function(e){return e.className&&-1!=e.className.indexOf("dhx_year_event")&&e.hasAttribute&&e.hasAttribute("date")};var i=scheduler._locate_event;scheduler._locate_event=function(e){var t=i.apply(scheduler,arguments);if(!t){var a=scheduler._get_year_el_node(e,scheduler._locate_year_month_day);if(!a||!a.hasAttribute("date"))return null;var r=scheduler.templates.xml_date(a.getAttribute("date")),n=scheduler.getEvents(r,scheduler.date.add(r,1,"day"));if(!n.length)return null;
+
+t=n[0].id}return t},scheduler._locate_year_month_cell=function(e){return"td"==e.nodeName.toLowerCase()},scheduler._locate_year_month_table=function(e){return"table"==e.nodeName.toLowerCase()},scheduler._locate_year_month_root=function(e){return e.hasAttribute&&e.hasAttribute("date")},scheduler._get_year_month_cell=function(e){return this._get_year_el_node(e,this._locate_year_month_cell)},scheduler._get_year_month_table=function(e){return this._get_year_el_node(e,this._locate_year_month_table)},scheduler._get_year_month_root=function(e){
+return this._get_year_el_node(this._get_year_month_table(e),this._locate_year_month_root)},scheduler._get_year_el_node=function(e,t){for(;e&&!t(e);)e=e.parentNode;return e}}();
+//# sourceMappingURL=../sources/ext/dhtmlxscheduler_year_view.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.xml
new file mode 100644
index 0000000000..4870d48ae3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/ext/dhtmlxscheduler_year_view.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_year_view.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs.xml
new file mode 100644
index 0000000000..fd5e540d23
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>imgs</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/but_repeat.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/but_repeat.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dd6595e5d9ef43bd03c486ff87079f398267e085
GIT binary patch
literal 1149
zcmZ?wbhEHblw#0e_|Cu(?klqTfBEy<Gmh>oYklCmVoqenVS|Pe!)>e59cFWsU9>AW
zZP8U{y<th>yh;8RlNr303RUE2#_d#_^)>0%x$Xs10t-?UO*$CP9jc$w;rijn>#HZ*
ziuOA9HrlOUoN#1EY26vWko7W`kGGuIQyH^LXXo0ihgT<^dANV+jn?#K4u`fCUwwP*
z-M5!ZXNH}5yl>s2_-m)ym(2>l`}us|%dq{M3y$q7@2<B=*sW1@)O*$4?wN<{4{Rws
zxV5O|zR$*`Nf(YZo;_Gsc*b(yru;|OCa;_ub^iImwF~1;@2|<+YTf%HbViToqQ6<8
z8)RqP&6{$(WcB=*OUIh0cDhwwaa{N(bMm|B^Un^>KifR>Y}Mw6)3c8m-~M#w=7-a1
z2lYB02kd$=@8hpG|NsAI7zM*O1QdU=FfuSCFzA512+9-e9RC>(a>#gWSa7hJLs%<@
z!>y62jYpg%f??u==`spD872Y>4UJt1VGkBu+W4e}lTpRt$^pd#JWK}3LKB3T9*Ht>
z<ry>{5N>MH5zv}sFyVmL)JDz@z9|n~A2ze=aoMTfc#?RCTa!a?fk(jUuvRNSo+m#7
zABgF&Eo)ezv2bzAcA+K}&I`<}M+6xCroGv*gqxjLp!QVD$^#6OloTdwc^t4{<W$#j
z;Ho+Bv@xYcTrcL{nVp-TpBE5RVBlTW*uXYDk>g{)f>K6CCawk>Cl{7Cw?#BK3K$BV
zSs5kRIOOdXxUhBTvni|)Xl*QJ<Ctf#;>N-QjLPzCavSUfPI0sfDy@jpkeH{?dy!N3
zhQbX7(}VJFMYr8B{IE5rQKCY`;NikW%s2R0UNrDKaC~s&6i8KY$lHF<><EWw4ufFH
n5zcl8Mz1Rjm&!O~9z0~c+F20EV(8*9i&bpGvLshVMh0sDtjjMu

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/but_repeat.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/but_repeat.gif.xml
new file mode 100644
index 0000000000..1d4dec453f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/but_repeat.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>but_repeat.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>40</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>26</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/buttons.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/buttons.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..5036c9c2efbe7042ca1869f5d96b55fa90e55d57
GIT binary patch
literal 281
zcmeAS@N?(olHy`uVBq!ia0vp^T|g|z!2~3GT^4T!Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS>JigtUtIEGZ*O0p^W+OP88oo!XqbNQbS-z-f1@qkev-{|6@
z_5$PfIS-rJ9cqprG2mh|l<1w8C}OLacyUVsOK*>C<VEMp4l=!pU5ncJ4w_3jr?~Oo
zWy&*Y^XQYaV!xTeGf~VoJ4|=!^5z#gcMCM`ybw!ST<Dy3xq*+-T*_R;bWNsI&Empl
zQG<JRpQedDb8`EVVWQ&}e3+e|p{lqfAbp2O-r@v?MeLQoT6VSaGrziXW`aRYz|<TE
cA%z1BE7v&%vP*og0D6PL)78&qol`;+0LfBk{{R30

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/buttons.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/buttons.png.xml
new file mode 100644
index 0000000000..7113b1911e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/buttons.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>buttons.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>17</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>138</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/calendar.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/calendar.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..67257083540f7ea06881718da65d749f7284e165
GIT binary patch
literal 622
zcmZ?wbhEHb6k-r!c*ek>prLT)%o*dfGgj$`HW)Az6cjY9_^@!{!iEJG{{Q%I;E^z4
z!G;SD{sW1G2@e`(9Qfam@FBrq!iozH0SOHY9(?%lzo28ogbn{4Djqzr5a{jgov`A=
zh65M&@85s>_U->O8UiXVBt#?>EcoD1aG_wvg9k7EH#9UXSaD#%jt2)U1ZK{h8PM>c
zVZn$0|NmdSa?Qab;lPOt4J-aPEI9Dt$A5={2S5dnpFCc$;lTAP*C%YaV3lz(dCI*9
z4g$qf)-Kp_;lhmv7j9e#Xt<D;mIgF|VF&`npDe5*49*NXAh(0!gn|8ZgL6}JOKV$u
zM-ziyH-j95ECVBh8H0sZ6T7a|Y+bc^x~#g2iyfMzrP)M8R8;u*v>g?cw=gYN-LX^L
zkc~}ezmnDRmHU*|uGiL<kT79xveVV&xOn-}6=PAZ^B4K=+~G9l7qu5|;<e-#<9PX6
zUO>?1^(|-fE8lblbd4od4L*O>-Nnixo_MTBMAhPt^YXsC%yN=J0u$6<xR`KW*HSpp
z+R%8Y>;9q86(1O;^YnlA`!OMrv9(1`BVyeag@*_CuyPgcJ8^Pz`Z*T|W<~~U06^u>
AiU0rr

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/calendar.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/calendar.gif.xml
new file mode 100644
index 0000000000..98c0519799
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/calendar.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>calendar.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_big.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_big.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..61f7dc2e5ac32fc064ffb4e231f344df03d07baf
GIT binary patch
literal 1321
zcmeH``!m}I0KmVIhu6+xXQh>06V%F?qh)EkZW3)hs&#ZarWvxNoo;QVXEiO_5K$#2
z#3Qb$#AB(~2ueM&NkRnmh*v}-2#b)=1sRIUu7ARQ-{<$wFQ2=Qf1ux~)A*ynQDB=1
z7>!1;SX|9t2@eksi-{YQYbGWpD%+Ooy0mdgS<1zCJfSY5{B?FQxA1qBY<91EWb?-a
zY8rbwzjh9PJ6SZWBoGLOt+$f#1qQo*dVaraXydP?75Us=W`#mAuhFjQXBQ7zgwj7H
zW17`X{rYA`ei^f}d1T@>wM?E_P*GGfRK%{yd9KW5)d%C^N}J`67;V{XQ8rguRaM1p
z=*(bL)_3$%*i-#7jbe7Os&koL+aZu@c<tgF_e-8PiypDYOL#MMR&8yUYG-$!R?7b+
zw<9r~@w92KZ)iM>m^7wXN@X-Xe8PN?$>z29$mX=EIjrQ&;<*L&i(WN_EhjyG@vvlM
zVrG|C$maLSMy7XEnzc#gZu(Qn+TR;gmL!W=PhrdQN*g*QvP4=#R@q>yX!J>8Wo_F)
zgFwd@_T@dRlT5CZ)^<t;$2B^A`AdcP)mVOwY-nsc@G9|}@8ef=Z!{WBM!7;byixvg
zi9kx-+utXp<VHtFlTv;){Ik_9RV{1Ra5&u3vQ9Lj!rh@sXLM0fQCu!}YkOyVduM&q
zu)Ml{6@OQ)R+qObUX9A@1={c8atLu`MvY9hWCZ@_zZXEgg@6En3Anvi-#-DE839jo
zL;#N?q?lQ{l1T!rrTJ$F1et@xi`>lYoT|sVFFT;WtZ~AVk=f!jOFMXfDCf7J;?tQP
z5%C`}U?5*ByZ}z^p*jFrIHdJ;4H9K?#)<Dz?F)6b1p=V(7+138CDwp72UG^wU2pxl
z(Y3{O+Wp#q08S!-KCzBnpckHraVPu7p2tOo=&=^w=&vq$2Ti%EK15GcCSu@13#8-f
zp`x=UeHIY#xrqDSU>Xs)cZ{N1@4aZ2nl#MPhsy56Hr+^JoodF;gB)*blVN`(U9opG
zg#^RL$<jAd3F}_)lUR<ay)z_*>q+kY!O!_tBK$bY7vcjlyJm!XVe*uEfFDFU_%yX*
zBpYUP0@)s#hIx?ggB9V?0Qis;U5pAiJBn~N^+G`r2k&g>aq$78=Sj?4a6hoO*D{Cv
z^`sPI*MctxtcXOw_a`=p`S@ET5d*XO*gT#5!C_1p3doCqUVxp5`J8S`X!C$rpo6I*
zxI0Y+y%=3Z&#<CALl;`ztkOfHVdn5|o8aS~#fev3R6RDHyn7+0Cd@pHiJQSz9fsiX
zxQ7Fe8OVUY0Skgg@~{`ofdUNFK63SDzqN@+!q}0BeUd4N?svq+$tMOIco}@R@f<un
mtf|K`fzN|DghLv^woKO^I{0LO2L+rQ0xQtgc|#$<7ykkls|DBq

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_big.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_big.gif.xml
new file mode 100644
index 0000000000..de4df86df8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_big.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_big.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_small.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_small.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9120ee7c9d0396ca52402a2df48a9d949df9f637
GIT binary patch
literal 388
zcmZ?wbhEHblxN^)xXQrr`P=^wU;h96_5bas|F1s&|Muhmvv>dh{Q3Xy-~T6X|NCUj
z-+AKAj$^O4oc%v(-P4P=e*FLcf6~g^o6r1jUwo^5;nm*dx0CC)-F@*tt7XTEoe$67
z_;%s`|Hp6s*U!GR{=kbx`@T+Hb}p-J@5KlIx1IZ+(X#u*#rLa^|4XUcG-vJAQ<p#X
zu6)ou`%HQNffd_sPgwJK`PN&9ul>(#*m&j9|EU{aOxyJG*p2@MJ%=AY`_F&_DE?$&
zWMD97&;iMV{KUYv@WAW>k3F_F6aCa5Rf^0Hc(f>KmxF?MaH`;2K1nUfB%f(3CGM?g
zQ?lBT&Gg;T<>He0Gy4<t7kvCKFIn!YEzR1_YTVH-t=;UR!Z2x)+2qM8{mx>HbLMc(
zohvreNymVB`EtG$%mzA(%{BB`HgDnEqNlN5Q-YUm-~N5P5}NDHbrpp;Pn{N0)II8?
euP&@CBcm*=u7AN<Rl$&p%TPh}&NC-R25SI3^T99x

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_small.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_small.gif.xml
new file mode 100644
index 0000000000..1906f358c2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/clock_small.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_small.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/collapse_expand_icon.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/collapse_expand_icon.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..64da9483ea6a8bf40eac57f64afddb28638c1c47
GIT binary patch
literal 452
zcmZ?wbhEHb6k<?exT?kg1YOgX_0L(?Gh@}H`I}?1>SnAsUe&p%Yv$JM$_W8+`K+vL
zQy1@KV`DF<o|s+QHD~pa#hWgy*m-l=wyQIi@1MW!RA6M5h?tbRwo!6!12-?fp_zlM
zf|`w!pSg`2zo4+RoKjG9mYYwcrjBuRa+$kd%%Q7)K(<l|DE?$&WMEKZ&;gkT@)HBw
zLx;%)9y(I}Czcc)%(0r!y->|zZPaRp-Va7Es`fWH{!n_taqfi)L%}l+!<HR2``82w
zoEV(X-~TPyAnhc})!Nq1AkrmU$=cUHL12=As*@P!jG40-MCXcCvM*e;Sa7MJijySA
z>NRT_gf~c5vTfPAO=yP@zY`zB-u?Ry@*U>$I(GcT$y28*)fmoQIDhHFx$tYDF7dZ+
zoj;d(|GrD{<HvUycwfAH#oNH+EZ+W+OTJ6w*@Pdg3X`3sXZ`1ND_ND0H{~F+oDc8D
k3#$~F1UIP7*z9`Ip(Dmwj^V<I!o|lk&Ny*#GBH>K0OuZ-`~Uy|

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/collapse_expand_icon.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/collapse_expand_icon.gif.xml
new file mode 100644
index 0000000000..578adc8b37
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/collapse_expand_icon.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>collapse_expand_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>36</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/controls.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/controls.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9732e2da748c79c35fc5569d09df73dec52d741c
GIT binary patch
literal 2496
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

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/controls.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/controls.gif.xml
new file mode 100644
index 0000000000..2e0d0fc0bc
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/controls.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>controls.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>53</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>105</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bba608beeb418f810c88d2ddb401e4ef7fce025
GIT binary patch
literal 152
zcmeAS@N?(olHy`uVBq!ia0vp^j6kf#!VDxE0(AU=ltF+`i0hkoU;h02BhJtT6kuRz
z0+S#Dq#6buFiw2Suu+J?iGiVRlV6SuP@J>CBeIx*fm;}a85w5HkpK$vdAc};RNP7y
dNKg<H;$;YCVGQ(gxM2b^#?#f$Wt~$(699V29t8jZ

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg.png.xml
new file mode 100644
index 0000000000..2350e8a6f7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>42</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg_now.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg_now.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..510dfd0b17ff3289545d74831b2704fc6d7e3777
GIT binary patch
literal 152
zcmeAS@N?(olHy`uVBq!ia0vp^j6kf#!VDxE0(AU=ltF+`i0hqaU;h02BhJtb6kuRz
z0+S#Dq#6buFiw2Suu+J?iGiUmO!bvHP@J>CBeIx*fm;}a85w5HkpK$vdAc};RNP7y
dNKg<H;$;YCVGQ(gxM2b^#?#f$Wt~$(699CW9s&RW

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg_now.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg_now.png.xml
new file mode 100644
index 0000000000..cc61f49a01
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/databg_now.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg_now.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>42</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_ical.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_ical.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb915ae1e4aeb01aafecd9fbac252e0fc53651bb
GIT binary patch
literal 1323
zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP
zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W}skZsAp(w
zVs37(qhMrUXrOOkq;F`XYiMp|Y-D9%pa2C*K--E^(yW49+@N*=dA3R!B_#z``ugSN
z<$C4Ddih1^`i7R4mLM~XjC6r2bc-wVN)jt{^NN*WCb*;)Cl_TFlw{`TDS%8&Ov*1U
zu~h=P6yk;40=Thx#n4~^2AF<DVu8M)o&m^9FonLp_?717!c`ZS1f?R}i`C%bkjjEo
z{h-w1{L-RiV8o><gRCmBaxO|uEXgkl$<NP$g<?QPeo20DMt*^UbFisGcxGNoet9ui
zwXd(0XI^nhVqS8pr;Du;P`_SgW{Q=usj;(#rIV$pp{1*#p{t>zvy+jNft#^`qos?h
zv8xkIuS<S%X>Mv>2~2MaLa!rEy`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@<)X&zK>
z3U0Sp;MA)Rbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWpst*KV(#K6F~(9^{+q~g|`
z;Pc*0jv{qC7Ylh@;CGzRq0sq4|6@>W%n2)%xt~K6L|ujMy?S8#MPTl$TV-6o<eLPd
z6c5E*`m{-9(z!49Zme4@x})~P+3L@ae^=zUNm}mT%g=Ctv4~lcHGhRd_X(ZD4>Rnn
zCPvPf*K$$e^OH+CTNm@6&#zv3YWK6lKc7816Efe^YVX(O5qFh&Gfy^OdC2g&QGlsu
zsc1r-{R`{c1=C}u?`%uyDJ|~#^-5}r(e4MAO=ei1W6C_~+?S$s((;2J`z-b42Q=Ne
z=IpjC`txa3`M=pLnJ(?GzDgCuJn36_=-|%HYNisLK5H|6KD%`}HGH-HU(uDSRR`Cv
zwN$m*pu;WH*>Wa$rO1)Tg(qw5-p>mx&C6E!<s0I-Fkph=^wW*&UVC|d@XqcERuP)G
zC_v-MI>|Q1jS)WYzSgv5<O-y?tX&yU>KwZ*_qNe0(SH{nE*I@}bDnZ~*$1vm6Q<eR
zxyJJU_~*rLwOgZJZx&wGZG6`KeA<eo0m_SwKVLm}rtP@GjlT_tXK%4wFzu3(q^#Xl
pd!`dAd-oh~(s{yK^xwOIk)dx#_?kl3(1W1j%hT1*Wt~$(6966(=kEXj

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_ical.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_ical.png.xml
new file mode 100644
index 0000000000..2a13d44797
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_ical.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_ical.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_pdf.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_pdf.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b9d81f04429402e16f95a7e52854f536821f94a
GIT binary patch
literal 1395
zcmaJ>ZA=?=96qd8hh+jIqYQydAw%NYyS~x&pkV2h(TxJqW?-VE*WMK_aCh~3(88v$
zv7p<sp>AYMF{ltXMIF9;SVkh10RusXnFN_LgGsXKV%o$RNPyNWqs$NDC3pXqJkRrc
zdveFiO7_J>?}`QhAjVXLmh)?T_<c&qe-BQbuHcs>&REG=7$@h!SOU=FjGX{Y6jn`?
z6Byq3>Nt@L00NM-R&tf*V#L8vGAxXdc_|mq27ugruM2b35*%nJs!3WW@ed42KoZwU
zD%57!>@pBFWKk1KSei<#j;30N7MJAbfw^9U7oZ3Z1HDuo?MA#h$+|AW@59%S1YC!3
zwK~beq$<s2pn+itP%VR{4mcYIv*j|mQl-&o_J9gl4nwd4k}ITg4Wd*aFbr-y5<VJ>
zJCSm<a3dCf(n)GK&V@jb$K#QClrn~`hU8kUHmspgNO^?R-AHqoS4z9nBMK<tcCe(2
zBN-YDD`Ix0p3_PAOdpm&xi)2K_ePuehCyD;1<7S_xTFZsZ2o^JMQx(pTsiS5-~SYL
zTN_;jR8F{=de*@Y&Y2z#<w6WBfpH9LWth517t3lGj&av8F3@06gB2u=GamOk+H6Kl
zw41|d2Vp{W5}q$3NgPq@RSLZdR;!HaLb==s7Zjj-jRv_wtJE6{_M&Kni!zRSilDg&
z7k|Xf-jW+O0_EZ(qXbJf5O^WWP~dvO2)T7G$}ROaxcJt&sJ7%nd@@jYtp6Hw<cjxB
zc)Mv@{;+9#g66%>@}}-PAbbV@qJB4_daL)Q{pGLx(a8dVAtg2w_);Yx=d)rV;Lh%y
z;Exw&>DCXko*(j!OclJ7b^G<;+usJ4&42%p>F+$>vWipMIAKY)vn><~^~_&;Vn)>d
zS06l#iF=>yO~i#`+dit>Q*7HN@_j!P_~oW(;Ms(h2S+D?Gnead9JkMReVuS2SJVnr
zwFbv0VEAxw|5^R~^xBd??O=6ljD1+zE~>Q2hJ>A^U4-pQ(+)=b9k654cyD>`ZmDSU
zy#~c<*W5^8H<;SDOFUW|d*f5HsJVV7DX5)OtahApdS9`goCQCtI<&NsD6m{hXba_>
zQ^IR&6TayiK3~oK>w&496AOc%Ytgu(TSJ}tvGMJtwoA9h0;MmVK7#$$ARN{B#p1lz
zu;sLc>%I@3oAC8>DOW>17sTSjI<fd;$i95n*7~clJ2jtJ&aclCSj<s^?l+Xqi&qT8
zc`3+tHp=;+c`ekwz+_J6XlNxoatsb!*4{bQked8v;){<Z<A3<O_6rMBV%nOS+sZ)i
zXl(JZpW_$rcMpb61P8eH7eYPNqSfTYxDMJjKbzKnvZ__|?xCfb+352|OOki7w@9&=
zIsMkkrNJYePro3X$!}UY^=F*mK*H6IiujD3bx?~pDRvfkTnv2k$=Qs189()he}g7t
K3Hn8W?dU&oe*W+P

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_pdf.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_pdf.png.xml
new file mode 100644
index 0000000000..98a5f50497
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/export_pdf.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_pdf.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/icon.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/icon.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..31d6626cdd40848c6d900eeb8e8d4057f6dfd553
GIT binary patch
literal 230
zcmV<C02%*@P)<h;3K|Lk000e1NJLTq000jF000dL0ssI2`Fx`m00023Nkl<Zc-pm)
zp$Y;)7=-6w<q)}Nu-PmItKeJs1{T3=mU{+$0gYCh3WiGtgNRMIY%m?m?u=oBrgMW%
z`{84l|4VkotvHv@N&rLwkO+XD004-Tlr=Tzcg+4&rfDN<;cK>si?L4DSwy6=Gyw9+
zFovGaHzsTy&(`(mA|C-TpGSSX^ClSheK+Y%@EY4KGI}?S^dBdHlI7}ny*~iZxu7XL
g^hQK^3Fvj(FC=_u*5-+h;{X5v07*qoM6N<$f}pKl{{R30

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/icon.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/icon.png.xml
new file mode 100644
index 0000000000..b0ec30a4c3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/icon.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>icon.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>13</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/images.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/images.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..8faac6388962a9ee0336f0691d5a018bfe9d248c
GIT binary patch
literal 1581
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
JvhI|B^8YD#0ha&(

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/images.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/images.png.xml
new file mode 100644
index 0000000000..3bd6a487f5
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/images.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>images.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>119</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>14</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/loading.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/loading.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f5e71df6aa432e63b71dc708a929027822689ba0
GIT binary patch
literal 3951
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

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/loading.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/loading.gif.xml
new file mode 100644
index 0000000000..a1b76e6a9c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/loading.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>loading.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>128</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/resize_dots.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/resize_dots.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..44045c21c351a2d81e2bc803b70fcb2066ea8efb
GIT binary patch
literal 111
zcmeAS@N?(olHy`uVBq!ia0vp^EI`c6!3HF^d|7u4NO2Z;L>4nJ@ErkR#;MwT(m+8)
zPZ!6Kid)Gk5B$%hI57F}0Kxx!1K<Dk&6!p)43Z2C%Ntnt`<dP`1}bLoboFyt=akR{
E07a}E761SM

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/resize_dots.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/resize_dots.png.xml
new file mode 100644
index 0000000000..99aca00819
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs/resize_dots.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>resize_dots.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace.xml
new file mode 100644
index 0000000000..21342c1465
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>imgs_dhx_terrace</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_left.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_left.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..133dabca7450267803e0817be54d5727d185764f
GIT binary patch
literal 198
zcmeAS@N?(olHy`uVBq!ia0vp^+(693!3HF^taP6Tq&N#aB8wRq_>O=u<5X=vX`o<*
zr;B5V#`)wQ|Nq-F+wrixad^XhWKWC8EJH)XE6j!b6LcHAC)xx!3VI0gBx|s78W<b9
zC~F@I;9*&#qr>yg;b2(~*Tb&H0|F;j9$d=dYN)N<%y_YD;+%&}A~~unBu+N}VX^J#
sv$T|a(lDvgMN>^PXoJgkc8y((KiW1%)Jc}@1iFF2)78&qol`;+0N%Vk`Tzg`

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_left.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_left.png.xml
new file mode 100644
index 0000000000..f7bd0c3da4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_left.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>arrow_left.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>12</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>11</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_right.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_right.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..ced03e5e4edb66c023aa752da9f47d870b4e52a9
GIT binary patch
literal 189
zcmeAS@N?(olHy`uVBq!ia0vp^+(693!3HF^taP6Tq&N#aB8wRq_>O=u<5X=vX`o=f
zr;B5V#`)xggoFpIN&E_F|NsBDXSU;EV)F6fv2}>yPnj*aTB4`%kBy%no8=;r!v@C2
z&L#nU^EHkJ+&OjV&;zEB!(Kf}66+FEQw<cN3<KsWDjt37kiJ8>gzZW*Q;SUmi^$~V
jUP~Gl-JU+<1sg*O$Hs_?XyY3|s~J39{an^LB{Ts5*oQlp

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_right.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_right.png.xml
new file mode 100644
index 0000000000..9012ee6bd9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/arrow_right.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>arrow_right.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>12</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>11</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/but_repeat.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/but_repeat.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..93066671bd916122294b9bafd3fb0fa062eeca5a
GIT binary patch
literal 1472
zcmZ?wbhEHblw#0exT?tT^XJcv8#k_Ay?V*wMK`WrTeWiewk?~E9zOKx)2Ep;XRKel
zX4b4(`}glXa^&!vH*YqsU$<}HzUR-Lo<4p0@}-OS?%n(K>({(_^S*xlx@^hfqeqYK
z+q37^t()`b&wKm!?Y+Bqr%#{0asAr=|Nk@43@HBRj_?goa7ipl1kyJ46$OdO*{LN8
zNvY|XdA3ULckfqH$V{<S3ODsN@GWpo&B*kqDoPEm@(W3>%1*XSQL?vFu&J=B$SufC
zElE_U$j!+swyLmIN=(U5O0@#ALBje<3ScEA*|tiKAPEJKozD41sS2ig2D-@xW(Epo
zhI)p^Cg$emItoSxh6efuM*4<Ex`yUf#zs~K1`1H11hlOvCCw_x#SLl~kY}ruQBqQ1
zrLSLJUanVete0Puu5V~*X$dmJ$VeBcLbtdwuOzWTH?LS3W`av<adJ^+K}lwQo&w0k
z#H9Sv5?dvpOCes!Er1)FSF8v2j$U$pu6{*gfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym
z)!^cg%7Rq=pw#00(xT*4pmJr9RRvbgMX8A;`9&f5`8lvq49LhY$uG{xFHmp}HdP4E
z%uC5HF9xgj^|kWMD=taQOHTE4u~h=<*UQXIu`)9<b8>YxcX2i_H!?JIHFPw!FmrJ<
zGIldIH+D5KHiPMP$xklLP0cHT=}kfCb;YR{ln`<YfHu3N7G;*DrnnX5=PH0bY?X=I
zElxPigX&Ge?G|U8di8;h(Fa8<QZ&PafN2NBgeO`c2cGOx^MGl+2$-lD|Nr~@=l8Fl
zKfZta`sMSdk00K@d;8|~tCuf;x%bKAM-Ly|zjyb}?OQj2dH(7ZU|zm({@mF!r%#<c
zas1fPBZm(iJg|S?-aWf_?cA|_+tw|cH*MUoe%;zNt5>aDv3%K5U{SGf!Tfo1=ggip
zbH?;(Q>RRxG;u<IUvE!$S7%3iTWd>mQ)5GYU2RQuRb@qaS!qdeQDH%TUT#iyR%S+e
zT53viQer}UTx?8qRAfYWSZGLaP+)++pRbR%m#2rjo2!enlcR&Zovn?vm8FHbnW>4f
z5impP>FQ`}X=<pesj4U|DJsaz$;wDeNlJ)|iHZmd2@3G@@$ztUadNP;v9d5TF)}bH
z{$v4>3_75)2UOZIupK@yp}<2&s{h22qLV&MO!HTmNHLf=H@Yw$d0Qmudt|wTfzXcY
ztQ?jR@x2U=Q?x6@W%<`VJaopPPnt_X&__gGLe8C6*oQ+*MuAPX%!P@&NkJ-XigSj0
zV7R<OstbeAqHx9-=3seFX7+Ffp13%6(K$PJ?cTF@-(LT<L7^+7w#Fv(CNFVG&-2O3
zIX|bcSfO-hMOBS=T|-lgcUwnSk9XgMNxP=an6-PJ+XCN3XPlO;@Li>_CV2fu-_3o6
PJHM`8a8SvSfx#L8Aj1`Q

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/but_repeat.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/but_repeat.gif.xml
new file mode 100644
index 0000000000..1d4dec453f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/but_repeat.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>but_repeat.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>40</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>26</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/calendar.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/calendar.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8c12c947abc061840e77609603b73982074582c7
GIT binary patch
literal 1018
zcmZ?wbhEHb6lV}+_|Cx4)7A6m-=8J(=B!z@X34T8b7sw%GO1_Dq9tqAty!{Y&YERQ
zrc9c$W!)NvQ7{?;!!ZODf3kqRr2`^Cd4iqeI)k``0EdD@11pmtA4|Z81x^esYytua
z2NoP*6ju-95eQUfX5(NJ(QtUM*pr3FWfIFthl5O06qFauIcfBSVHS(n29uMUm-|oW
z5Rov^D9H$1<ZP)I5TKBGd7(eA8}EZlsh3#8H}jpH8NAwYjq^dF*eHg?MwV3ZIljBE
zt!bLWETm#<uzg+NCcn>4zON=7IJQ2H|5NM*)0~8jUNdL8?w+BWyp=2F*w*X`?*dM<
z6&qdEo@#t`X@@iWGp$=2UT*BVx=41%w69qwESrToY#zM5eQUGmgF5LFM+XLL02DBF
A$N&HU

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/calendar.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/calendar.gif.xml
new file mode 100644
index 0000000000..b50815b173
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/calendar.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>calendar.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>21</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>23</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_big.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_big.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..26b331cf05e6419f9cb1bec5a6dc77ea833490d1
GIT binary patch
literal 1958
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
BRLKAU

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_big.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_big.gif.xml
new file mode 100644
index 0000000000..de4df86df8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_big.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_big.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_small.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_small.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9646dab0d163279a6702e2c2a2654315d7f2eb27
GIT binary patch
literal 588
zcmZ?wbhEHblxN^)c*el+_wV1ibLYN#^=jtKnHx85{PpYCg9i`JpFe;7`t^ki7k>Eg
z;n>k53l=PR_U!4)moFbbe*Ev>zcZ&#&!0DM^{SPRA3ys2`}f0#5C8o6bMoZL*|TOn
zdGh%E`*&y0o?W|U^_I<>pFe*#efsn(moMMBb9?jV&2#3=UbAM+jqBI%-@pI!=g*Dn
z*B&}};N81-mo8meylBy;4eNm5#PMU-uU%WQV#V_1%lGfyvv~31bLY<8x^?TxlP9}&
z?b^C!)4H{5jvhVy<;$0^U%%eGaee*zb?eu!-?44$qeqYK+_`h>*3C^D)?d7E9;pAs
z@#D8{-n@P5*5ykVXV0F!XV=avSFZg3|DRzn0mYvzj0_Bc3_2i3f#QULePu&nQ*%q8
zsF@?Pf~tf@YyX56K4X1XZD|oLYv+k`oB5gj0|Jy52k^R?&zs1~Be;xlS%8<G?dpDZ
zBZdu|0xaFPx3Va1+PF#G>R<~e?=m(XzD-<0r<zUWms!Xf2rT20yxPQKzlnjH`)&Z6
z$HPE&r`^jKY@`+|d%k5A_Sw6PgW2wuYvqJPF7`^k(>O#_4s^1MF|jBpOgM1pkfV6g
Sg$zd~j&>$-XD%)l25SK4FZx~p

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_small.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_small.gif.xml
new file mode 100644
index 0000000000..1906f358c2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/clock_small.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_small.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/close_icon.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/close_icon.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..4aa5d6620e493055c369385ec5cbd774f2bb9150
GIT binary patch
literal 162
zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{!3Opi<85sDEfH31!Z9ZwBV2G!S
zV~E7%<RAb4+cOJzFdDLV@E%sM^N=}}HX$h~DTDEm%?u|2-bc+x7P1{+ty;jvdf|r*
zPllDF(A*PT2R?b^2{;5@;CyuWX@^m#hPmKV>!d@R3@crIZ}u*9^a7gC;OXk;vd$@?
F2>|j&FzEmQ

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/close_icon.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/close_icon.png.xml
new file mode 100644
index 0000000000..5a5de0b034
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/close_icon.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>close_icon.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>9</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>9</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/collapse_expand_icon.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/collapse_expand_icon.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bf64cc8199cee2ae3200dfb506eee46af6184866
GIT binary patch
literal 1192
zcmZ?wbhEHb6k<?en8?I1efso`>(~DO|DS<@LGeF#gl~X?OJYePkhZa}C`e4sPAySL
zN=?tqvsHS(d%u!GW{Ry+xT&v!Z-H}aMy5wqQEG6NUr2IQcCuxPlD(aRO@&oOZb5Ep
zNuokUZcbjYRfVlmVoH8esuhq864qBz04piUwpDTjNhpBqbj~kIRWQ{v&`mZlGf*%y
z)H5_TF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|
zef{$Ca=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>
zCgqow*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L72#g2
z1{a4^7NqJ2r55Lx7A2<wl`Dg+DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esX};W
zUP^v>F<7;)ua#$BaY<rca;m3`trAebUS?*BmARpri>0ZFv$KJ@xuKz}p_7rBv7@7f
zk&%n5v#FV*1x&9?esXDUYF-IUZwf-M3r@YDgpgYRwAm%KD6=dz#jPkmR{`u{t4!Q(
zal~mJRBsAyw>aU{s}FRHJ}6p|q8TOxOgkVZJkbI<@MNEw2Tbclz(mdX|KHy~zkmJw
z@%`J^FP}es{P6zW+c&RYy?pWf+0!SFA3c0<|K8m@w{P9NasArWE0-@_ym0>9*)yk4
zojh^;*wG`04;?(Pf8X9cyLau}v3=XtEt@xO+^~M#+BK_Jtz5Bu+0rG87cE>cf8N|V
zvuDkmF@4(9DU&BnoY3Fb+tc0E+0owC+S1(A*ic_rTT@+CSy5hAT2fq8SdgEWo0FZD
znUS8Bnv$H9m=GTq8xtKB84(^98WJ277~t>c>*MX^>EZ6?>f-F==wNSWYh!I?X<=?=
zYGP~z%usr|I@(&A8tQ7QD#}WV3i5KYGSX6#65?W_BEmv~0{ncuJltHI9PDhYEX+)d
zz>?u73y@@D&;gbb44{&Ofhm4U|H{*E85Yku5R&e+!T-uz+XtnF4PtFqS1F|y9Q#l+
zVR_r*cN4#BJm2}#!Qr4m_-2mU-8~<7c6u3HS@pGR>85SELEm2e4a=Rf^3e)rrwcAD
Wvon(Q@10!mhv#g5#G@QW25SH;i?#Ov

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/collapse_expand_icon.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/collapse_expand_icon.gif.xml
new file mode 100644
index 0000000000..578adc8b37
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/collapse_expand_icon.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>collapse_expand_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>36</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/controls.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/controls.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9a99e21fae845f58cc3519fa806ac82cd3f9e32
GIT binary patch
literal 761
zcmV<V0tWqwP)<h;3K|Lk000e1NJLTq003zK001=z1^@s6Le9mu00009a7bBm000ie
z000ie0hKEb8vp<Tt4TybRCwC$n@>x_Fc^m?f~SHYcoqBxUOjmg3Ijib-$S}F@#fK!
zAP9mWcvKWrybJ~#g?)gXb`=Cc5QUh+JN8<dKTXoL>M!uHc1yE1Pm{jMmX;8r1)2>i
z0g}M~mNdPZGk>2aUA|u}DG}}|v98o2epa%JsQhulLsBF;kn|;AM4#S^>Xzi2+$8B*
zf|{`BH)lsO(UdWvJfUT*NX{jxWVxR1PA`d9Vx5xqSl)pomaG!l_LzO%4lL-J-2}_c
zYDsQ)dljrn-sl{T@)bpl*m=IvF}~lMea{t@`7YUNR(I##CH;Kv*uU!NQN9Po=R^8@
zL|u}gV^rnsQmcp!f-c#$@0WQdwHzv|oFsoip(V{KKGp~t(texvQ-h=|eJIMz3p#C9
z;1EVoXh|QGZ`~j$V}o^hx-u`AsNI~Pb9U`1J(pU|Xh}AL?8D`dl3oiW6$#>!-YlMT
z(*jXv?Al)>o6QKp)#aN8sC9LBDnUF7OfAZd*|lbY!ENsPW7ly~_?BcE3#rFWbp#GN
zK`Sg2?^&Mbsp1B;I)0HYNhr2W16+0Y8CDVx!Dmrik)RWY5IiavAm1y({Msdn662>u
zOUe&s#}vhF5N*%F><&#Y33^VgH*fB)iW!XXlB%8->QD>Z{!c$uBo*C25mo3QH%-)O
z!UQY8?@0iXAPGPcfFwu)kOWDn1V{pq1W5pr03<;YfFuA(kOUwJk^m$DNP;8)NdS`m
ztR$bsU0?x{On<~rO8lL-OkQ9q$!4|0Y~|V`Z9lOU13r0y<I)$E$VXaVleLH?$+Je1
zZC+rIRA#-=EFIJSv7y!3<^?5Nk}0Topw`i))^VeeWSbXgB&nB5swI8WlEN(A(Z2A^
r3k;IVR9aWjJsx`I1sKdi5~zr8yy*BvjK-mc00000NkvXXu0mjf$|X<C

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/controls.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/controls.png.xml
new file mode 100644
index 0000000000..826a9a77a7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/controls.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>controls.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>53</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>105</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b02c11f18a390ab3a66f9a041c8ccff47ac70e6
GIT binary patch
literal 103
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfz!2~3=U0uz96lZ})WHAE+-w_aIoT|+y4HT60
xba4#fxSssu|9^Yttsh@sUoV-F_-<$Ma|ZdXP3xG_{(uZ%@O1TaS?83{1OQo|93}t&

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg.png.xml
new file mode 100644
index 0000000000..7d244ff774
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>44</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg_now.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg_now.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1875140dbd449685e573311c3687f17d914f87d
GIT binary patch
literal 103
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfz!2~3=U0uz96lZ})WHAE+-w_aIoT|+y4HT60
xba4#fxSssuf2AVx){n2*gC#N&-|bZPWq2=KFi9qC`dgqP22WQ%mvv4FO#l;&8T$YL

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg_now.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg_now.png.xml
new file mode 100644
index 0000000000..45db67f1a8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/databg_now.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg_now.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>44</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_ical.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_ical.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca496f5bda3a8f0c2a84c115bedb07c48c562762
GIT binary patch
literal 1793
zcmaJ?c~BE~7+pjJK}3*xA$1!yfQ9UC0)|9V$i-nv<VYbXLPD}Ygk)o~n2=G5R4J&f
zf)qLIfaTB*Xsd{^UKAZcifCaJsMG_*S}d2s05TQ3LDBwEx-+}KW8Qn;`@Y||yV)Va
z09)%7)&Kz51_koMh!Hg1R`ZCb)?gSVhUGY4jE7_KxK64;0k#~AL%|@WGyx4mrSjD6
zO{fn5n1c$D7#9nInKDdCk(w|Ry;4oE0l>#sua?S^P#lay6BH^IY3O1d2~@~gq)0CT
zEKqaNL`9%MgN7S~BAFpc#*mYIKLLI8OhQ13;!;qrOjc=`dKPI~mr2Y`+YkwyhTuso
z(i>A^K?umjG$`mrfjwmKdKg@fP!O6YolbWLsW1XVFcm_m9tfRDqcUL_e0!0IXc~Du
zGmPi|HWsmBkrHuS&4eJGPDjzvD3~SzLKqB&NrOuDAP^qfR244Od#JRlXB2p-R;E#?
zaRsIVO^VVuECpwg2&ZpSP^#a_s<dy*L=+6tOVtoUflVpR00n~ohboot&{{kUeed@_
zg|(toH425HS}a8)BMvTpwJDUE$<?4z9Mgy}EP1AiA&D4{X%jIu$PM=bBNZw+rqfQN
z1p;P}N{dTXGBk+CA`yIwLLp~zI5ZBQM@6V~e=h{#Q#t<rTn58`{d$<erZebXGh7}f
zOHraKe1<E3&!x`FH8p}#O+@CQ8pRG&?ytd=;B>-F#jIWs|5^3ka^<sofoJ7Hgc-<m
ztp7UZnJuDsOw)HwODx{CJ*pylT|+c=T$@WX@vi8Ccx;jWUVo$@(24DsmXvlj)SkBu
zsjXy<l6u=D+n|A_d_PteUGam5{$sJD#(jnTe*LiPz)ud(CEr`*aQarAwA}BZ&qBV-
z_6(&vv5S){hgxoti&ych5Y}jYSK)Zg$d%NQ_#FY8qoe1tjX5RYL%(xeMWXpjrx)5@
zT{&#S{aheu3E^_hB{oa;SFCA0+*HoW3G6IuO>{YDe&R(?fmzYZok>YmO)D0d&5bY{
z8?S%eXO6$j{Q03Tu$7Kwf3)lj-k)wE6MbeDebKtkIZ~3E8pS`d;e!eNA8PO5cJ<sx
zjhj9^`llg$@g>7(fiWsq==nGUNlZS#KJ7}rUb&#3`R%O>y>~pz?H1~-@|OlUEKVTJ
z&uz^<5Zw7|c2`K8JfOJTMd(yW&%JA%KS&X8-kj@Zo<cr6zo*#gP}X(7Y<~S%sbyYb
z@Y&Gw!#`T~aL6Uz&w7xa*yv5W_)kw%ek$?Zee&wAT3ucNxw%+cTHv?^;&k4>_X~JA
zYZJp^xBs!@5f9p)WJTBpyJv~2J#jRm;i!D;^Hx{)<-msSK;b<dsmR^tmC*ZWSw{!A
z=L;tr$CUF6Z=R32nGV}+nFq8S8r40#lxZCIDO`FlMi@`q)0>7g4Y<?L)2G}&FIl#F
zIeU(!7)Wo=S$RBqa6y|}WO2K_OhJ_=tlby7cqG1=E$vxr9un_YWLH``S}5&0eMxzu
zYc%TVji^=e!%fdBdVmXcX_=Z3i@d@qbJq>P$aZHJGFgJ6d&e6a8mN=4t)b%BSZLVz
zTQcnJtv3Lk6E|*Tb(c2ZZ`{VT?K``9xT3nc+NXE{@%_6tG2uNlJ~lR|xyE<kujZUD
zcU@a#y|?u8<yZYl;5Qq07lql?-fn5>etmOYC)9PUtn6`elAopej&IY|t8*sT9CZGB
z2w2Ifsi|4i0FkHq(wm>Ga|R-Kbw;BljYd1PkzD`ydEVg4!0yQ^{u#e|G%7Pce~J3y
z{R)QVM1J_)3<s;Za~_q9jVKLuH6y()_EULhH1^l0T&`G9E5<IledXdBmI3TM*!cMA
z!t{OlgV~}z4<xX6?AEQyFh`4XM&rTXhmKFaC~OIdjkT+-txZSV24ZT?R~S0l+b5pn
zEzEU@5t>02>8ArnNp&5@V|KQya{3Iyx+_OE=A~W`?L=a3zqWz_$q0F{>O%6@rk_#}
LU&uSfk!1V>Q6I!R

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_ical.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_ical.png.xml
new file mode 100644
index 0000000000..ab996afc5b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_ical.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_ical.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_pdf.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_pdf.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebadc7cc73047fb4e91218a3330c4a7b9f95d1dc
GIT binary patch
literal 1667
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP
zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W}skZsAp(w
zVs37(qhMrUXrOOkq;F`XYiMp|Y-D9%pa2C*K--E^(yW49+@N*=dA3R!B_#z``ugSN
z<$C4Ddih1^`i7R4mLM~XjC6r2bc-wVN)jt{^NN*WCb*;)Cl_TFlw{`TDS%8&Ov*1U
zu~h=P6yk;40=Thx#n4~^2AF<DVu8M)o&m^9FonLp_?717!c`ZS1f?R}i`C%bkjjEo
z{h-w1{L-RiV8o><gRCmBaxO|uEXgkl$<NP$g<?QPeo20DMt*^UbFisGcxGNoet9ui
zwXd(0XI^nhVqS8pr;Du;P`_SgW{Q=wvx~E#o0)-;xtpn>p{tRTxs!#9i;<;;fs3nw
zlbH!juS<S%X>Mv>2~2MaLa!lCy`Y4UTL84#CABECEH%ZgC_h&L>|v`+oNh67#c3W?
zZwgMgn7ZNAs}FRHJ}6p|q8TOxOgkVZJkbI<@MNEw2Tbclz(ieqisv>11Jh4W7srr_
zTSvmZGlT<0_Rc)Br1y!l0=KEx?oC+&Em4`F8+LuzymIxfi*qBd%;n|aQWE46<Gy*z
zb@yiO+r7IsHMu(WMBMIWDT&No)tz+axQVY(=l4Bl5^{12(~MrWp5`^4Tz+ov`#awY
zb@cQmr7gd?_|4rnikprHz2SaS`0aXyLbiThrOmwG2NNb(Oj@L|ZNc=@PXp}c^RHdE
zj;~<P*?u=w-Om&I`uMn5n6@<@24<rMR-bRd3I>;M-h5fIGv>eTg{VJ@PubRAT>m0A
z*aaw=kj&NhqsGpeIYdZ)g>BW`teI<GW@XH94`keb`K3wRxqZn`KK%9(zF_coQl?{}
zs8(m?>0JiC3x1hi6-k_>^ngcx$)hJ%_=GHK8m>G^?~Ao|c6j+(@M0H-u3*8By-HD;
z&fY9u=byX8<Tvr15u8!!wvId9RojU>%*X6roi@`Aduw05`O~>JvOk$SGbfhyLfxf*
zd+&6`ZqY8AtQFJv_2u%liUFsevCOEhSfS^(j=@7DDS6rQLjsMDjx7F_ckJ`}=-W@d
z4{hFK{p!&cSLPG@EDT-WPSjTV?B*=Gq_$c^Uh>)Z@RPE#kHpSS+_mQud&lye$NzZ*
zFKlK%kQR6@xb)}j3vBx??{D=};oY*xS5T<nb68$S!#rCfXEBY^pGUPfDkhp9xuo;G
zY;w`Ro*T;+3UASJNS&wmG{(NtGD+se(E`>lJzp3Z+BW@Py`*=SL#fy1;-rIGccg{y
zZ|CLv^Ve{GSN83hzf?ni7rsbY`{Re_+M8@SmAjeSXZ>-RTF&j{aN-2t<n2}^P9ZaP
zf4W_`@zu@L*&Hv_W6yj%f3MrABB0!x!yzZY>{^-3?u`#}a;&X6QbIyS)gN#DVewN!
zCUnK7N47DnyVpdmReG{fr2b6WYj*CZF8oiG%wIh(Q`;0e+w`!}OrAqc&C!hEo2Nf4
zxN+g_iLR+$s$Oc7wf?`Ez9stA+@(uZy_R3z;c$zsXJaFyPQs@B7hNq*ZNJK5z3%z(
oo8`BUJhcA(``GKB`HXA~YvwLBa9$bM3#t}8UHx3vIVCg!0FOV8IsgCw

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_pdf.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_pdf.png.xml
new file mode 100644
index 0000000000..8e1405bad1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/export_pdf.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_pdf.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resize_dots.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resize_dots.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..c26e2a3aaffc7a98b9170f844ba5cea5b69f273e
GIT binary patch
literal 110
zcmeAS@N?(olHy`uVBq!ia0vp^EI`c6!3HF^d|7u4NO2Z;L>4nJ@ErkR#;MwT(m+84
zPZ!6Kid)Gd^S3oJN*Wj%7#Qq1@#X)2rOW^AV;CeE7)~^?EqtOS9|ly*;OXk;vd$@?
F2>@GS9hv|D

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resize_dots.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resize_dots.png.xml
new file mode 100644
index 0000000000..99aca00819
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resize_dots.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>resize_dots.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resizing.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resizing.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..389ca543e0deee26e0d48330289f8e5d22def03a
GIT binary patch
literal 99
zcmeAS@N?(olHy`uVBq!ia0vp^vOvtr!3HFEiaq}cq&N#aB8wRq_>O=u<5X=vX`rB}
tr;B5V#`)wQ_6!Y)3I>NeK55=HWKhj}t?V|{@*hwEgQu&X%Q~loCII>X80r83

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resizing.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resizing.png.xml
new file mode 100644
index 0000000000..6f615ae9ad
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_dhx_terrace/resizing.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>resizing.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>5</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>29</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat.xml
new file mode 100644
index 0000000000..291e61931a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>imgs_flat</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/agenda_bg.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/agenda_bg.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..132be84cf1ac464461be1d77c328094121498c30
GIT binary patch
literal 57
zcmZ?wbhEHbWMnX5n8?8J_3PJf-@g6-|DS<@LGdRGkYr%c0TCd11}3g4{VOHk@-Jpy
I$iQF?04kah8vp<R

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/agenda_bg.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/agenda_bg.gif.xml
new file mode 100644
index 0000000000..098d12a156
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/agenda_bg.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>agenda_bg.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>52</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_left.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_left.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..90755164c27cf7a51129e7ccc666a3ea3c117811
GIT binary patch
literal 1119
zcmaJ=TWHfz7!HcJ>b$X+4aJz@WwIts+Qv1ko9)uNNV}D;-~^Rr$=MdS<YdX2?WW=d
z5k*BG1Qk@o7g4A9>=5q`=fj51i9;ufjDh0R;U0VtPv$y(u!bb(!uNgufByeFM-tT=
z^IU~4f*|swDlv)2dH7p0cQ*bn%0D!MhXNF-L$$CGrDY2cAr&?NQqtunkOZ>Y(e?zC
z5yVVNOVy#ecuY{BPRkC4&gdp)6GT}>#*~#7fXD{Wq!~eKtosf{YHE<$?2mimW+iCW
zsyZ!D+gY7bI$M;0N>!ATWf=hr=m5!NMsGE2Arqt~bp<?kwi$|?grJrn^*gD$c!I2i
z79jn!*R6P1mgISw_4#?8Eg?A%%P}7O@^02A_<4a_Pfk4)j%KNiLQ;%Q#lou~)r^oS
zFibj~rqf;;T1^Za2m~Arj&oy#+wL%soN*g=QC2|&wqj`}(x5>)igE*NM?nf_`uhmF
zIW240Q)R*hV=}VIu(ZcHQWhAG{~xOB(`Xwd!JmBpDQu@YOu!_84cjdRH?FbB31teE
z7LXCNQV_OgtC(np2-?liBr9uqa_wf#P+{6Gp2WxFf@Ii8HWVO<K?*C-nx+cA(l8$l
zmHNElXozJa-qHxiM_HEReZCOq@dvV85i0FEFi@7O{^9y_avdw^CXOruOWO(5s0DR$
z^2magI~Oje-V|5Oor^aom%+&}PGkRSbao57$C*ys7B8la4-D*f3){N<Q;f$~;<+S-
zQkkLM&+g3MA6nMaR`Iz;W?#j6H<WBD@Em^h_~9|>Y!`P#3ZME`#16$)|ICvYk6r5)
zYWl`^e|#~H_I$oD_9i&Ib=OGSl^K`HPj8rA^!i*_iuH&4===xEwxJLE{Q37>dwkz7
z7Pyq7Y~e_3xl6uWUi;`}p{xGH%yonN7UsQ+%v;fYy*IJt_S2hhi_yjzZ3_mj?p-x7
zes$rO!)tal!uw~;&?f!;@mt%f1`D*Vul;k@wf-nud34qGZ#xb?m<3Pvq$Wluu9YOj
bFKg}+!;9CBPPCt2>Rfp#QZ3#H*B|%=2Z48r

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_left.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_left.png.xml
new file mode 100644
index 0000000000..808fc67985
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_left.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>arrow_left.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>17</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>9</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_right.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_right.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..96638feac4bd5df489111457882acd7ec998ba46
GIT binary patch
literal 1114
zcmaJ=NlesG7%m!#;vU>^iM42ygqgN8P;F%-Gt)svEg6T2jEM(J`+x%NtL?)nm>45*
ziyC9%c5scN@gT}cgL^a@6D35A2fcV8C<etP8sh<dMFu@MHf`UM@B9A${r~s&#41)!
z%$c1-5X8i2xfsXeIQ&f=n~ndIr|s;;LmrAGQ6;QFDcJ%<P=(cijOubNhyz(|-t-8R
z5X5LoOC(WJS|cb>_sTBD>*ywC6GTa=W6DYcKx8$j)r<f&aQ!w#YHEP0DwY_@41+qY
zyu|{QEfoo+r9t6Us&oZe;s{tk2S_Fzz0t4*CqND93V7~r(-b)bK@9=wcT!0yMuwpU
z$YQVGqcAK>a-5efD&{!0kn}OEk7n@8dDtSMm=k<U$>E2>(JZw_h>K;zvG6KD)gfdG
zG@VMNyeYpITD3IG^SrC!^La4BV>cT}c07iipH>iotyr3gG-!~nqFfD|P=Laj{yu_k
zj>sDJaG7wyXh$|_*2}m@N&_Y7|4>~YLE9(}{^a{lVLQ=m0y++C*kmcVaW(mFC{qYq
zKt|9?K-ieBVyq4#XxBlL3|DgGk}AzmVahHT!b_46HEbjs3W$mU3M+UuO%?nRU&POZ
zgZ@xikYyu&o?jXkxiXFuBO%6D#HYC;RGM^Ppfp$g!wqHRx>nFl99aaGwi&2p7Sze1
zBMVyQT$W|j8|JE+bKx^`X`Br0HukSZr?;?s-06sI@nXdIz`$;|u&r+q{ZsIj=!%NL
zg!2+TEgc_RJL};m`||SdU$~y8SmCr)9rD`j)?h&^b8Nz@yuw2}vRcQqF>FV&=hE(h
zi^`U+%2S>9299qz`DX5g?)Cc*$7dEEYTIywS@~kdXGWZ|`dr7+Q0I@2%Kn92@$#xU
z3mOmJk#hR#kInl^pLNR5(Dh?qZ<}?py?fuJb!O4sD-C@=T77dLH!hfezV~|nxU8Ek
z+pqD@UgeI;?-|^6q;t+`wHF=jeIA}(u%T_w)ow9+ao>k`Z>a+(-d_}B_aA&qY#lX$
Xi2YoY`($u$zkA!GkqWUrv~l|{@*8+i

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_right.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_right.png.xml
new file mode 100644
index 0000000000..fb69239695
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/arrow_right.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>arrow_right.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>17</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>9</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/but_repeat.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/but_repeat.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..93066671bd916122294b9bafd3fb0fa062eeca5a
GIT binary patch
literal 1472
zcmZ?wbhEHblw#0exT?tT^XJcv8#k_Ay?V*wMK`WrTeWiewk?~E9zOKx)2Ep;XRKel
zX4b4(`}glXa^&!vH*YqsU$<}HzUR-Lo<4p0@}-OS?%n(K>({(_^S*xlx@^hfqeqYK
z+q37^t()`b&wKm!?Y+Bqr%#{0asAr=|Nk@43@HBRj_?goa7ipl1kyJ46$OdO*{LN8
zNvY|XdA3ULckfqH$V{<S3ODsN@GWpo&B*kqDoPEm@(W3>%1*XSQL?vFu&J=B$SufC
zElE_U$j!+swyLmIN=(U5O0@#ALBje<3ScEA*|tiKAPEJKozD41sS2ig2D-@xW(Epo
zhI)p^Cg$emItoSxh6efuM*4<Ex`yUf#zs~K1`1H11hlOvCCw_x#SLl~kY}ruQBqQ1
zrLSLJUanVete0Puu5V~*X$dmJ$VeBcLbtdwuOzWTH?LS3W`av<adJ^+K}lwQo&w0k
z#H9Sv5?dvpOCes!Er1)FSF8v2j$U$pu6{*gfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym
z)!^cg%7Rq=pw#00(xT*4pmJr9RRvbgMX8A;`9&f5`8lvq49LhY$uG{xFHmp}HdP4E
z%uC5HF9xgj^|kWMD=taQOHTE4u~h=<*UQXIu`)9<b8>YxcX2i_H!?JIHFPw!FmrJ<
zGIldIH+D5KHiPMP$xklLP0cHT=}kfCb;YR{ln`<YfHu3N7G;*DrnnX5=PH0bY?X=I
zElxPigX&Ge?G|U8di8;h(Fa8<QZ&PafN2NBgeO`c2cGOx^MGl+2$-lD|Nr~@=l8Fl
zKfZta`sMSdk00K@d;8|~tCuf;x%bKAM-Ly|zjyb}?OQj2dH(7ZU|zm({@mF!r%#<c
zas1fPBZm(iJg|S?-aWf_?cA|_+tw|cH*MUoe%;zNt5>aDv3%K5U{SGf!Tfo1=ggip
zbH?;(Q>RRxG;u<IUvE!$S7%3iTWd>mQ)5GYU2RQuRb@qaS!qdeQDH%TUT#iyR%S+e
zT53viQer}UTx?8qRAfYWSZGLaP+)++pRbR%m#2rjo2!enlcR&Zovn?vm8FHbnW>4f
z5impP>FQ`}X=<pesj4U|DJsaz$;wDeNlJ)|iHZmd2@3G@@$ztUadNP;v9d5TF)}bH
z{$v4>3_75)2UOZIupK@yp}<2&s{h22qLV&MO!HTmNHLf=H@Yw$d0Qmudt|wTfzXcY
ztQ?jR@x2U=Q?x6@W%<`VJaopPPnt_X&__gGLe8C6*oQ+*MuAPX%!P@&NkJ-XigSj0
zV7R<OstbeAqHx9-=3seFX7+Ffp13%6(K$PJ?cTF@-(LT<L7^+7w#Fv(CNFVG&-2O3
zIX|bcSfO-hMOBS=T|-lgcUwnSk9XgMNxP=an6-PJ+XCN3XPlO;@Li>_CV2fu-_3o6
PJHM`8a8SvSfx#L8Aj1`Q

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/but_repeat.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/but_repeat.gif.xml
new file mode 100644
index 0000000000..1d4dec453f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/but_repeat.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>but_repeat.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>40</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>26</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/calendar.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/calendar.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8c12c947abc061840e77609603b73982074582c7
GIT binary patch
literal 1018
zcmZ?wbhEHb6lV}+_|Cx4)7A6m-=8J(=B!z@X34T8b7sw%GO1_Dq9tqAty!{Y&YERQ
zrc9c$W!)NvQ7{?;!!ZODf3kqRr2`^Cd4iqeI)k``0EdD@11pmtA4|Z81x^esYytua
z2NoP*6ju-95eQUfX5(NJ(QtUM*pr3FWfIFthl5O06qFauIcfBSVHS(n29uMUm-|oW
z5Rov^D9H$1<ZP)I5TKBGd7(eA8}EZlsh3#8H}jpH8NAwYjq^dF*eHg?MwV3ZIljBE
zt!bLWETm#<uzg+NCcn>4zON=7IJQ2H|5NM*)0~8jUNdL8?w+BWyp=2F*w*X`?*dM<
z6&qdEo@#t`X@@iWGp$=2UT*BVx=41%w69qwESrToY#zM5eQUGmgF5LFM+XLL02DBF
A$N&HU

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/calendar.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/calendar.gif.xml
new file mode 100644
index 0000000000..b50815b173
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/calendar.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>calendar.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>21</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>23</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..73da3436cd4f4297aecb62ba173be8ec4e09a5a6
GIT binary patch
literal 1290
zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP
zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tteb3LXsBRjre|nk
zYG!7rqhMrUXryldL}t2%CRV0qRz~IuP@n{~ttchUD#*nRY8Q}atCUevQedU8UtV6W
zS8lAAUzDzIXlZE)GQ-G77pOwFxH7LKu|hYmSQ%!5OKNd)QD#9&W`3Rm$i&2?{L&Iz
zC7??oUdSzg8=F@Q4JKfK=~pBc=o{)8fV>1#=<ADLX>KlDb#X~hD#E>34K5C;EJ)Q4
zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y<QHe;7brLfn<;37XXd5kmltb-
z)%*HddFB<DB<3Zjdb-#u0Zq`$%uKN|GBr0gGct8Gc5-txGz3z{ZkEm#hUTV*ZpO~e
zCKfQgF8Rr&xv6<2Fuf@Vy>2-5f|5dR0nlcb)S}F?)D*X({9FaFm#s2!yTuu&c~HG6
zxZUD{Q?EYIG5Vm0MT%&c5HR(CnDAr^<iHbtY927P7Xg#CWA%Fp1_s7DPZ!6Kid##r
zoY!ValsW$KZtmv7J6|8WDLy&w`0z<v_o32m=6{U04xj0iIm=im9(k(rsS5ki%&FX|
z!VkAZ9rG=G_;>C5j^!8E+*}@a*6y>-`SkheY4g;xBEya>H&N^j+_FgQ{EnlF-##Yr
zbxD5BTJwmBH^PNqs4Dit?@RmIX6--ps$kh%>xl<BV{*&4&b#=nYR;=2@rj`p4t$d}
zq>TTWymEaz{c>UF{KP)H{-r1WcYWD^a8t;mj3XviN)J!jtlOw(Jo~8LJg2t3FK*AB
zxFIpNTGjPfzej}eIxU{vF1uTnere{>s%7-{J@&<2OCf`ylCwnS`1;smyM@Zy-!*L5
zBc5@4+kKwh0TVVP_e|gD!};d=>PWQ$mBiUIF6D}ZoD=*Sxk!d9TIgFx?wXdG$(tU2
zFL<A;9^F67;Py)2<Mr>)^7p*le0ti(6idUhE&F?_&HEP!v3*@JaqqT9#h-OsY*&`<
zj6bmYn|>u@;bZyx2FuSYu05Uc(K568spQPde}xhlSl0y^RxG;s3sgFJy85}Sb4q9e
E05d4sD*ylh

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock.png.xml
new file mode 100644
index 0000000000..0f57ba151f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>19</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>19</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_big.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_big.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..26b331cf05e6419f9cb1bec5a6dc77ea833490d1
GIT binary patch
literal 1958
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
BRLKAU

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_big.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_big.gif.xml
new file mode 100644
index 0000000000..de4df86df8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_big.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_big.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_small.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_small.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9646dab0d163279a6702e2c2a2654315d7f2eb27
GIT binary patch
literal 588
zcmZ?wbhEHblxN^)c*el+_wV1ibLYN#^=jtKnHx85{PpYCg9i`JpFe;7`t^ki7k>Eg
z;n>k53l=PR_U!4)moFbbe*Ev>zcZ&#&!0DM^{SPRA3ys2`}f0#5C8o6bMoZL*|TOn
zdGh%E`*&y0o?W|U^_I<>pFe*#efsn(moMMBb9?jV&2#3=UbAM+jqBI%-@pI!=g*Dn
z*B&}};N81-mo8meylBy;4eNm5#PMU-uU%WQV#V_1%lGfyvv~31bLY<8x^?TxlP9}&
z?b^C!)4H{5jvhVy<;$0^U%%eGaee*zb?eu!-?44$qeqYK+_`h>*3C^D)?d7E9;pAs
z@#D8{-n@P5*5ykVXV0F!XV=avSFZg3|DRzn0mYvzj0_Bc3_2i3f#QULePu&nQ*%q8
zsF@?Pf~tf@YyX56K4X1XZD|oLYv+k`oB5gj0|Jy52k^R?&zs1~Be;xlS%8<G?dpDZ
zBZdu|0xaFPx3Va1+PF#G>R<~e?=m(XzD-<0r<zUWms!Xf2rT20yxPQKzlnjH`)&Z6
z$HPE&r`^jKY@`+|d%k5A_Sw6PgW2wuYvqJPF7`^k(>O#_4s^1MF|jBpOgM1pkfV6g
Sg$zd~j&>$-XD%)l25SK4FZx~p

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_small.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_small.gif.xml
new file mode 100644
index 0000000000..1906f358c2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/clock_small.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_small.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/close_icon.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/close_icon.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..4aa5d6620e493055c369385ec5cbd774f2bb9150
GIT binary patch
literal 162
zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{!3Opi<85sDEfH31!Z9ZwBV2G!S
zV~E7%<RAb4+cOJzFdDLV@E%sM^N=}}HX$h~DTDEm%?u|2-bc+x7P1{+ty;jvdf|r*
zPllDF(A*PT2R?b^2{;5@;CyuWX@^m#hPmKV>!d@R3@crIZ}u*9^a7gC;OXk;vd$@?
F2>|j&FzEmQ

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/close_icon.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/close_icon.png.xml
new file mode 100644
index 0000000000..5a5de0b034
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/close_icon.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>close_icon.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>9</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>9</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/collapse_expand_icon.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/collapse_expand_icon.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bf64cc8199cee2ae3200dfb506eee46af6184866
GIT binary patch
literal 1192
zcmZ?wbhEHb6k<?en8?I1efso`>(~DO|DS<@LGeF#gl~X?OJYePkhZa}C`e4sPAySL
zN=?tqvsHS(d%u!GW{Ry+xT&v!Z-H}aMy5wqQEG6NUr2IQcCuxPlD(aRO@&oOZb5Ep
zNuokUZcbjYRfVlmVoH8esuhq864qBz04piUwpDTjNhpBqbj~kIRWQ{v&`mZlGf*%y
z)H5_TF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|
zef{$Ca=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>
zCgqow*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L72#g2
z1{a4^7NqJ2r55Lx7A2<wl`Dg+DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esX};W
zUP^v>F<7;)ua#$BaY<rca;m3`trAebUS?*BmARpri>0ZFv$KJ@xuKz}p_7rBv7@7f
zk&%n5v#FV*1x&9?esXDUYF-IUZwf-M3r@YDgpgYRwAm%KD6=dz#jPkmR{`u{t4!Q(
zal~mJRBsAyw>aU{s}FRHJ}6p|q8TOxOgkVZJkbI<@MNEw2Tbclz(mdX|KHy~zkmJw
z@%`J^FP}es{P6zW+c&RYy?pWf+0!SFA3c0<|K8m@w{P9NasArWE0-@_ym0>9*)yk4
zojh^;*wG`04;?(Pf8X9cyLau}v3=XtEt@xO+^~M#+BK_Jtz5Bu+0rG87cE>cf8N|V
zvuDkmF@4(9DU&BnoY3Fb+tc0E+0owC+S1(A*ic_rTT@+CSy5hAT2fq8SdgEWo0FZD
znUS8Bnv$H9m=GTq8xtKB84(^98WJ277~t>c>*MX^>EZ6?>f-F==wNSWYh!I?X<=?=
zYGP~z%usr|I@(&A8tQ7QD#}WV3i5KYGSX6#65?W_BEmv~0{ncuJltHI9PDhYEX+)d
zz>?u73y@@D&;gbb44{&Ofhm4U|H{*E85Yku5R&e+!T-uz+XtnF4PtFqS1F|y9Q#l+
zVR_r*cN4#BJm2}#!Qr4m_-2mU-8~<7c6u3HS@pGR>85SELEm2e4a=Rf^3e)rrwcAD
Wvon(Q@10!mhv#g5#G@QW25SH;i?#Ov

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/collapse_expand_icon.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/collapse_expand_icon.gif.xml
new file mode 100644
index 0000000000..578adc8b37
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/collapse_expand_icon.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>collapse_expand_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>36</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/controls.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/controls.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9a99e21fae845f58cc3519fa806ac82cd3f9e32
GIT binary patch
literal 761
zcmV<V0tWqwP)<h;3K|Lk000e1NJLTq003zK001=z1^@s6Le9mu00009a7bBm000ie
z000ie0hKEb8vp<Tt4TybRCwC$n@>x_Fc^m?f~SHYcoqBxUOjmg3Ijib-$S}F@#fK!
zAP9mWcvKWrybJ~#g?)gXb`=Cc5QUh+JN8<dKTXoL>M!uHc1yE1Pm{jMmX;8r1)2>i
z0g}M~mNdPZGk>2aUA|u}DG}}|v98o2epa%JsQhulLsBF;kn|;AM4#S^>Xzi2+$8B*
zf|{`BH)lsO(UdWvJfUT*NX{jxWVxR1PA`d9Vx5xqSl)pomaG!l_LzO%4lL-J-2}_c
zYDsQ)dljrn-sl{T@)bpl*m=IvF}~lMea{t@`7YUNR(I##CH;Kv*uU!NQN9Po=R^8@
zL|u}gV^rnsQmcp!f-c#$@0WQdwHzv|oFsoip(V{KKGp~t(texvQ-h=|eJIMz3p#C9
z;1EVoXh|QGZ`~j$V}o^hx-u`AsNI~Pb9U`1J(pU|Xh}AL?8D`dl3oiW6$#>!-YlMT
z(*jXv?Al)>o6QKp)#aN8sC9LBDnUF7OfAZd*|lbY!ENsPW7ly~_?BcE3#rFWbp#GN
zK`Sg2?^&Mbsp1B;I)0HYNhr2W16+0Y8CDVx!Dmrik)RWY5IiavAm1y({Msdn662>u
zOUe&s#}vhF5N*%F><&#Y33^VgH*fB)iW!XXlB%8->QD>Z{!c$uBo*C25mo3QH%-)O
z!UQY8?@0iXAPGPcfFwu)kOWDn1V{pq1W5pr03<;YfFuA(kOUwJk^m$DNP;8)NdS`m
ztR$bsU0?x{On<~rO8lL-OkQ9q$!4|0Y~|V`Z9lOU13r0y<I)$E$VXaVleLH?$+Je1
zZC+rIRA#-=EFIJSv7y!3<^?5Nk}0Topw`i))^VeeWSbXgB&nB5swI8WlEN(A(Z2A^
r3k;IVR9aWjJsx`I1sKdi5~zr8yy*BvjK-mc00000NkvXXu0mjf$|X<C

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/controls.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/controls.png.xml
new file mode 100644
index 0000000000..826a9a77a7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/controls.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>controls.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>53</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>105</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b02c11f18a390ab3a66f9a041c8ccff47ac70e6
GIT binary patch
literal 103
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfz!2~3=U0uz96lZ})WHAE+-w_aIoT|+y4HT60
xba4#fxSssu|9^Yttsh@sUoV-F_-<$Ma|ZdXP3xG_{(uZ%@O1TaS?83{1OQo|93}t&

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg.png.xml
new file mode 100644
index 0000000000..7d244ff774
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>44</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg_now.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg_now.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1875140dbd449685e573311c3687f17d914f87d
GIT binary patch
literal 103
zcmeAS@N?(olHy`uVBq!ia0vp^j6kfz!2~3=U0uz96lZ})WHAE+-w_aIoT|+y4HT60
xba4#fxSssuf2AVx){n2*gC#N&-|bZPWq2=KFi9qC`dgqP22WQ%mvv4FO#l;&8T$YL

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg_now.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg_now.png.xml
new file mode 100644
index 0000000000..45db67f1a8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/databg_now.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg_now.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>44</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_ical.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_ical.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca496f5bda3a8f0c2a84c115bedb07c48c562762
GIT binary patch
literal 1793
zcmaJ?c~BE~7+pjJK}3*xA$1!yfQ9UC0)|9V$i-nv<VYbXLPD}Ygk)o~n2=G5R4J&f
zf)qLIfaTB*Xsd{^UKAZcifCaJsMG_*S}d2s05TQ3LDBwEx-+}KW8Qn;`@Y||yV)Va
z09)%7)&Kz51_koMh!Hg1R`ZCb)?gSVhUGY4jE7_KxK64;0k#~AL%|@WGyx4mrSjD6
zO{fn5n1c$D7#9nInKDdCk(w|Ry;4oE0l>#sua?S^P#lay6BH^IY3O1d2~@~gq)0CT
zEKqaNL`9%MgN7S~BAFpc#*mYIKLLI8OhQ13;!;qrOjc=`dKPI~mr2Y`+YkwyhTuso
z(i>A^K?umjG$`mrfjwmKdKg@fP!O6YolbWLsW1XVFcm_m9tfRDqcUL_e0!0IXc~Du
zGmPi|HWsmBkrHuS&4eJGPDjzvD3~SzLKqB&NrOuDAP^qfR244Od#JRlXB2p-R;E#?
zaRsIVO^VVuECpwg2&ZpSP^#a_s<dy*L=+6tOVtoUflVpR00n~ohboot&{{kUeed@_
zg|(toH425HS}a8)BMvTpwJDUE$<?4z9Mgy}EP1AiA&D4{X%jIu$PM=bBNZw+rqfQN
z1p;P}N{dTXGBk+CA`yIwLLp~zI5ZBQM@6V~e=h{#Q#t<rTn58`{d$<erZebXGh7}f
zOHraKe1<E3&!x`FH8p}#O+@CQ8pRG&?ytd=;B>-F#jIWs|5^3ka^<sofoJ7Hgc-<m
ztp7UZnJuDsOw)HwODx{CJ*pylT|+c=T$@WX@vi8Ccx;jWUVo$@(24DsmXvlj)SkBu
zsjXy<l6u=D+n|A_d_PteUGam5{$sJD#(jnTe*LiPz)ud(CEr`*aQarAwA}BZ&qBV-
z_6(&vv5S){hgxoti&ych5Y}jYSK)Zg$d%NQ_#FY8qoe1tjX5RYL%(xeMWXpjrx)5@
zT{&#S{aheu3E^_hB{oa;SFCA0+*HoW3G6IuO>{YDe&R(?fmzYZok>YmO)D0d&5bY{
z8?S%eXO6$j{Q03Tu$7Kwf3)lj-k)wE6MbeDebKtkIZ~3E8pS`d;e!eNA8PO5cJ<sx
zjhj9^`llg$@g>7(fiWsq==nGUNlZS#KJ7}rUb&#3`R%O>y>~pz?H1~-@|OlUEKVTJ
z&uz^<5Zw7|c2`K8JfOJTMd(yW&%JA%KS&X8-kj@Zo<cr6zo*#gP}X(7Y<~S%sbyYb
z@Y&Gw!#`T~aL6Uz&w7xa*yv5W_)kw%ek$?Zee&wAT3ucNxw%+cTHv?^;&k4>_X~JA
zYZJp^xBs!@5f9p)WJTBpyJv~2J#jRm;i!D;^Hx{)<-msSK;b<dsmR^tmC*ZWSw{!A
z=L;tr$CUF6Z=R32nGV}+nFq8S8r40#lxZCIDO`FlMi@`q)0>7g4Y<?L)2G}&FIl#F
zIeU(!7)Wo=S$RBqa6y|}WO2K_OhJ_=tlby7cqG1=E$vxr9un_YWLH``S}5&0eMxzu
zYc%TVji^=e!%fdBdVmXcX_=Z3i@d@qbJq>P$aZHJGFgJ6d&e6a8mN=4t)b%BSZLVz
zTQcnJtv3Lk6E|*Tb(c2ZZ`{VT?K``9xT3nc+NXE{@%_6tG2uNlJ~lR|xyE<kujZUD
zcU@a#y|?u8<yZYl;5Qq07lql?-fn5>etmOYC)9PUtn6`elAopej&IY|t8*sT9CZGB
z2w2Ifsi|4i0FkHq(wm>Ga|R-Kbw;BljYd1PkzD`ydEVg4!0yQ^{u#e|G%7Pce~J3y
z{R)QVM1J_)3<s;Za~_q9jVKLuH6y()_EULhH1^l0T&`G9E5<IledXdBmI3TM*!cMA
z!t{OlgV~}z4<xX6?AEQyFh`4XM&rTXhmKFaC~OIdjkT+-txZSV24ZT?R~S0l+b5pn
zEzEU@5t>02>8ArnNp&5@V|KQya{3Iyx+_OE=A~W`?L=a3zqWz_$q0F{>O%6@rk_#}
LU&uSfk!1V>Q6I!R

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_ical.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_ical.png.xml
new file mode 100644
index 0000000000..ab996afc5b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_ical.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_ical.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_pdf.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_pdf.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebadc7cc73047fb4e91218a3330c4a7b9f95d1dc
GIT binary patch
literal 1667
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP
zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W}skZsAp(w
zVs37(qhMrUXrOOkq;F`XYiMp|Y-D9%pa2C*K--E^(yW49+@N*=dA3R!B_#z``ugSN
z<$C4Ddih1^`i7R4mLM~XjC6r2bc-wVN)jt{^NN*WCb*;)Cl_TFlw{`TDS%8&Ov*1U
zu~h=P6yk;40=Thx#n4~^2AF<DVu8M)o&m^9FonLp_?717!c`ZS1f?R}i`C%bkjjEo
z{h-w1{L-RiV8o><gRCmBaxO|uEXgkl$<NP$g<?QPeo20DMt*^UbFisGcxGNoet9ui
zwXd(0XI^nhVqS8pr;Du;P`_SgW{Q=wvx~E#o0)-;xtpn>p{tRTxs!#9i;<;;fs3nw
zlbH!juS<S%X>Mv>2~2MaLa!lCy`Y4UTL84#CABECEH%ZgC_h&L>|v`+oNh67#c3W?
zZwgMgn7ZNAs}FRHJ}6p|q8TOxOgkVZJkbI<@MNEw2Tbclz(ieqisv>11Jh4W7srr_
zTSvmZGlT<0_Rc)Br1y!l0=KEx?oC+&Em4`F8+LuzymIxfi*qBd%;n|aQWE46<Gy*z
zb@yiO+r7IsHMu(WMBMIWDT&No)tz+axQVY(=l4Bl5^{12(~MrWp5`^4Tz+ov`#awY
zb@cQmr7gd?_|4rnikprHz2SaS`0aXyLbiThrOmwG2NNb(Oj@L|ZNc=@PXp}c^RHdE
zj;~<P*?u=w-Om&I`uMn5n6@<@24<rMR-bRd3I>;M-h5fIGv>eTg{VJ@PubRAT>m0A
z*aaw=kj&NhqsGpeIYdZ)g>BW`teI<GW@XH94`keb`K3wRxqZn`KK%9(zF_coQl?{}
zs8(m?>0JiC3x1hi6-k_>^ngcx$)hJ%_=GHK8m>G^?~Ao|c6j+(@M0H-u3*8By-HD;
z&fY9u=byX8<Tvr15u8!!wvId9RojU>%*X6roi@`Aduw05`O~>JvOk$SGbfhyLfxf*
zd+&6`ZqY8AtQFJv_2u%liUFsevCOEhSfS^(j=@7DDS6rQLjsMDjx7F_ckJ`}=-W@d
z4{hFK{p!&cSLPG@EDT-WPSjTV?B*=Gq_$c^Uh>)Z@RPE#kHpSS+_mQud&lye$NzZ*
zFKlK%kQR6@xb)}j3vBx??{D=};oY*xS5T<nb68$S!#rCfXEBY^pGUPfDkhp9xuo;G
zY;w`Ro*T;+3UASJNS&wmG{(NtGD+se(E`>lJzp3Z+BW@Py`*=SL#fy1;-rIGccg{y
zZ|CLv^Ve{GSN83hzf?ni7rsbY`{Re_+M8@SmAjeSXZ>-RTF&j{aN-2t<n2}^P9ZaP
zf4W_`@zu@L*&Hv_W6yj%f3MrABB0!x!yzZY>{^-3?u`#}a;&X6QbIyS)gN#DVewN!
zCUnK7N47DnyVpdmReG{fr2b6WYj*CZF8oiG%wIh(Q`;0e+w`!}OrAqc&C!hEo2Nf4
zxN+g_iLR+$s$Oc7wf?`Ez9stA+@(uZy_R3z;c$zsXJaFyPQs@B7hNq*ZNJK5z3%z(
oo8`BUJhcA(``GKB`HXA~YvwLBa9$bM3#t}8UHx3vIVCg!0FOV8IsgCw

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_pdf.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_pdf.png.xml
new file mode 100644
index 0000000000..8e1405bad1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/export_pdf.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_pdf.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>32</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resize_dots.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resize_dots.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..c26e2a3aaffc7a98b9170f844ba5cea5b69f273e
GIT binary patch
literal 110
zcmeAS@N?(olHy`uVBq!ia0vp^EI`c6!3HF^d|7u4NO2Z;L>4nJ@ErkR#;MwT(m+84
zPZ!6Kid)Gd^S3oJN*Wj%7#Qq1@#X)2rOW^AV;CeE7)~^?EqtOS9|ly*;OXk;vd$@?
F2>@GS9hv|D

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resize_dots.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resize_dots.png.xml
new file mode 100644
index 0000000000..99aca00819
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resize_dots.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>resize_dots.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resizing.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resizing.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..fdfda20331e60708bf13f56a60133ef7e6638d36
GIT binary patch
literal 935
zcmaJ=&5qJg6mB9;%*4sK95p64osA|#|9~P5b%Yj%MvDYUAg(O!1sbNk_4Z;5OLsnk
z51}uhiE9&|z{H(<U%-W@3}sx1P1}3#$@hKd-1GCU*S$D8ym!cP+>zBW`>;NM@5ZeI
z_>&ifpRn9ztuY&rDN7uRxrRq37+HZc!+q>{tJhy~9SFQX9J8_gTysevI2lGrg9z9h
zS3gf9$6a8CCV1wDI{)j_7asYZ&W|d#WJd;``<*q#gLQZ4t`~02<IkU<da8jyfSH5R
z;4+N0ROdIk8tgN($fFH}Ep+}WsIlEc2B8>Lgi_I!WErWdAeSquDxV=mk`+;cS1rnA
zt)gm56>T3Lyisqe_09Iy7o2o{&RC?0Vv;06QW6NAiE^!0%QO_F2#8|53Yn7@!}v5;
zFmdcsKVm)!QKslj$dc(iM0$0FAlk`>@itA6Ffnx^Q5K}^N;%NB{|^m<9Xe)xd>!vU
zh2!BW!eSrCWJz5p-1Iba6=?>=4kL6($Yq|z-kdNJ&q;)gfr=iE{Lmvw{Ah!>ZOsZ}
z=7cV`Oq~Y>!S_9_C0E-<xgwX^O~`ty^tjq;8YNRQz^s}LCFh#NT?RO0IoG@9DtozE
zD+CdEHZk?zV6RO{fHqgw{JpW1+k5r4TyK9Y(q66z!H8L5|0;BDg6_$-yS9bHuJLgQ
z-A<vcFMgChz)0M;%*HVNKKXrIxXljEo__0)XYWs7<_ag=^0;vG<>%3zY;>$v*ZkOg
G_4W@ldm6w1

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resizing.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resizing.png.xml
new file mode 100644
index 0000000000..3dbd24776b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_flat/resizing.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>resizing.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>29</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy.xml
new file mode 100644
index 0000000000..ca45cfe116
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>imgs_glossy</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f874fa321f76c0160b4b8f48a9daedd36cee8bd2
GIT binary patch
literal 247
zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-K!2~3QS7wv~DYlXzzhEE@1bNHYCjzN8o-U3d
z9-VKm8gd;nkZ60jT|%I+@bbcQPDi;T_O`Hp6$;Z=5S?@TU|y`(N|Rpai<aKf^(U-T
zYkqKeGN@#RO$oib<xlzMl~H=n+TU7vT;l0ie8KeOs@KZwA%S7b|3150w$3)}Xkf)Y
z+t7OLlJuDBoYk|#zN)WH)!`L>&^>LliG7K>pl(rSzno3KoOa=R6OQ;>i`)H-Zq+|-
rem;NCMy?*i15f`I>27?rBbrhEz?;bOt<mbTAoqK^`njxgN@xNAGLBy6

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab.png.xml
new file mode 100644
index 0000000000..0446555458
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>blue_tab.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>22</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>60</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab_wide.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab_wide.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..88e22e1682bed2dbf4a9086b5ce04361862cfd70
GIT binary patch
literal 252
zcmeAS@N?(olHy`uVBq!ia0vp^Q9vxl!3HE9jJidE6lZ})WHAE+-w_aIoT|+y4HR7G
z>Eaj?aro^_LoO#n0oLiZ?RyuPUpS?GqslgVeZo@nfDPL>Z59ly6Z$XQd?Wp%_+|rv
zAin+&({_B_Y(4LETD{imw~SIs%Zs#+$MK)Oc_XY_)5OIud&1wMy*F!&Hl<HjWY{@1
zdB6Rx?O&&Gvn-gHy#4%=DT)nN@fVlq>s+*7R9w&bR`KG0FOwjF-VBE?4X&3fUtYA4
zZOCxh+_YJ5b5rp9hAQ(dF0b>sFK%4)^arb~S3yWRWAq}R%Naaf{an^LB{Ts5d(dK@

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab_wide.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab_wide.png.xml
new file mode 100644
index 0000000000..86f8f6c440
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/blue_tab_wide.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>blue_tab_wide.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>22</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>90</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/but_repeat.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/but_repeat.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dd6595e5d9ef43bd03c486ff87079f398267e085
GIT binary patch
literal 1149
zcmZ?wbhEHblw#0e_|Cu(?klqTfBEy<Gmh>oYklCmVoqenVS|Pe!)>e59cFWsU9>AW
zZP8U{y<th>yh;8RlNr303RUE2#_d#_^)>0%x$Xs10t-?UO*$CP9jc$w;rijn>#HZ*
ziuOA9HrlOUoN#1EY26vWko7W`kGGuIQyH^LXXo0ihgT<^dANV+jn?#K4u`fCUwwP*
z-M5!ZXNH}5yl>s2_-m)ym(2>l`}us|%dq{M3y$q7@2<B=*sW1@)O*$4?wN<{4{Rws
zxV5O|zR$*`Nf(YZo;_Gsc*b(yru;|OCa;_ub^iImwF~1;@2|<+YTf%HbViToqQ6<8
z8)RqP&6{$(WcB=*OUIh0cDhwwaa{N(bMm|B^Un^>KifR>Y}Mw6)3c8m-~M#w=7-a1
z2lYB02kd$=@8hpG|NsAI7zM*O1QdU=FfuSCFzA512+9-e9RC>(a>#gWSa7hJLs%<@
z!>y62jYpg%f??u==`spD872Y>4UJt1VGkBu+W4e}lTpRt$^pd#JWK}3LKB3T9*Ht>
z<ry>{5N>MH5zv}sFyVmL)JDz@z9|n~A2ze=aoMTfc#?RCTa!a?fk(jUuvRNSo+m#7
zABgF&Eo)ezv2bzAcA+K}&I`<}M+6xCroGv*gqxjLp!QVD$^#6OloTdwc^t4{<W$#j
z;Ho+Bv@xYcTrcL{nVp-TpBE5RVBlTW*uXYDk>g{)f>K6CCawk>Cl{7Cw?#BK3K$BV
zSs5kRIOOdXxUhBTvni|)Xl*QJ<Ctf#;>N-QjLPzCavSUfPI0sfDy@jpkeH{?dy!N3
zhQbX7(}VJFMYr8B{IE5rQKCY`;NikW%s2R0UNrDKaC~s&6i8KY$lHF<><EWw4ufFH
n5zcl8Mz1Rjm&!O~9z0~c+F20EV(8*9i&bpGvLshVMh0sDtjjMu

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/but_repeat.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/but_repeat.gif.xml
new file mode 100644
index 0000000000..1d4dec453f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/but_repeat.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>but_repeat.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>40</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>26</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/buttons.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/buttons.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0c60904e75cda19694385039680f030882c1f39b
GIT binary patch
literal 616
zcmV-u0+;<qNk%w1VSfM=0OJ4vEILf2zSPX({OtDp-0J+)-t5%s{QUm><nH{e#@y8A
z{Pg<#-0u7U0000000000A^8LW000dDEC2ui0Dk}!000F3u(gtcy*TSsq@R^0irgnr
zW2&w!*`3L9%yezvOX*Sa?fbbGtoJJ#k4Re(BpW!N(5O_V<1M7vEcIp0dcWW>b{ktD
z&gisyeO}}wWwu=IPQcysynfG5*AoY441ID30dRqYbB2hDj*oeU0SAKw43?OemjIca
zmy8XQ2$l?`rlkO<s+t6#qNJ;_va__crkIj}mZQ7`yZ`{b!oIEtyS~W3!O6^{#mB?Z
z&C}A=)XljB+S}X&z?|LP&*9wP<l7A6=j-h4?(5m>-{A0vp~md<?CS6R{{Ptw7$6|9
z;5={z6ApYfP@zC?`W!B_H;EuYi5N3#+_<ro1!MjL6$~VxK$||2+Df8S@JuAil@NiY
zoQbk!NSZ2h;@tUCXHT9!OS1f^ps3NKF-aahYM|KCr{<JC9V%hc)T>ytYTbG?msW^U
zr#j6lvq09dT+^yuJJf1X0dM0fC;-4L+`9_kQoUzXuU`e6%*y?X_HW+7hz~0^%s6r5
zqF(Vz#(P-uVW*ZU-_3lP;(^MbIg1WWdbDW)xdf<Qy*lq^)~;6<V@*5u>)NP2)85Uy
zx9{J;VH*OpAUN;?ZyFFc{+kM-;>@E<H%>-IQ3E2UV#jV2dz}|K7IbH;;QNrz*VAWT
z&%M2R_w3)xkI!-mk0eEOoX77&KNJ1{1{YYw5-_xof)G1|V4wyF7P#Pp5RRZj1OPka
Cm_4ij

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/buttons.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/buttons.gif.xml
new file mode 100644
index 0000000000..4dd2683e48
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/buttons.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>buttons.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>20</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>127</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/calendar.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/calendar.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..67257083540f7ea06881718da65d749f7284e165
GIT binary patch
literal 622
zcmZ?wbhEHb6k-r!c*ek>prLT)%o*dfGgj$`HW)Az6cjY9_^@!{!iEJG{{Q%I;E^z4
z!G;SD{sW1G2@e`(9Qfam@FBrq!iozH0SOHY9(?%lzo28ogbn{4Djqzr5a{jgov`A=
zh65M&@85s>_U->O8UiXVBt#?>EcoD1aG_wvg9k7EH#9UXSaD#%jt2)U1ZK{h8PM>c
zVZn$0|NmdSa?Qab;lPOt4J-aPEI9Dt$A5={2S5dnpFCc$;lTAP*C%YaV3lz(dCI*9
z4g$qf)-Kp_;lhmv7j9e#Xt<D;mIgF|VF&`npDe5*49*NXAh(0!gn|8ZgL6}JOKV$u
zM-ziyH-j95ECVBh8H0sZ6T7a|Y+bc^x~#g2iyfMzrP)M8R8;u*v>g?cw=gYN-LX^L
zkc~}ezmnDRmHU*|uGiL<kT79xveVV&xOn-}6=PAZ^B4K=+~G9l7qu5|;<e-#<9PX6
zUO>?1^(|-fE8lblbd4od4L*O>-Nnixo_MTBMAhPt^YXsC%yN=J0u$6<xR`KW*HSpp
z+R%8Y>;9q86(1O;^YnlA`!OMrv9(1`BVyeag@*_CuyPgcJ8^Pz`Z*T|W<~~U06^u>
AiU0rr

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/calendar.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/calendar.gif.xml
new file mode 100644
index 0000000000..98c0519799
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/calendar.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>calendar.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_big.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_big.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f78955621511ec7fd2bb17dd6f2ab5dfffd374a
GIT binary patch
literal 1580
zcmeHG=}+1R07cDAhc)TatX|8^61%PHIycwN)vm5n>$KKX)Ur%eENr?h6OUDy3QiHc
z>%pw3)L*>NLdC0|P!E*i4I*VIprXPLMZ6USmDxXGUzUB?OWu25U*5~hxfkGL3AKen
zAP`I6Z@pk=ZvUF+%+B<~Sd|3?Vg|YAAM9;38o6BVQ}!wx4i83RCM2LpB&zFHJ?me?
zq~yw%Pg({wq?)<BGFoYqLOgF6;_v>PNX!6cOBf50zov4g<R}zs@8F0xvqT1%vx~?5
zlRGP_Rmp-OyH+Y)1lP1%^UJ3lgMvPu5M1Bg+TJCVR8#8O`Jy>uwIut`+Q;<C#{j*c
zL0(8@1|Tq1?UFQdcOJmWqsbc^8)?lf61k4qJ4yil8Wn@m`Q=8I8esGe2*8#e?vKBh
zH?(uos59j)vLY&j(XTkvALm!GlL~vWndHj0g^|gbV04O5s!Auf;d3a-*+5Iruy|oD
zy?~mUUAC~KeEw2N03@+l&++AakxZXo3b04S{MkbVsC^~ZXIApGn>$1*FPFk30OI1R
zW)@G3&2P@Fp6KLE=akkly2qLaH0;5V;wR5|uU4xVEZ)QnsM)INl5)p|C3NwmaMm{j
zeg8qis%8TOK~jx$aB8QfONEL}Hyj_w;tC@oB4Tlm_Vy2k1Pb+<7J)#h)EW+7fr!Z$
z$TZ>M;WQfUKzFFq9d7ULsn@qdBIA@wWlg7ad|JXBSPR1xpfG=s>0*V-c(&~S_@@oL
zHH{5|KujRN!2*KLzVM#}<X=iPex!PM)`is9>sBz9iX-o*n0|7e<cX2SsgW+|33)*e
zi^XzENJ`RegG^$FZXiLb^VHt0KwNzTG@8ae-2$(T>d}^)%|(m2_>eI8v``BRgg^0{
z2PaGEV>cq`Y`@YWLTKPo$E@tq5A+Pjpy0~c)bK|c-Z9>o+o;+%ThM5iYqkZyjEuSY
zRoYscBHuwqBONURnX+t3*h9cf=kCG3o$4e<*m(dK{ldOX_KluOWsAAWocdx&_$j2g
zJ|~_t#45A!xqKL{h);4;8C+Yr&L6+r?sH3g|6D>}a@<9SV+F3Yf_DRnz`Zw`Bw9A1
zWTAP~R#*3^C`}e+{ldilb$M|<$wRRbZThKTb#K`C9rnRZovhwI%mdnx;())?boV?I
zpDtRYcM^xe$~pMgW5^dTa#rj=qfMD!Avo__AK|?>>Mr{`7mXvWHaX7Z9w_|8)w$_i
zs{tpQ??19(>fN(GfH^J=gvPyn<>FAkG0h?Js{QZ<^b~N%I<W23cQcx4Wpf{w;B#GL
zALUYUDbvAjxzphmCGm?!R$51+N`O>HsPjqcDI%VrV3_~(m40D5v`y=|4-*;`CwOy<
wvE-X}ur8QgO!64i+=xvp*ZWVVuNVxT9yN(dw#nx-)$5!1dIxwhzd>gF4S%~x&Hw-a

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_big.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_big.png.xml
new file mode 100644
index 0000000000..81f78d06ee
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_big.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_big.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_small.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_small.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..697be65515c444b90d1c988d736f86be20d950ea
GIT binary patch
literal 3809
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

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_small.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_small.png.xml
new file mode 100644
index 0000000000..24101ac59d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/clock_small.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>clock_small.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>31</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/collapse_expand_icon.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/collapse_expand_icon.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..64da9483ea6a8bf40eac57f64afddb28638c1c47
GIT binary patch
literal 452
zcmZ?wbhEHb6k<?exT?kg1YOgX_0L(?Gh@}H`I}?1>SnAsUe&p%Yv$JM$_W8+`K+vL
zQy1@KV`DF<o|s+QHD~pa#hWgy*m-l=wyQIi@1MW!RA6M5h?tbRwo!6!12-?fp_zlM
zf|`w!pSg`2zo4+RoKjG9mYYwcrjBuRa+$kd%%Q7)K(<l|DE?$&WMEKZ&;gkT@)HBw
zLx;%)9y(I}Czcc)%(0r!y->|zZPaRp-Va7Es`fWH{!n_taqfi)L%}l+!<HR2``82w
zoEV(X-~TPyAnhc})!Nq1AkrmU$=cUHL12=As*@P!jG40-MCXcCvM*e;Sa7MJijySA
z>NRT_gf~c5vTfPAO=yP@zY`zB-u?Ry@*U>$I(GcT$y28*)fmoQIDhHFx$tYDF7dZ+
zoj;d(|GrD{<HvUycwfAH#oNH+EZ+W+OTJ6w*@Pdg3X`3sXZ`1ND_ND0H{~F+oDc8D
k3#$~F1UIP7*z9`Ip(Dmwj^V<I!o|lk&Ny*#GBH>K0OuZ-`~Uy|

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/collapse_expand_icon.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/collapse_expand_icon.gif.xml
new file mode 100644
index 0000000000..578adc8b37
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/collapse_expand_icon.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>collapse_expand_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>36</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/controlls5.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/controlls5.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..24957208fdcb6ec0fdc02a6468100c686eb9ecf2
GIT binary patch
literal 2835
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

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/controlls5.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/controlls5.png.xml
new file mode 100644
index 0000000000..8d74e21d9b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/controlls5.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>controlls5.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>53</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>105</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0ffbdabc108e650383ef3df89eacc043db5d9b8
GIT binary patch
literal 89
zcmeAS@N?(olHy`uVBq!ia0vp^j6kf#$P6SsHY~OWQfvV}A+B%Uefj_Yf7JdxSwIm!
mPZ!4!j+x0B2?}CDybM!6aWy6%oWKf{VeoYIb6Mw<&;$Uo3K%*7

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg.png.xml
new file mode 100644
index 0000000000..2350e8a6f7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>42</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg_now.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg_now.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f371b4df716915175019c9422df7c12c27f64ba
GIT binary patch
literal 89
zcmeAS@N?(olHy`uVBq!ia0vp^j6kf#$P6SsHY~OWQfvV}A+C3xefj_Yf8N#)Y(Nn{
mPZ!4!j+x0B2?}CDybM!6aWy6%oWKf{VeoYIb6Mw<&;$UeBp3Vu

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg_now.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg_now.png.xml
new file mode 100644
index 0000000000..cc61f49a01
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/databg_now.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>databg_now.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>42</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/event-bg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/event-bg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3bae3e018613bfa0c160ea6a36723d641e3a415
GIT binary patch
literal 148
zcmeAS@N?(olHy`uVBq!ia0vp^j371(GmxD1Q}Q5?(hcwlasB`Q|B`)I{(pP)|LfiV
zpKt#Ebmjkt3;*Ar{{Qy)|2K#JzuNo%<<9@lxBP#$;s2A>$=A-j2WnLEba4#fn3)`q
yV31Idz>(mQpplS~Fyp|6hD7GWjBVUJ{0z3Y*cxAN?N9-#X7F_Nb6Mw<&;$TzL__TW

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/event-bg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/event-bg.png.xml
new file mode 100644
index 0000000000..3233090ae0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/event-bg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>event-bg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>13</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_ical.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_ical.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb915ae1e4aeb01aafecd9fbac252e0fc53651bb
GIT binary patch
literal 1323
zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP
zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W}skZsAp(w
zVs37(qhMrUXrOOkq;F`XYiMp|Y-D9%pa2C*K--E^(yW49+@N*=dA3R!B_#z``ugSN
z<$C4Ddih1^`i7R4mLM~XjC6r2bc-wVN)jt{^NN*WCb*;)Cl_TFlw{`TDS%8&Ov*1U
zu~h=P6yk;40=Thx#n4~^2AF<DVu8M)o&m^9FonLp_?717!c`ZS1f?R}i`C%bkjjEo
z{h-w1{L-RiV8o><gRCmBaxO|uEXgkl$<NP$g<?QPeo20DMt*^UbFisGcxGNoet9ui
zwXd(0XI^nhVqS8pr;Du;P`_SgW{Q=usj;(#rIV$pp{1*#p{t>zvy+jNft#^`qos?h
zv8xkIuS<S%X>Mv>2~2MaLa!rEy`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@<)X&zK>
z3U0Sp;MA)Rbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWpst*KV(#K6F~(9^{+q~g|`
z;Pc*0jv{qC7Ylh@;CGzRq0sq4|6@>W%n2)%xt~K6L|ujMy?S8#MPTl$TV-6o<eLPd
z6c5E*`m{-9(z!49Zme4@x})~P+3L@ae^=zUNm}mT%g=Ctv4~lcHGhRd_X(ZD4>Rnn
zCPvPf*K$$e^OH+CTNm@6&#zv3YWK6lKc7816Efe^YVX(O5qFh&Gfy^OdC2g&QGlsu
zsc1r-{R`{c1=C}u?`%uyDJ|~#^-5}r(e4MAO=ei1W6C_~+?S$s((;2J`z-b42Q=Ne
z=IpjC`txa3`M=pLnJ(?GzDgCuJn36_=-|%HYNisLK5H|6KD%`}HGH-HU(uDSRR`Cv
zwN$m*pu;WH*>Wa$rO1)Tg(qw5-p>mx&C6E!<s0I-Fkph=^wW*&UVC|d@XqcERuP)G
zC_v-MI>|Q1jS)WYzSgv5<O-y?tX&yU>KwZ*_qNe0(SH{nE*I@}bDnZ~*$1vm6Q<eR
zxyJJU_~*rLwOgZJZx&wGZG6`KeA<eo0m_SwKVLm}rtP@GjlT_tXK%4wFzu3(q^#Xl
pd!`dAd-oh~(s{yK^xwOIk)dx#_?kl3(1W1j%hT1*Wt~$(6966(=kEXj

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_ical.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_ical.png.xml
new file mode 100644
index 0000000000..2a13d44797
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_ical.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_ical.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_pdf.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_pdf.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b9d81f04429402e16f95a7e52854f536821f94a
GIT binary patch
literal 1395
zcmaJ>ZA=?=96qd8hh+jIqYQydAw%NYyS~x&pkV2h(TxJqW?-VE*WMK_aCh~3(88v$
zv7p<sp>AYMF{ltXMIF9;SVkh10RusXnFN_LgGsXKV%o$RNPyNWqs$NDC3pXqJkRrc
zdveFiO7_J>?}`QhAjVXLmh)?T_<c&qe-BQbuHcs>&REG=7$@h!SOU=FjGX{Y6jn`?
z6Byq3>Nt@L00NM-R&tf*V#L8vGAxXdc_|mq27ugruM2b35*%nJs!3WW@ed42KoZwU
zD%57!>@pBFWKk1KSei<#j;30N7MJAbfw^9U7oZ3Z1HDuo?MA#h$+|AW@59%S1YC!3
zwK~beq$<s2pn+itP%VR{4mcYIv*j|mQl-&o_J9gl4nwd4k}ITg4Wd*aFbr-y5<VJ>
zJCSm<a3dCf(n)GK&V@jb$K#QClrn~`hU8kUHmspgNO^?R-AHqoS4z9nBMK<tcCe(2
zBN-YDD`Ix0p3_PAOdpm&xi)2K_ePuehCyD;1<7S_xTFZsZ2o^JMQx(pTsiS5-~SYL
zTN_;jR8F{=de*@Y&Y2z#<w6WBfpH9LWth517t3lGj&av8F3@06gB2u=GamOk+H6Kl
zw41|d2Vp{W5}q$3NgPq@RSLZdR;!HaLb==s7Zjj-jRv_wtJE6{_M&Kni!zRSilDg&
z7k|Xf-jW+O0_EZ(qXbJf5O^WWP~dvO2)T7G$}ROaxcJt&sJ7%nd@@jYtp6Hw<cjxB
zc)Mv@{;+9#g66%>@}}-PAbbV@qJB4_daL)Q{pGLx(a8dVAtg2w_);Yx=d)rV;Lh%y
z;Exw&>DCXko*(j!OclJ7b^G<;+usJ4&42%p>F+$>vWipMIAKY)vn><~^~_&;Vn)>d
zS06l#iF=>yO~i#`+dit>Q*7HN@_j!P_~oW(;Ms(h2S+D?Gnead9JkMReVuS2SJVnr
zwFbv0VEAxw|5^R~^xBd??O=6ljD1+zE~>Q2hJ>A^U4-pQ(+)=b9k654cyD>`ZmDSU
zy#~c<*W5^8H<;SDOFUW|d*f5HsJVV7DX5)OtahApdS9`goCQCtI<&NsD6m{hXba_>
zQ^IR&6TayiK3~oK>w&496AOc%Ytgu(TSJ}tvGMJtwoA9h0;MmVK7#$$ARN{B#p1lz
zu;sLc>%I@3oAC8>DOW>17sTSjI<fd;$i95n*7~clJ2jtJ&aclCSj<s^?l+Xqi&qT8
zc`3+tHp=;+c`ekwz+_J6XlNxoatsb!*4{bQked8v;){<Z<A3<O_6rMBV%nOS+sZ)i
zXl(JZpW_$rcMpb61P8eH7eYPNqSfTYxDMJjKbzKnvZ__|?xCfb+352|OOki7w@9&=
zIsMkkrNJYePro3X$!}UY^=F*mK*H6IiujD3bx?~pDRvfkTnv2k$=Qs189()he}g7t
K3Hn8W?dU&oe*W+P

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_pdf.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_pdf.png.xml
new file mode 100644
index 0000000000..98a5f50497
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/export_pdf.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>export_pdf.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>18</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/icon.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/icon.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..31d6626cdd40848c6d900eeb8e8d4057f6dfd553
GIT binary patch
literal 230
zcmV<C02%*@P)<h;3K|Lk000e1NJLTq000jF000dL0ssI2`Fx`m00023Nkl<Zc-pm)
zp$Y;)7=-6w<q)}Nu-PmItKeJs1{T3=mU{+$0gYCh3WiGtgNRMIY%m?m?u=oBrgMW%
z`{84l|4VkotvHv@N&rLwkO+XD004-Tlr=Tzcg+4&rfDN<;cK>si?L4DSwy6=Gyw9+
zFovGaHzsTy&(`(mA|C-TpGSSX^ClSheK+Y%@EY4KGI}?S^dBdHlI7}ny*~iZxu7XL
g^hQK^3Fvj(FC=_u*5-+h;{X5v07*qoM6N<$f}pKl{{R30

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/icon.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/icon.png.xml
new file mode 100644
index 0000000000..b0ec30a4c3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/icon.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>icon.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>13</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-separator.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-separator.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..22d630927f32a8d4c66b4cbb851f20002aad0e9c
GIT binary patch
literal 230
zcmeAS@N?(olHy`uVBq!ia0vp^#z4%(!2~3$o)(t^DajJoh?3y^w370~qErUQl>DSr
z1<%~X^wgl##FWaylc_d9MID|ljv*DdZ2WHv9#-I)EPr>QcFBix7yH*t@Vh9Pq$SxT
zu<3%V-R-{5><K1Wn%b*geOnx&k+D1AwY11~*TWpEUVRZNfBbRZ!+8^p9F;$Krhf8x
zx_<dy`};?D>$oF!%xaa|x+_&9hR3^f$)(@tYA>xRzwqPwv(VfP!nqvDPIKS5)_mcq
ep0}TYnc<CUZgtc3cdS4+F?hQAxvX<aXaWGLzg)8b

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-separator.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-separator.png.xml
new file mode 100644
index 0000000000..8b69ced208
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-separator.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>left-separator.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>2</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>51</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-time-bg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-time-bg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..287a23bbdcffb88a8ca7e13c61fe947d8284d2f0
GIT binary patch
literal 124
zcmeAS@N?(olHy`uVBq!ia0vp^#z4%-!2~4#6f)ihQqG<(jv*W~lke2MGGqpU!~g&D
z7%(LNYZoq%wD@i><R;{FkyY3s=<uO4M-H9gP?VIAm@!jgVaH6)bJxNIVs`!4V)z{>
VW}y=sH5X_cgQu&X%Q~loCII&SCFTGC

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-time-bg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-time-bg.png.xml
new file mode 100644
index 0000000000..6a333d0aca
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/left-time-bg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>left-time-bg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>51</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/lightbox.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/lightbox.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0314fa609946421251eeafe1bd88b61216e671d
GIT binary patch
literal 207
zcmeAS@N?(olHy`uVBq!ia0vp^j6f{S!3-q3+C<%eR8)XZi0hJlSN;RRw?{v|y!`n2
z!>f<qAHV+xM33J6d+_$({kQ+_z4>?N^}pM%{@r@@@5al2*I)d*`uyLO=l?E0`*-o_
zzY9<PoqzK0?BjoD9)ZxMryw<V-+)Yz*s0(Hw8g;F#W93qChNg=-UbB*h7FT4Vmg>v
zum3N<rIfM7YVW}ep|g{YW^F#rw|vpAJ96v$<>g%&d+z7H&;jaY@O1TaS?83{1OTQT
Bb#(v$

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/lightbox.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/lightbox.png.xml
new file mode 100644
index 0000000000..b350cd9706
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/lightbox.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>lightbox.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>27</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/loading.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/loading.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f5e71df6aa432e63b71dc708a929027822689ba0
GIT binary patch
literal 3951
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

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/loading.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/loading.gif.xml
new file mode 100644
index 0000000000..a1b76e6a9c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/loading.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>loading.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>15</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>128</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/move.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/move.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..15681b311e095bcf71a016c10b98215d2f62fdeb
GIT binary patch
literal 145
zcmeAS@N?(olHy`uVBq!ia0vp^j371(GmxD1Q}Q5?(hBeias3Yj{~rDSclZCloB#h^
z`TzIA|G%gI|2_Wy@1g&H_x}I8^Z%bM|Nm_G|7SJho#WC#T}qxVjv*W~lLZn25)2Xw
s5;zh(5;PJr5@sCO(2&S{n6ZtU!Ptv+qi^c>nLyPHp00i_>zopr08)lQEdT%j

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/move.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/move.png.xml
new file mode 100644
index 0000000000..0598f0dcdb
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/move.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>move.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>13</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/multi-days-bg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/multi-days-bg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..f43a46357b2b8a44c62bb6955413ca6c422397b1
GIT binary patch
literal 350
zcmeAS@N?(olHy`uVBq!ia0vp^j6n2-gBi#={doIQAhj#NC&cyt|NoEQ|GW3*->p~w
zu0H>F@#()akD%!6<9|SO4vfw}`3FH4p8UJ;6r>D-E<O7PM3=$n%JY8^1T^RBi+|T(
z==#flH(!Cwzw`Rv-8cX4z5Vy#-M@$L{sHZM^5NgJkN=*3`uF0~zgM6Cz5eq5?brYB
zzW#sz?f=K`|3Cfs|K;cZuRs5P|MmaJ@Bcsl{Qv#;|DV7A|NR5H`oGxgb9z8u#Cy6p
zhG<NDd+=x?6VQtr9=v<!*S-7jzwC{y>%CiATwRVHQB_&GBsJyf6H$?=Q$j<oUNJS<
zx}~(_>la?0-X33{vuFPP+`eJUrfnOyZZ0n<DJm;0E&l%D%cpOG94vKDxH~Vir<ByV
RUj$mk;OXk;vd$@?2>`!f@W=oF

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/multi-days-bg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/multi-days-bg.png.xml
new file mode 100644
index 0000000000..968417c8cd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/multi-days-bg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>multi-days-bg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>500</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/second-top-days-bg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/second-top-days-bg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f9a4f6da021cb45908bfe9e8d904e042b2f047a
GIT binary patch
literal 138
zcmeAS@N?(olHy`uVBq!ia0vp^j6kf#!3HFY>I`du6lZ})WHAE+-w_aIoT|+y4HUHT
zba4#fxSkxb>HVqtw*L+XN*+8aW?NSO|37nQJx{^4`Zq~BXM7Zz1ZN)Ya^*R*tKh#R
ivt*e81LI3EMh3oTj_<z3{Cx#9hr!d;&t;ucLK6VyQ7nM~

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/second-top-days-bg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/second-top-days-bg.png.xml
new file mode 100644
index 0000000000..c78fadf739
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/second-top-days-bg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>second-top-days-bg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>42</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-days-bg.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-days-bg.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..094b805f6091519d6304891049317e748dfd9942
GIT binary patch
literal 177
zcmeAS@N?(olHy`uVBq!ia0vp^j6f{L!3-qLB-myEDW?FR5ZC|z|1a5h<@M{=`!77(
zd;aO}vrl)Pd9wY~<E<wjZ9e{J<FSY9k30Y(AR8zMlm#j~a{0xHYcJ2-e0|~0n=AL<
zNw=T&1DdAg>Eal|F_ZNmx0r(h1H*=|U3OfpzvHi}DR`OfUbAABv-upo?U|K(>>jf7
X&0u(ba8}zzpe_baS3j3^P6<r_jt*5D

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-days-bg.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-days-bg.png.xml
new file mode 100644
index 0000000000..f42cecc5a1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-days-bg.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>top-days-bg.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>22</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-separator.gif.gif b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-separator.gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..18b4bfa95b0b62a3f145bc91c6cc65f87c8acf7f
GIT binary patch
literal 259
zcmZ?wbh9u|WMU9wSjxb#WZ#wl|NmdP{|<=G-g<TH+VlMvAMZSKf79{Xs}J7*$^y}f
zgV)v`xw-N9?X9Qo?mGKm--SnqFF!qg?fL1OFE8AA1JQf``KMR!zkm7u8)zC3{QULz
z^S57bKmK_3_UnTepKm?+093|61E2#k6XX{LHVp>`1px&CF4n_O8yr)Fq>iQ?Oe~R-
ZJN}%psYOZYWQNhg04>pOR|ysdYXG(YZ0G<0

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-separator.gif.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-separator.gif.xml
new file mode 100644
index 0000000000..b2d44a62e0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/top-separator.gif.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>top-separator.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/gif</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>22</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>2</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ee9285229449c6b3361135be958566c494f600b
GIT binary patch
literal 290
zcmeAS@N?(olHy`uVBq!ia0vp^HbAVx!2~3uq|aRjQfwtbe!)N*2=bP(PXtoeJzX3_
zB3j>G-OY8#K%(uTzJx$wVG#S=qhjd?Up>&>QB}RGinHtkLtax@;ku5}S3yfIH9KFl
zY%=}#!9Mud^!^DP4Bp4T{&^th_9K7kqBWtXYBy_6>*GFPB(-bulr?<m43|DP2d@9x
zA#~T)OJ}iR^!$`E?MEtC?=F5N=VoMm)UbDHBU3}T$=szM`}{QACdbTLTzvfEey4YH
z**f&kUaVX!<NI1#eDcq@^25hf8a`gQBa^?&drHaet1I75*mGIQH<+ROZfJSuB**1^
m4mWOhzY{tpk=$eWE!Tg}+c>?_@=7O=S3O<*T-G@yGywp3=X(MG

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab.png.xml
new file mode 100644
index 0000000000..c9ecbb470d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>white_tab.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>36</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>60</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab_wide.png.png b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab_wide.png.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e5ffb852f02941eeb6e6b7bf27e6509c93ad44f
GIT binary patch
literal 300
zcmeAS@N?(olHy`uVBq!ia0vp^Q9!K1!3HEb8+12=r~;43Vg?4jBOuH;Rhv&5D0t7)
z#W5t~-rMWD`3@$?w0*2!+}Uxor7<$&j8OYQ-H5w#tGzEARNUyPVJLhsMNrZ9#q!Mc
z2d+!ZyMO8Mk0)oRUz>2@jwRdm-_G;&!#`N>T%)<vDQ;KTRfCX}ubVEf2ykmY`tHl#
zSy?BW%Y5&x^B3j4(x862dB(@Whd&uZO#*w*{y6wKVvF3&7cV@VHfOAzbir=nWzMsU
zIDIn&W?g7`W<ASQSgJ+MWdDPfYbPaqw~P2?Up%}|b@ks~DXA^5TqSSwrI%#6y9)%F
uZ$8^9CG}<2Q;jWq?Tk}_{sMvr^0f?~GLp4~Zq2a+@jYGrT-G@yGywqX{eJHN

literal 0
HcmV?d00001

diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab_wide.png.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab_wide.png.xml
new file mode 100644
index 0000000000..9899d85938
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/imgs_glossy/white_tab_wide.png.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Image" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>white_tab_wide.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>image/png</string> </value>
+        </item>
+        <item>
+            <key> <string>height</string> </key>
+            <value> <int>36</int> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>width</string> </key>
+            <value> <int>90</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale.xml
new file mode 100644
index 0000000000..c319b996ac
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>locale</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.js
new file mode 100644
index 0000000000..1a5d39bfe9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],month_short:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],day_full:["الأحد","الأثنين","ألثلاثاء","الأربعاء","ألحميس","ألجمعة","السبت"],day_short:["احد","اثنين","ثلاثاء","اربعاء","خميس","جمعة","سبت"]},labels:{dhx_cal_today_button:"اليوم",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:"جدول",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_ar.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.xml
new file mode 100644
index 0000000000..a3c34ff376
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ar.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ar.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.js
new file mode 100644
index 0000000000..063edbcd93
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Студзень","Люты","Сакавік","Красавік","Maй","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],month_short:["Студз","Лют","Сак","Крас","Maй","Чэр","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],day_full:["Нядзеля","Панядзелак","Аўторак","Серада","Чацвер","Пятніца","Субота"],day_short:["Нд","Пн","Аўт","Ср","Чцв","Пт","Сб"]},labels:{dhx_cal_today_button:"Сёння",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:"Рэдагаваць асобнік",agenda_tab:"Спіс",
+date:"Дата",description:"Апісанне",year_tab:"Год",week_agenda_tab:"Спіс",grid_tab:"Спic",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_be.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.xml
new file mode 100644
index 0000000000..c10face70b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_be.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_be.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.js
new file mode 100644
index 0000000000..66192472a6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],month_short:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],day_full:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],day_short:["Dg","Dl","Dm","Dc","Dj","Dv","Ds"]},labels:{dhx_cal_today_button:"Hui",day_tab:"Dia",week_tab:"Setmana",month_tab:"Mes",new_event:"Nou esdeveniment",icon_save:"Guardar",icon_cancel:"Cancel·lar",
+icon_details:"Detalls",icon_edit:"Editar",icon_delete:"Esborrar",confirm_closing:"",confirm_deleting:"L'esdeveniment s'esborrarà definitivament, continuar ?",section_description:"Descripció",section_time:"Periode de temps",full_day:"Tot el dia",confirm_recurring:"¿Desitja modificar el conjunt d'esdeveniments repetits?",section_recurring:"Repeteixca l'esdeveniment",button_recurring:"Impedit",button_recurring_open:"Permés",button_edit_series:"Edit sèrie",button_edit_occurrence:"Edita Instància",agenda_tab:"Agenda",
+date:"Data",description:"Descripció",year_tab:"Any",week_agenda_tab:"Agenda",grid_tab:"Taula",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_ca.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.xml
new file mode 100644
index 0000000000..9745db2656
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ca.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ca.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.js
new file mode 100644
index 0000000000..1812f912a6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.day_date="%M %d日 %D",scheduler.config.default_date="%Y年 %M %d日",scheduler.config.month_date="%Y年 %M",scheduler.locale={date:{month_full:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],month_short:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],day_full:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],day_short:["日","一","二","三","四","五","六"]},labels:{dhx_cal_today_button:"今天",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:"编辑实例",agenda_tab:"议程",date:"日期",description:"说明",year_tab:"今年",week_agenda_tab:"议程",grid_tab:"电网",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"
+}};
+//# sourceMappingURL=../sources/locale/locale_cn.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.xml
new file mode 100644
index 0000000000..1596bb3e7a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cn.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_cn.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.js
new file mode 100644
index 0000000000..b9ef43b1b2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],month_short:["Led","Ún","Bře","Dub","Kvě","Čer","Čec","Srp","Září","Říj","List","Pro"],day_full:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],day_short:["Ne","Po","Út","St","Čt","Pá","So"]},labels:{dhx_cal_today_button:"Dnes",day_tab:"Den",week_tab:"Týden",month_tab:"Měsíc",new_event:"Nová událost",icon_save:"Uložit",icon_cancel:"Zpět",icon_details:"Detail",
+icon_edit:"Edituj",icon_delete:"Smazat",confirm_closing:"",confirm_deleting:"Událost bude trvale smazána, opravdu?",section_description:"Poznámky",section_time:"Doba platnosti",confirm_recurring:"Přejete si upravit celou řadu opakovaných událostí?",section_recurring:"Opakování události",button_recurring:"Vypnuto",button_recurring_open:"Zapnuto",button_edit_series:"Edit series",button_edit_occurrence:"Upravit instance",agenda_tab:"Program",date:"Datum",description:"Poznámka",year_tab:"Rok",full_day:"Full day",
+week_agenda_tab:"Program",grid_tab:"Mřížka",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_cs.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.xml
new file mode 100644
index 0000000000..fa6387ddd1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_cs.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_cs.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.js
new file mode 100644
index 0000000000..c38c2a12a3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},labels:{dhx_cal_today_button:"Idag",day_tab:"Dag",week_tab:"Uge",month_tab:"Måned",new_event:"Ny begivenhed",icon_save:"Gem",icon_cancel:"Fortryd",
+icon_details:"Detaljer",icon_edit:"Tilret",icon_delete:"Slet",confirm_closing:"Dine rettelser vil gå tabt.. Er dy sikker?",confirm_deleting:"Bigivenheden vil blive slettet permanent. Er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",confirm_recurring:"Vil du tilrette hele serien af gentagne begivenheder?",section_recurring:"Gentag begivenhed",button_recurring:"Frakoblet",button_recurring_open:"Tilkoblet",button_edit_series:"Rediger serien",button_edit_occurrence:"Rediger en kopi",
+agenda_tab:"Dagsorden",date:"Dato",description:"Beskrivelse",year_tab:"Ã…r",week_agenda_tab:"Dagsorden",grid_tab:"Grid",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_da.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.xml
new file mode 100644
index 0000000000..1ae85db703
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_da.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_da.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.js
new file mode 100644
index 0000000000..5e931386de
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:[" Januar"," Februar"," März "," April"," Mai"," Juni"," Juli"," August"," September "," Oktober"," November "," Dezember"],month_short:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],day_full:["Sonntag","Montag","Dienstag"," Mittwoch"," Donnerstag","Freitag","Samstag"],day_short:["So","Mo","Di","Mi","Do","Fr","Sa"]},labels:{dhx_cal_today_button:"Heute",day_tab:"Tag",week_tab:"Woche",month_tab:"Monat",new_event:"neuer Eintrag",icon_save:"Speichern",
+icon_cancel:"Abbrechen",icon_details:"Details",icon_edit:"Ändern",icon_delete:"Löschen",confirm_closing:"",confirm_deleting:"Der Eintrag wird gelöscht",section_description:"Beschreibung",section_time:"Zeitspanne",full_day:"Ganzer Tag",confirm_recurring:"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?",section_recurring:"Wiederholung",button_recurring:"Aus",button_recurring_open:"An",button_edit_series:"Bearbeiten Sie die Serie",button_edit_occurrence:"Bearbeiten Sie eine Kopie",
+agenda_tab:"Agenda",date:"Datum",description:"Beschreibung",year_tab:"Jahre",week_agenda_tab:"Agenda",grid_tab:"Grid",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_de.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.xml
new file mode 100644
index 0000000000..6768665c25
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_de.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_de.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.js
new file mode 100644
index 0000000000..24257cf6d8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάϊος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],month_short:["ΙΑΝ","ΦΕΒ","ΜΑΡ","ΑΠΡ","ΜΑΙ","ΙΟΥΝ","ΙΟΥΛ","ΑΥΓ","ΣΕΠ","ΟΚΤ","ΝΟΕ","ΔΕΚ"],day_full:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Κυριακή"],day_short:["ΚΥ","ΔΕ","ΤΡ","ΤΕ","ΠΕ","ΠΑ","ΣΑ"]},labels:{dhx_cal_today_button:"Σήμερα",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:"Επεξεργασία ένα αντίγραφο",agenda_tab:"Ημερήσια Διάταξη",date:"Ημερομηνία",description:"Περιγραφή",year_tab:"Έτος",week_agenda_tab:"Ημερήσια Διάταξη",grid_tab:"Πλέγμα",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_el.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.xml
new file mode 100644
index 0000000000..2caf9247f4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_el.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_el.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.js
new file mode 100644
index 0000000000..5a61f5bf85
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["January","February","March","April","May","June","July","August","September","October","November","December"],month_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],day_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},labels:{dhx_cal_today_button:"Today",day_tab:"Day",week_tab:"Week",month_tab:"Month",new_event:"New event",icon_save:"Save",icon_cancel:"Cancel",
+icon_details:"Details",icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Event will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",full_day:"Full day",confirm_recurring:"Do you want to edit the whole set of repeated events?",section_recurring:"Repeat event",button_recurring:"Disabled",button_recurring_open:"Enabled",button_edit_series:"Edit series",button_edit_occurrence:"Edit occurrence",agenda_tab:"Agenda",date:"Date",
+description:"Description",year_tab:"Year",week_agenda_tab:"Agenda",grid_tab:"Grid",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_en.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.xml
new file mode 100644
index 0000000000..52ae442fba
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_en.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_en.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.js
new file mode 100644
index 0000000000..d1ae6638a7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],month_short:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],day_full:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],day_short:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"]},labels:{dhx_cal_today_button:"Hoy",day_tab:"Día",week_tab:"Semana",month_tab:"Mes",new_event:"Nuevo evento",icon_save:"Guardar",icon_cancel:"Cancelar",
+icon_details:"Detalles",icon_edit:"Editar",icon_delete:"Eliminar",confirm_closing:"",confirm_deleting:"El evento se borrará definitivamente, ¿continuar?",section_description:"Descripción",section_time:"Período",full_day:"Todo el día",confirm_recurring:"¿Desea modificar el conjunto de eventos repetidos?",section_recurring:"Repita el evento",button_recurring:"Impedido",button_recurring_open:"Permitido",button_edit_series:"Editar la serie",button_edit_occurrence:"Editar una copia",agenda_tab:"Día",date:"Fecha",
+description:"Descripción",year_tab:"Año",week_agenda_tab:"Día",grid_tab:"Reja",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_es.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.xml
new file mode 100644
index 0000000000..cbadbcb117
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_es.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_es.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.js
new file mode 100644
index 0000000000..f6218777ad
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kes&auml;kuu","Hein&auml;kuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],month_short:["Tam","Hel","Maa","Huh","Tou","Kes","Hei","Elo","Syy","Lok","Mar","Jou"],day_full:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],day_short:["Su","Ma","Ti","Ke","To","Pe","La"]},labels:{dhx_cal_today_button:"Tänään",day_tab:"Päivä",week_tab:"Viikko",month_tab:"Kuukausi",new_event:"Uusi tapahtuma",
+icon_save:"Tallenna",icon_cancel:"Peru",icon_details:"Tiedot",icon_edit:"Muokkaa",icon_delete:"Poista",confirm_closing:"",confirm_deleting:"Haluatko varmasti poistaa tapahtuman?",section_description:"Kuvaus",section_time:"Aikajakso",full_day:"Koko päivä",confirm_recurring:"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?",section_recurring:"Toista tapahtuma",button_recurring:"Ei k&auml;yt&ouml;ss&auml;",button_recurring_open:"K&auml;yt&ouml;ss&auml;",button_edit_series:"Muokkaa sarja",
+button_edit_occurrence:"Muokkaa kopio",agenda_tab:"Esityslista",date:"Päivämäärä",description:"Kuvaus",year_tab:"Vuoden",week_agenda_tab:"Esityslista",grid_tab:"Ritilä",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_fi.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.xml
new file mode 100644
index 0000000000..4f3c77565a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fi.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_fi.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.js
new file mode 100644
index 0000000000..a3233b152d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],month_short:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Aoû","Sep","Oct","Nov","Déc"],day_full:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],day_short:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"]},labels:{dhx_cal_today_button:"Aujourd'hui",day_tab:"Jour",week_tab:"Semaine",month_tab:"Mois",new_event:"Nouvel événement",icon_save:"Enregistrer",
+icon_cancel:"Annuler",icon_details:"Détails",icon_edit:"Modifier",icon_delete:"Effacer",confirm_closing:"",confirm_deleting:"L'événement sera effacé sans appel, êtes-vous sûr ?",section_description:"Description",section_time:"Période",full_day:"Journée complète",confirm_recurring:"Voulez-vous éditer toute une série d'évènements répétés?",section_recurring:"Périodicité",button_recurring:"Désactivé",button_recurring_open:"Activé",button_edit_series:"Modifier la série",button_edit_occurrence:"Modifier une copie",
+agenda_tab:"Jour",date:"Date",description:"Description",year_tab:"Année",week_agenda_tab:"Jour",grid_tab:"Grille",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_fr.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.xml
new file mode 100644
index 0000000000..8a7668df44
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_fr.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_fr.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.js
new file mode 100644
index 0000000000..2e9747af64
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],month_short:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],day_full:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],day_short:["א","ב","ג","ד","ה","ו","ש"]},labels:{dhx_cal_today_button:"היום",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:"תקופה",confirm_recurring:"האם ברצונך לשנות כל סדרת ארועים מתמשכים?",section_recurring:"להעתיק ארוע",button_recurring:"לא פעיל",button_recurring_open:"פעיל",full_day:"יום שלם",button_edit_series:"ערוך את הסדרה",button_edit_occurrence:"עריכת עותק",agenda_tab:"סדר יום",date:"תאריך",description:"תיאור",year_tab:"לשנה",week_agenda_tab:"סדר יום",grid_tab:"סורג",drag_to_create:"Drag to create",drag_to_move:"Drag to move",
+message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_he.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.xml
new file mode 100644
index 0000000000..aa61ed2c33
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_he.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_he.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.js
new file mode 100644
index 0000000000..b26a851b8f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],month_short:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],day_full:["Vasárnap","Hétfõ","Kedd","Szerda","Csütörtök","Péntek","szombat"],day_short:["Va","Hé","Ke","Sze","Csü","Pé","Szo"]},labels:{dhx_cal_today_button:"Ma",day_tab:"Nap",week_tab:"Hét",month_tab:"Hónap",new_event:"Új esemény",icon_save:"Mentés",icon_cancel:"Mégse",
+icon_details:"Részletek",icon_edit:"Szerkesztés",icon_delete:"Törlés",confirm_closing:"",confirm_deleting:"Az esemény törölve lesz, biztosan folytatja?",section_description:"Leírás",section_time:"Idõszak",full_day:"Egesz napos",confirm_recurring:"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?",section_recurring:"Esemény ismétlése",button_recurring:"Tiltás",button_recurring_open:"Engedélyezés",button_edit_series:"Edit series",button_edit_occurrence:"Szerkesztés bíróság",agenda_tab:"Napirend",
+date:"Dátum",description:"Leírás",year_tab:"Év",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_hu.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.xml
new file mode 100644
index 0000000000..5ea20355cf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_hu.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_hu.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.js
new file mode 100644
index 0000000000..7d3494bf06
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],day_full:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],day_short:["Ming","Sen","Sel","Rab","Kam","Jum","Sab"]},labels:{dhx_cal_today_button:"Hari Ini",day_tab:"Hari",week_tab:"Minggu",month_tab:"Bulan",new_event:"Acara Baru",icon_save:"Simpan",icon_cancel:"Batal",
+icon_details:"Detail",icon_edit:"Edit",icon_delete:"Hapus",confirm_closing:"",confirm_deleting:"Acara akan dihapus",section_description:"Keterangan",section_time:"Periode",full_day:"Hari penuh",confirm_recurring:"Apakah acara ini akan berulang?",section_recurring:"Acara Rutin",button_recurring:"Tidak Difungsikan",button_recurring_open:"Difungsikan",button_edit_series:"Mengedit seri",button_edit_occurrence:"Mengedit salinan",agenda_tab:"Agenda",date:"Tanggal",description:"Keterangan",year_tab:"Tahun",
+week_agenda_tab:"Agenda",grid_tab:"Tabel",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_id.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.xml
new file mode 100644
index 0000000000..00babda7e4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_id.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_id.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.js
new file mode 100644
index 0000000000..5eab698e13
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],month_short:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],day_full:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],day_short:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]},labels:{dhx_cal_today_button:"Oggi",day_tab:"Giorno",week_tab:"Settimana",month_tab:"Mese",new_event:"Nuovo evento",icon_save:"Salva",
+icon_cancel:"Chiudi",icon_details:"Dettagli",icon_edit:"Modifica",icon_delete:"Elimina",confirm_closing:"",confirm_deleting:"L'evento sarà eliminato, siete sicuri?",section_description:"Descrizione",section_time:"Periodo di tempo",full_day:"Intera giornata",confirm_recurring:"Vuoi modificare l'intera serie di eventi?",section_recurring:"Ripetere l'evento",button_recurring:"Disattivato",button_recurring_open:"Attivato",button_edit_series:"Modificare la serie",button_edit_occurrence:"Modificare una copia",
+agenda_tab:"Agenda",date:"Data",description:"Descrizione",year_tab:"Anni",week_agenda_tab:"Agenda",grid_tab:"Griglia",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_it.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.xml
new file mode 100644
index 0000000000..5c92c0f635
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_it.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_it.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.js
new file mode 100644
index 0000000000..470d3facd1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],month_short:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],day_full:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],day_short:["日","月","火","水","木","金","土"]},labels:{dhx_cal_today_button:"今日",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:"期間",confirm_recurring:"繰り返されているイベントを全て編集しますか?",section_recurring:"イベントを繰り返す",button_recurring:"無効",button_recurring_open:"有効",full_day:"終日",button_edit_series:"シリーズを編集します",button_edit_occurrence:"コピーを編集",agenda_tab:"議題は",date:"日付",description:"説明",year_tab:"今年",week_agenda_tab:"議題は",grid_tab:"グリッド",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_jp.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.xml
new file mode 100644
index 0000000000..8610ff4691
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_jp.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_jp.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.js
new file mode 100644
index 0000000000..b5bab33d3e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Mon","Tir","Ons","Tor","Fre","Lør"]},labels:{dhx_cal_today_button:"I dag",day_tab:"Dag",week_tab:"Uke",month_tab:"Måned",new_event:"Ny hendelse",icon_save:"Lagre",icon_cancel:"Avbryt",
+icon_details:"Detaljer",icon_edit:"Rediger",icon_delete:"Slett",confirm_closing:"",confirm_deleting:"Hendelsen vil bli slettet permanent. Er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",confirm_recurring:"Vil du forandre hele dette settet av repeterende hendelser?",section_recurring:"Repeter hendelsen",button_recurring:"Av",button_recurring_open:"PÃ¥",button_edit_series:"Rediger serien",button_edit_occurrence:"Redigere en kopi",agenda_tab:"Agenda",date:"Dato",description:"Beskrivelse",
+year_tab:"Ã…r",week_agenda_tab:"Agenda",grid_tab:"Grid",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_nb.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.xml
new file mode 100644
index 0000000000..ac7e756cf2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nb.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_nb.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.js
new file mode 100644
index 0000000000..819cae254d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],month_short:["Jan","Feb","mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],day_short:["Zo","Ma","Di","Wo","Do","Vr","Za"]},labels:{dhx_cal_today_button:"Vandaag",day_tab:"Dag",week_tab:"Week",month_tab:"Maand",new_event:"Nieuw item",icon_save:"Opslaan",icon_cancel:"Annuleren",
+icon_details:"Details",icon_edit:"Edit",icon_delete:"Verwijderen",confirm_closing:"",confirm_deleting:"Item zal permanent worden verwijderd, doorgaan?",section_description:"Beschrijving",section_time:"Tijd periode",full_day:"Hele dag",confirm_recurring:"Wilt u alle terugkerende items bijwerken?",section_recurring:"Item herhalen",button_recurring:"Uit",button_recurring_open:"Aan",button_edit_series:"Bewerk de serie",button_edit_occurrence:"Bewerk een kopie",agenda_tab:"Agenda",date:"Datum",description:"Omschrijving",
+year_tab:"Jaar",week_agenda_tab:"Agenda",grid_tab:"Tabel",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_nl.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.xml
new file mode 100644
index 0000000000..fe84a947e1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_nl.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_nl.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.js
new file mode 100644
index 0000000000..d5eda7511b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},labels:{dhx_cal_today_button:"Idag",day_tab:"Dag",week_tab:"Uke",month_tab:"Måned",new_event:"Ny",icon_save:"Lagre",icon_cancel:"Avbryt",icon_details:"Detaljer",
+icon_edit:"Endre",icon_delete:"Slett",confirm_closing:"Endringer blir ikke lagret, er du sikker?",confirm_deleting:"Oppføringen vil bli slettet, er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",full_day:"Full dag",confirm_recurring:"Vil du endre hele settet med repeterende oppføringer?",section_recurring:"Repeterende oppføring",button_recurring:"Ikke aktiv",button_recurring_open:"Aktiv",button_edit_series:"Rediger serien",button_edit_occurrence:"Redigere en kopi",agenda_tab:"Agenda",
+date:"Dato",description:"Beskrivelse",year_tab:"Ã…r",week_agenda_tab:"Agenda",grid_tab:"Grid",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_no.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.xml
new file mode 100644
index 0000000000..0aedb06670
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_no.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_no.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.js
new file mode 100644
index 0000000000..671b466650
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],month_short:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Paź","Lis","Gru"],day_full:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],day_short:["Nie","Pon","Wto","Śro","Czw","Pią","Sob"]},labels:{dhx_cal_today_button:"Dziś",day_tab:"Dzień",week_tab:"Tydzień",month_tab:"Miesiąc",new_event:"Nowe zdarzenie",
+icon_save:"Zapisz",icon_cancel:"Anuluj",icon_details:"Szczegóły",icon_edit:"Edytuj",icon_delete:"Usuń",confirm_closing:"",confirm_deleting:"Zdarzenie zostanie usunięte na zawsze, kontynuować?",section_description:"Opis",section_time:"Okres czasu",full_day:"Cały dzień",confirm_recurring:"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?",section_recurring:"Powtórz zdarzenie",button_recurring:"Nieaktywne",button_recurring_open:"Aktywne",button_edit_series:"Edytuj serię",button_edit_occurrence:"Edytuj kopię",
+agenda_tab:"Agenda",date:"Data",description:"Opis",year_tab:"Rok",week_agenda_tab:"Agenda",grid_tab:"Tabela",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_pl.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.xml
new file mode 100644
index 0000000000..9ab80c7658
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pl.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_pl.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.js
new file mode 100644
index 0000000000..3f46a290a3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],month_short:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],day_full:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],day_short:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},labels:{dhx_cal_today_button:"Hoje",day_tab:"Dia",week_tab:"Semana",month_tab:"Mês",new_event:"Novo evento",icon_save:"Salvar",icon_cancel:"Cancelar",
+icon_details:"Detalhes",icon_edit:"Editar",icon_delete:"Deletar",confirm_closing:"",confirm_deleting:"Tem certeza que deseja excluir?",section_description:"Descrição",section_time:"Período de tempo",full_day:"Dia inteiro",confirm_recurring:"Deseja editar todos esses eventos repetidos?",section_recurring:"Repetir evento",button_recurring:"Desabilitar",button_recurring_open:"Habilitar",button_edit_series:"Editar a série",button_edit_occurrence:"Editar uma cópia",agenda_tab:"Dia",date:"Data",description:"Descrição",
+year_tab:"Ano",week_agenda_tab:"Dia",grid_tab:"Grade",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_pt.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.xml
new file mode 100644
index 0000000000..892be5b09c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_pt.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_pt.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.js
new file mode 100644
index 0000000000..c3971b19b1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","November","December"],month_short:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],day_full:["Duminica","Luni","Marti","Miercuri","Joi","Vineri","Sambata"],day_short:["Du","Lu","Ma","Mi","Jo","Vi","Sa"]},labels:{dhx_cal_today_button:"Astazi",day_tab:"Zi",week_tab:"Saptamana",month_tab:"Luna",new_event:"Eveniment nou",icon_save:"Salveaza",icon_cancel:"Anuleaza",
+icon_details:"Detalii",icon_edit:"Editeaza",icon_delete:"Sterge",confirm_closing:"Schimbarile nu vor fi salvate, esti sigur?",confirm_deleting:"Evenimentul va fi sters permanent, esti sigur?",section_description:"Descriere",section_time:"Interval",full_day:"Toata ziua",confirm_recurring:"Vrei sa editezi toata seria de evenimente repetate?",section_recurring:"Repetare",button_recurring:"Dezactivata",button_recurring_open:"Activata",button_edit_series:"Editeaza serie",button_edit_occurrence:"Editeaza doar intrare",
+agenda_tab:"Agenda",date:"Data",description:"Descriere",year_tab:"An",week_agenda_tab:"Agenda",grid_tab:"Lista",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_ro.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.xml
new file mode 100644
index 0000000000..11e9abf22b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ro.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ro.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.js
new file mode 100644
index 0000000000..bc914230d1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Январь","Февраль","Март","Апрель","Maй","Июнь","Июль","Август","Сентябрь","Oктябрь","Ноябрь","Декабрь"],month_short:["Янв","Фев","Maр","Aпр","Maй","Июн","Июл","Aвг","Сен","Окт","Ноя","Дек"],day_full:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],day_short:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"]},labels:{dhx_cal_today_button:"Сегодня",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:"Редактировать экземпляр",agenda_tab:"Список",
+date:"Дата",description:"Описание",year_tab:"Год",week_agenda_tab:"Список",grid_tab:"Таблица",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_ru.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.xml
new file mode 100644
index 0000000000..c01db1bbe3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ru.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ru.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.js
new file mode 100644
index 0000000000..52a4918f36
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],day_short:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"]},labels:{dhx_cal_today_button:"Danes",day_tab:"Dan",week_tab:"Teden",month_tab:"Mesec",new_event:"Nov dogodek",icon_save:"Shrani",icon_cancel:"Prekliči",
+icon_details:"Podrobnosti",icon_edit:"Uredi",icon_delete:"Izbriši",confirm_closing:"",confirm_deleting:"Dogodek bo izbrisan. Želite nadaljevati?",section_description:"Opis",section_time:"Časovni okvir",full_day:"Ves dan",confirm_recurring:"Želite urediti celoten set ponavljajočih dogodkov?",section_recurring:"Ponovi dogodek",button_recurring:"Onemogočeno",button_recurring_open:"Omogočeno",button_edit_series:"Edit series",button_edit_occurrence:"Edit occurrence",agenda_tab:"Zadeva",date:"Datum",description:"Opis",
+year_tab:"Leto",week_agenda_tab:"Zadeva",grid_tab:"Miza",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_si.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.xml
new file mode 100644
index 0000000000..b2fbe30ed4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_si.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_si.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.js
new file mode 100644
index 0000000000..ffe9e81ae2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],month_short:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sept","Okt","Nov","Dec"],day_full:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],day_short:["Ne","Po","Ut","St","Št","Pi","So"]},labels:{dhx_cal_today_button:"Dnes",day_tab:"Deň",week_tab:"Týždeň",month_tab:"Mesiac",new_event:"Nová udalosť",icon_save:"Uložiť",icon_cancel:"Späť",
+icon_details:"Detail",icon_edit:"Edituj",icon_delete:"Zmazať",confirm_closing:"Vaše zmeny nebudú uložené. Skutočne?",confirm_deleting:"Udalosť bude natrvalo vymazaná. Skutočne?",section_description:"Poznámky",section_time:"Doba platnosti",confirm_recurring:"Prajete si upraviť celú radu opakovaných udalostí?",section_recurring:"Opakovanie udalosti",button_recurring:"Vypnuté",button_recurring_open:"Zapnuté",button_edit_series:"Upraviť opakovania",button_edit_occurrence:"Upraviť inštancie",agenda_tab:"Program",
+date:"Dátum",description:"Poznámka",year_tab:"Rok",full_day:"Celý deň",week_agenda_tab:"Program",grid_tab:"Mriežka",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_sk.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.xml
new file mode 100644
index 0000000000..22e1804c8b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sk.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_sk.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.js
new file mode 100644
index 0000000000..73704d25d5
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],day_short:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},labels:{dhx_cal_today_button:"Idag",day_tab:"Dag",week_tab:"Vecka",month_tab:"Månad",new_event:"Ny händelse",icon_save:"Spara",icon_cancel:"Ångra",
+icon_details:"Detajer",icon_edit:"Ändra",icon_delete:"Ta bort",confirm_closing:"",confirm_deleting:"Är du säker på att du vill ta bort händelsen permanent?",section_description:"Beskrivning",section_time:"Tid",full_day:"Hela dagen",confirm_recurring:"Vill du redigera hela serien med repeterande händelser?",section_recurring:"Upprepa händelse",button_recurring:"Inaktiverat",button_recurring_open:"Aktiverat",button_edit_series:"Redigera serien",button_edit_occurrence:"Redigera en kopia",agenda_tab:"Dagordning",
+date:"Datum",description:"Beskrivning",year_tab:"Ã…r",week_agenda_tab:"Dagordning",grid_tab:"Galler",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_sv.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.xml
new file mode 100644
index 0000000000..49dd0f65ef
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_sv.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_sv.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.js
new file mode 100644
index 0000000000..d95908f1fc
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Ocak","Þubat","Mart","Nisan","Mayýs","Haziran","Temmuz","Aðustos","Eylül","Ekim","Kasým","Aralýk"],month_short:["Oca","Þub","Mar","Nis","May","Haz","Tem","Aðu","Eyl","Eki","Kas","Ara"],day_full:["Pazar","Pazartes,","Salý","Çarþamba","Perþembe","Cuma","Cumartesi"],day_short:["Paz","Pts","Sal","Çar","Per","Cum","Cts"]},labels:{dhx_cal_today_button:"Bugün",day_tab:"Gün",week_tab:"Hafta",month_tab:"Ay",new_event:"Uygun",icon_save:"Kaydet",icon_cancel:"Ýptal",icon_details:"Detaylar",
+icon_edit:"Düzenle",icon_delete:"Sil",confirm_closing:"",confirm_deleting:"Etkinlik silinecek, devam?",section_description:"Açýklama",section_time:"Zaman aralýðý",full_day:"Tam gün",confirm_recurring:"Tüm tekrar eden etkinlikler silinecek, devam?",section_recurring:"Etkinliði tekrarla",button_recurring:"Pasif",button_recurring_open:"Aktif",button_edit_series:"Dizi düzenleme",button_edit_occurrence:"Bir kopyasını düzenleyin",agenda_tab:"Ajanda",date:"Tarih",description:"Açýklama",year_tab:"Yýl",week_agenda_tab:"Ajanda",
+grid_tab:"Izgara",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_tr.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.xml
new file mode 100644
index 0000000000..2f875e9a0c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_tr.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_tr.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.js
new file mode 100644
index 0000000000..96d4e6dac7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.js
@@ -0,0 +1,12 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale={date:{month_full:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],month_short:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],day_full:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],day_short:["Нед","Пон","Вів","Сер","Чет","Птн","Суб"]},labels:{dhx_cal_today_button:"Сьогодні",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:"Редагувати примірник",
+agenda_tab:"Перелік",date:"Дата",description:"Опис",year_tab:"Рік",week_agenda_tab:"Перелік",grid_tab:"Таблиця",drag_to_create:"Drag to create",drag_to_move:"Drag to move",message_ok:"OK",message_cancel:"Cancel"}};
+//# sourceMappingURL=../sources/locale/locale_ua.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.xml
new file mode 100644
index 0000000000..c0373c321b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/locale_ua.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ua.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring.xml
new file mode 100644
index 0000000000..76f0f6f13e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>recurring</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.js
new file mode 100644
index 0000000000..849aee0f81
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Дзень</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Тыдзень</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Месяц</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Год</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Кожны</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />дзень<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Кожны працоўны дзень</label> </div> <div style="display:none;" id="dhx_repeat_week"> Паўтараць кожны<input class="dhx_repeat_text" type="text" name="week_count" value="1" />тыдзень<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Панядзелак</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Чацвер</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Аўторак</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Пятніцу</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Сераду&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Суботу</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Нядзелю</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Паўтараць</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" /> чысла кожнага<input class="dhx_repeat_text" type="text" name="month_count" value="1" />месяцу<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Панядзелак<option value="2">Аўторак<option value="3">Серада<option value="4">Чацвер<option value="5">Пятніца<option value="6">Субота<option value="0">Нядзеля</select>кожны <input class="dhx_repeat_text" type="text" name="month_count2" value="1" />месяц<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/></label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />день<select name="year_month"><option value="0" selected >Студзеня<option value="1">Лютага<option value="2">Сакавіка<option value="3">Красавіка<option value="4">Мая<option value="5">Чэрвеня<option value="6">Ліпeня<option value="7">Жніўня<option value="8">Верасня<option value="9">Кастрычніка<option value="10">Лістапада<option value="11">Снежня</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Панядзелак<option value="2">Аўторак<option value="3">Серада<option value="4">Чацвер<option value="5">Пятніца<option value="6">Субота<option value="0">Нядзеля</select><select name="year_month2"><option value="0" selected >Студзеня<option value="1">Лютага<option value="2">Сакавіка<option value="3">Красавіка<option value="4">Мая<option value="5">Чэрвеня<option value="6">Лiпeня<option value="7">Жніўня<option value="8">Верасня<option value="9">Кастрычніка<option value="10">Лістапада<option value="11">Снежня</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Без даты заканчэння</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" /></label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />паўтораў<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Да </label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_be.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.xml
new file mode 100644
index 0000000000..8080e57d6b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_be.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_be.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.js
new file mode 100644
index 0000000000..0591f44ab0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />按天</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>按周</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />按月</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />按年</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>每</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />天<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>每个工作日</label> </div> <div style="display:none;" id="dhx_repeat_week"> 重复 每<input class="dhx_repeat_text" type="text" name="week_count" value="1" />星期的:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />星期一</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />星期四</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />星期二</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />星期五</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />星期三</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />星期六</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />星期日</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>重复</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />日 每<input class="dhx_repeat_text" type="text" name="month_count" value="1" />月<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>在</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >星期一<option value="2">星期二<option value="3">星期三<option value="4">星期四<option value="5">星期五<option value="6">星期六<option value="0">星期日</select>每<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />月<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>每</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />日<select name="year_month"><option value="0" selected >一月<option value="1">二月<option value="2">三月<option value="3">四月<option value="4">五月<option value="5">六月<option value="6">七月<option value="7">八月<option value="8">九月<option value="9">十月<option value="10">十一月<option value="11">十二月</select>月<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>在</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >星期一<option value="2">星期二<option value="3">星期三<option value="4">星期四<option value="5">星期五<option value="6">星期六<option value="7">星期日</select>的<select name="year_month2"><option value="0" selected >一月<option value="1">二月<option value="2">三月<option value="3">四月<option value="4">五月<option value="5">六月<option value="6">七月<option value="7">八月<option value="8">九月<option value="9">十月<option value="10">十一月<option value="11">十二月</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>无结束日期</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />重复</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />次结束<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />结束于</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_cn.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.xml
new file mode 100644
index 0000000000..f32e408f72
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cn.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_cn.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.js
new file mode 100644
index 0000000000..8ec26994f7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"><form><div class="dhx_repeat_left"><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Denně</label><br /><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Týdně</label><br /><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Měsíčně</label><br /><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Ročně</label></div><div class="dhx_repeat_divider"></div><div class="dhx_repeat_center"><div style="display:none;" id="dhx_repeat_day"><label>Opakované:<br/></label><label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>každý</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />Den<br /><label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>pracovní dny</label></div><div style="display:none;" id="dhx_repeat_week"> Opakuje každých<input class="dhx_repeat_text" type="text" name="week_count" value="1" />Týdnů na:<br /><table class="dhx_repeat_days"><tr> <td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Pondělí</label><br /><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Čtvrtek</label> </td> <td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Úterý</label><br /><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Pátek</label> </td> <td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Středa</label><br /><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sobota</label> </td> <td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Neděle </label><br /><br /> </td></tr></table></div><div id="dhx_repeat_month"><label>Opakované:<br/></label><label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>u každého</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />Den každého<input class="dhx_repeat_text" type="text" name="month_count" value="1" />Měsíc<br /><label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>na</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Pondělí<option value="2">Úterý<option value="3">Středa<option value="4">Čtvrtek<option value="5">Pátek<option value="6">Sobota<option value="0">Neděle</select>každý<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />Měsíc<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label>Opakované:</label> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>u každého</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />Den v<select name="year_month"><option value="0" selected >Leden<option value="1">Únor<option value="2">Březen<option value="3">Duben<option value="4">Květen<option value="5">Červen<option value="6">Červenec<option value="7">Srpen<option value="8">Září<option value="9">Říjen<option value="10">Listopad<option value="11">Prosinec</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>na</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Pondělí<option value="2">Úterý<option value="3">Středa<option value="4">Čtvrtek<option value="5">Pátek<option value="6">Sobota<option value="0">Neděle</select>v<select name="year_month2"><option value="0" selected >Leden<option value="1">Únor<option value="2">Březen<option value="3">Duben<option value="4">Květen<option value="5">Červen<option value="6">Červenec<option value="7">Srpen<option value="8">Září<option value="9">Říjen<option value="10">Listopad<option value="11">Prosinec</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>bez data ukončení</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />po</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />Události<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Konec</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /></div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_cs.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.xml
new file mode 100644
index 0000000000..476be2eee6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_cs.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_cs.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.js
new file mode 100644
index 0000000000..05b12bb17c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daglig</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Ugenlig</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Månedlig</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Årlig</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label>Gentager sig:<br/></label> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Hver</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dag<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>På hver arbejdsdag</label> </div> <div style="display:none;" id="dhx_repeat_week"> Gentager sig hver<input class="dhx_repeat_text" type="text" name="week_count" value="1" />uge på følgende dage:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Mandag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Torsdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tirsdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Fredag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Onsdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Lørdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Søndag</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label>Gentager sig:<br/></label> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Hver den</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" /> i hver<input class="dhx_repeat_text" type="text" name="month_count" value="1" />måned<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Den</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Mandag<option value="2">Tirsdag<option value="3">Onsdag<option value="4">Torsdag<option value="5">Fredag<option value="6">Lørdag<option value="0">Søndag</select>hver<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />måned<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label>Gentager sig:</label> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>På hver</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dag i<select name="year_month"><option value="0" selected >Januar<option value="1">Februar<option value="2">März<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Dezember</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Den</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Mandag<option value="2">Tirsdag<option value="3">Onsdag<option value="4">Torsdag<option value="5">Fredag<option value="6">Lørdag<option value="0">Søndag</select>i<select name="year_month2"><option value="0" selected >Januar<option value="1">Februar<option value="2">März<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Dezember</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Ingen slutdato</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Efter</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />gentagelse<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Slut</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_da.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.xml
new file mode 100644
index 0000000000..993b6cd452
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_da.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_da.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.js
new file mode 100644
index 0000000000..dc577393a6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Täglich</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Wöchentlich</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monatlich</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Jährlich</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label>Wiederholt sich:<br/></label> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>jeden</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />Tag<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>an jedem Arbeitstag</label> </div> <div style="display:none;" id="dhx_repeat_week"> Wiederholt sich jede<input class="dhx_repeat_text" type="text" name="week_count" value="1" />Woche am:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Montag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Donnerstag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Dienstag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Freitag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Mittwoch</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Samstag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sonntag</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label>Wiederholt sich:<br/></label> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>an jedem</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />Tag eines jeden<input class="dhx_repeat_text" type="text" name="month_count" value="1" />Monats<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>am</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Montag<option value="2">Dienstag<option value="3">Mittwoch<option value="4">Donnerstag<option value="5">Freitag<option value="6">Samstag<option value="0">Sonntag</select>jeden<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />Monats<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label>Wiederholt sich:</label> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>an jedem</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />Tag im<select name="year_month"><option value="0" selected >Januar<option value="1">Februar<option value="2">März<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Dezember</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>am</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Montag<option value="2">Dienstag<option value="3">Mittwoch<option value="4">Donnerstag<option value="5">Freitag<option value="6">Samstag<option value="0">Sonntag</select>im<select name="year_month2"><option value="0" selected >Januar<option value="1">Februar<option value="2">März<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Dezember</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>kein Enddatum</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />nach</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />Ereignissen<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Schluß</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_de.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.xml
new file mode 100644
index 0000000000..0d0d29a87b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_de.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_de.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.js
new file mode 100644
index 0000000000..299a22a09c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Ημερησίως</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Εβδομαδιαίως</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Μηνιαίως</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Ετησίως</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Κάθε</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />ημέρα<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Κάθε εργάσιμη</label> </div> <div style="display:none;" id="dhx_repeat_week"> Επανάληψη κάθε<input class="dhx_repeat_text" type="text" name="week_count" value="1" />εβδομάδα τις επόμενες ημέρες:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Δευτέρα</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Πέμπτη</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Τρίτη</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Παρασκευή</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Τετάρτη</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Σάββατο</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Κυριακή</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Επανάληψη</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />ημέρα κάθε<input class="dhx_repeat_text" type="text" name="month_count" value="1" />μήνα<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Την</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Δευτέρα<option value="2">Τρίτη<option value="3">Τετάρτη<option value="4">Πέμπτη<option value="5">Παρασκευή<option value="6">Σάββατο<option value="0">Κυριακή</select>κάθε<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />μήνα<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Κάθε</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />ημέρα<select name="year_month"><option value="0" selected >Ιανουάριος<option value="1">Φεβρουάριος<option value="2">Μάρτιος<option value="3">Απρίλιος<option value="4">Μάϊος<option value="5">Ιούνιος<option value="6">Ιούλιος<option value="7">Αύγουστος<option value="8">Σεπτέμβριος<option value="9">Οκτώβριος<option value="10">Νοέμβριος<option value="11">Δεκέμβριος</select>μήνα<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Την</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Δευτέρα<option value="2">Τρίτη<option value="3">Τετάρτη<option value="4">Πέμπτη<option value="5">Παρασκευή<option value="6">Σάββατο<option value="7">Κυριακή</select>του<select name="year_month2"><option value="0" selected >Ιανουάριος<option value="1">Φεβρουάριος<option value="2">Μάρτιος<option value="3">Απρίλιος<option value="4">Μάϊος<option value="5">Ιούνιος<option value="6">Ιούλιος<option value="7">Αύγουστος<option value="8">Σεπτέμβριος<option value="9">Οκτώβριος<option value="10">Νοέμβριος<option value="11">Δεκέμβριος</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Χωρίς ημερομηνία λήξεως</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Μετά από</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />επαναλήψεις<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Λήγει την</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_el.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.xml
new file mode 100644
index 0000000000..e765ec94ce
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_el.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_el.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.js
new file mode 100644
index 0000000000..7e2c568821
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daily</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Weekly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monthly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Yearly</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />day<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Every workday</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repeat every<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week next days:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Monday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Thursday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tuesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Friday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Wednesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Saturday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunday</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeat</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />day every<input class="dhx_repeat_text" type="text" name="month_count" value="1" />month<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="0">Sunday</select>every<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />month<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />day<select name="year_month"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select>month<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="7">Sunday</select>of<select name="year_month2"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>No end date</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />After</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />End by</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_en.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.xml
new file mode 100644
index 0000000000..dbfa026768
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_en.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_en.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.js
new file mode 100644
index 0000000000..dbf67f62c1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Diariamente</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Semanalment</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mensualmente</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Anualmente</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Cada</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dia<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Cada jornada de trabajo</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repetir cada<input class="dhx_repeat_text" type="text" name="week_count" value="1" />semana:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Lunes</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Jeuves</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Martes</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Viernes</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Miércoles</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sabado</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Domingo</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repita</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />dia cada <input class="dhx_repeat_text" type="text" name="month_count" value="1" />mes<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>El</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Lunes<option value="2">Martes<option value="3">Miércoles<option value="4">Jeuves<option value="5">Viernes<option value="6">Sabado<option value="0">Domingo</select>cada<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mes<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Cada</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dia<select name="year_month"><option value="0" selected >Enero<option value="1">Febrero<option value="2">Маrzo<option value="3">Аbril<option value="4">Mayo<option value="5">Junio<option value="6">Julio<option value="7">Аgosto<option value="8">Setiembre<option value="9">Octubre<option value="10">Noviembre<option value="11">Diciembre</select>mes<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>El</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Lunes<option value="2">Martes<option value="3">Miércoles<option value="4">Jeuves<option value="5">Viernes<option value="6">Sabado<option value="0">Domingo</select>del<select name="year_month2"><option value="0" selected >Enero<option value="1">Febrero<option value="2">Маrzo<option value="3">Аbril<option value="4">Mayo<option value="5">Junio<option value="6">Julio<option value="7">Аgosto<option value="8">Setiembre<option value="9">Octubre<option value="10">Noviembre<option value="11">Diciembre</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Sin fecha de finalización</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Después de</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurencias<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Fin</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_es.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.xml
new file mode 100644
index 0000000000..d404a099ad
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_es.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_es.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.js
new file mode 100644
index 0000000000..8fb66b3727
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />P&auml;ivitt&auml;in</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Viikoittain</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Kuukausittain</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Vuosittain</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Joka</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />p&auml;iv&auml;<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Joka arkip&auml;iv&auml;</label> </div> <div style="display:none;" id="dhx_repeat_week">Toista joka<input class="dhx_repeat_text" type="text" name="week_count" value="1" />viikko n&auml;in&auml; p&auml;ivin&auml;:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Maanantai</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Torstai</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tiistai</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Perjantai</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Keskiviikko</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Lauantai</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunnuntai</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Toista</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />p&auml;iv&auml;n&auml; joka<input class="dhx_repeat_text" type="text" name="month_count" value="1" />kuukausi<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Maanantai<option value="2">Tiistai<option value="3">Keskiviikko<option value="4">Torstai<option value="5">Perjantai<option value="6">Lauantai<option value="0">Sunnuntai</select>joka<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />kuukausi<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Joka</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />p&auml;iv&auml;<select name="year_month"><option value="0" selected >Tammikuu<option value="1">Helmikuu<option value="2">Maaliskuu<option value="3">Huhtikuu<option value="4">Toukokuu<option value="5">Kes&auml;kuu<option value="6">Hein&auml;kuu<option value="7">Elokuu<option value="8">Syyskuu<option value="9">Lokakuu<option value="10">Marraskuu<option value="11">Joulukuu</select>kuukausi<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Maanantai<option value="2">Tiistai<option value="3">Keskiviikko<option value="4">Torstai<option value="5">Perjantai<option value="6">Lauantai<option value="0">Sunnuntai</select><select name="year_month2"><option value="0" selected >Tammikuu<option value="1">Helmikuu<option value="2">Maaliskuu<option value="3">Huhtikuu<option value="4">Toukokuu<option value="5">Kes&auml;kuu<option value="6">Hein&auml;kuu<option value="7">Elokuu<option value="8">Syyskuu<option value="9">Lokakuu<option value="10">Marraskuu<option value="11">Joulukuu</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Ei loppumisaikaa</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" /></label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />Toiston j&auml;lkeen<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Loppuu</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_fi.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.xml
new file mode 100644
index 0000000000..c2c3fbbeea
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fi.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_fi.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.js
new file mode 100644
index 0000000000..7dd4e1f587
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Quotidienne</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Hebdomadaire</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mensuelle</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Annuelle</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Chaque</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />jour<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Chaque journée de travail</label> </div> <div style="display:none;" id="dhx_repeat_week"> Répéter toutes les<input class="dhx_repeat_text" type="text" name="week_count" value="1" />semaine:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Lundi</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Jeudi</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Mardi</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Vendredi</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Mercredi</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Samedi</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Dimanche</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Répéter</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />jour chaque<input class="dhx_repeat_text" type="text" name="month_count" value="1" />mois<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Le</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Lundi<option value="2">Mardi<option value="3">Mercredi<option value="4">Jeudi<option value="5">Vendredi<option value="6">Samedi<option value="0">Dimanche</select>chaque<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mois<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Chaque</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />jour<select name="year_month"><option value="0" selected >Janvier<option value="1">Février<option value="2">Mars<option value="3">Avril<option value="4">Mai<option value="5">Juin<option value="6">Juillet<option value="7">Août<option value="8">Septembre<option value="9">Octobre<option value="10">Novembre<option value="11">Décembre</select>mois<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Le</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Lundi<option value="2">Mardi<option value="3">Mercredi<option value="4">Jeudi<option value="5">Vendredi<option value="6">Samedi<option value="0">Dimanche</select>du<select name="year_month2"><option value="0" selected >Janvier<option value="1">Février<option value="2">Mars<option value="3">Avril<option value="4">Mai<option value="5">Juin<option value="6">Juillet<option value="7">Août<option value="8">Septembre<option value="9">Octobre<option value="10">Novembre<option value="11">Décembre</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Pas de date d&quot;achèvement</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Après</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Fin</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_fr.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.xml
new file mode 100644
index 0000000000..021d45b9fd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_fr.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_fr.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.js
new file mode 100644
index 0000000000..0a76e83fbe
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Quotidiano</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Settimanale</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mensile</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Annuale</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Ogni</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />giorno<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Ogni giornata lavorativa</label> </div> <div style="display:none;" id="dhx_repeat_week"> Ripetere ogni<input class="dhx_repeat_text" type="text" name="week_count" value="1" />settimana:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Lunedì</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Jovedì</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Martedì</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Venerdì</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Mercoledì</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sabato</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Domenica</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Ripetere</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />giorno ogni<input class="dhx_repeat_text" type="text" name="month_count" value="1" />mese<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Il</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Lunedì<option value="2">Martedì<option value="3">Mercoledì<option value="4">Jovedì<option value="5">Venerdì<option value="6">Sabato<option value="0">Domenica</select>ogni<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mese<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Ogni</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />giorno<select name="year_month"><option value="0" selected >Gennaio<option value="1">Febbraio<option value="2">Marzo<option value="3">Aprile<option value="4">Maggio<option value="5">Jiugno<option value="6">Luglio<option value="7">Agosto<option value="8">Settembre<option value="9">Ottobre<option value="10">Novembre<option value="11">Dicembre</select>mese<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Il</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Lunedì<option value="2">Martedì<option value="3">Mercoledì<option value="4">Jovedì<option value="5">Venerdì<option value="6">Sabato<option value="0">Domenica</select>del<select name="year_month2"><option value="0" selected >Gennaio<option value="1">Febbraio<option value="2">Marzo<option value="3">Aprile<option value="4">Maggio<option value="5">Jiugno<option value="6">Luglio<option value="7">Agosto<option value="8">Settembre<option value="9">Ottobre<option value="10">Novembre<option value="11">Dicembre</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Senza data finale</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Dopo</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occorenze<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Fine</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_it.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.xml
new file mode 100644
index 0000000000..f7b3073898
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_it.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_it.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.js
new file mode 100644
index 0000000000..7117745582
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daglig</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Ukentlig</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Månedlig</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Årlig</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label>Gjenta:<br/></label> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Hver</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dag<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Alle hverdager</label> </div> <div style="display:none;" id="dhx_repeat_week"> Gjentas hver<input class="dhx_repeat_text" type="text" name="week_count" value="1" />uke på:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Mandag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Torsdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tirsdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Fredag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Onsdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Lørdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sondag</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label>Gjenta:<br/></label> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>På hver</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />dag hver<input class="dhx_repeat_text" type="text" name="month_count" value="1" />måned<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>På</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Mandag<option value="2">Tirsdag<option value="3">Onsdag<option value="4">Torsdag<option value="5">Fredag<option value="6">Lørdag<option value="0">Søndag</select>hver<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />måned<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label>Gjenta:</label> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>på hver</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dag i<select name="year_month"><option value="0" selected >Januar<option value="1">Februar<option value="2">Mars<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Desember</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>på</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Mandag<option value="2">Tirsdag<option value="3">Onsdag<option value="4">Torsdag<option value="5">Fredag<option value="6">Lørdag<option value="0">Søndag</select>i<select name="year_month2"><option value="0" selected >Januar<option value="1">Februar<option value="2">Mars<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Desember</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Ingen sluttdato</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Etter</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />forekomst<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Stop den</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_nb.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.xml
new file mode 100644
index 0000000000..37d2957e97
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nb.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_nb.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.js
new file mode 100644
index 0000000000..7b504fc282
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Dagelijks</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Wekelijks</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Maandelijks</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Jaarlijks</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Elke</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dag(en)<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Elke werkdag</label> </div> <div style="display:none;" id="dhx_repeat_week"> Herhaal elke<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week op de volgende dagen:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Maandag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Donderdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Dinsdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Vrijdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Woensdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Zaterdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Zondag</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Herhaal</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />dag iedere<input class="dhx_repeat_text" type="text" name="month_count" value="1" />maanden<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Op</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"> <option value="1">Maandag <option value="2">Dinsdag <option value="3">Woensdag <option value="4">Donderdag <option value="5">Vrijdag <option value="6">Zaterdag <option value="0">Zondag </select>iedere<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />maanden<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Iedere</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dag<select name="year_month"><option value="0" selected >Januari<option value="1">Februari<option value="2">Maart<option value="3">April<option value="4">Mei<option value="5">Juni<option value="6">Juli<option value="7">Augustus<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">December</select>maand<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Op</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Maandag<option value="2">Dinsdag<option value="3">Woensdag<option value="4">Donderdag<option value="5">Vrijdag<option value="6">Zaterdag<option value="7">Zondag</select>van<select name="year_month2"><option value="0" selected >Januari<option value="1">Februari<option value="2">Maart<option value="3">April<option value="4">Mei<option value="5">Juni<option value="6">Juli<option value="7">Augustus<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Geen eind datum</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Na</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />keren<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Eindigd per</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_nl.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.xml
new file mode 100644
index 0000000000..06e55b2020
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_nl.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_nl.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.js
new file mode 100644
index 0000000000..512fab2dab
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Codziennie</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Co tydzie</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Co miesic</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Co rok</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Kadego</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dnia<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Kadego dnia roboczego</label> </div> <div style="display:none;" id="dhx_repeat_week"> Powtarzaj kadego<input class="dhx_repeat_text" type="text" name="week_count" value="1" />tygodnia w dni:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Poniedziaek</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Czwartek</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Wtorek</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Pitek</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />roda</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sobota</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Niedziela</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Powtrz</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />dnia kadego<input class="dhx_repeat_text" type="text" name="month_count" value="1" />miesica<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>W</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Poniedziaek<option value="2">Wtorek<option value="3">roda<option value="4">Czwartek<option value="5">Pitek<option value="6">Sobota<option value="0">Niedziela</select>kadego<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />miesica<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Kadego</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dnia miesica<select name="year_month"><option value="0" selected >Stycznia<option value="1">Lutego<option value="2">Marca<option value="3">Kwietnia<option value="4">Maja<option value="5">Czerwca<option value="6">Lipca<option value="7">Sierpnia<option value="8">Wrzenia<option value="9">Padziernka<option value="10">Listopada<option value="11">Grudnia</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>W</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Poniedziaek<option value="2">Wtorek<option value="3">rod<option value="4">Czwartek<option value="5">Pitek<option value="6">Sobot<option value="7">Niedziel</select>miesica<select name="year_month2"><option value="0" selected >Stycznia<option value="1">Lutego<option value="2">Marca<option value="3">Kwietnia<option value="4">Maja<option value="5">Czerwca<option value="6">Lipca<option value="7">Sierpnia<option value="8">Wrzenia<option value="9">Padziernka<option value="10">Listopada<option value="11">Grudnia</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Bez daty kocowej</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Po</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />wystpieniu/ach<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Zakocz w</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_pl.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.xml
new file mode 100644
index 0000000000..f0caae40b7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pl.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_pl.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.js
new file mode 100644
index 0000000000..eba1e5ce08
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Diário</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Semanal</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mensal</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Anual</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Cada</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dia(s)<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Cada trabalho diário</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repita cada<input class="dhx_repeat_text" type="text" name="week_count" value="1" />semana:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Segunda</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Quinta</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Terça</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Sexta</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Quarta</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sábado</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Domingo</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repetir</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />todo dia<input class="dhx_repeat_text" type="text" name="month_count" value="1" />mês<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Em</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Segunda<option value="2">Terça<option value="3">Quarta<option value="4">Quinta<option value="5">Sexta<option value="6">Sábado<option value="0">Domingo</select>todo<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mês<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Todo</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dia<select name="year_month"><option value="0" selected >Janeiro<option value="1">Fevereiro<option value="2">Março<option value="3">Abril<option value="4">Maio<option value="5">Junho<option value="6">Julho<option value="7">Agosto<option value="8">Setembro<option value="9">Outubro<option value="10">Novembro<option value="11">Dezembro</select>mês<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Em</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Segunda<option value="2">Terça<option value="3">Quarta<option value="4">Quinta<option value="5">Sexta<option value="6">Sábado<option value="7">Domingo</select>of<select name="year_month2"><option value="0" selected >Janeiro<option value="1">Fevereiro<option value="2">Março<option value="3">Abril<option value="4">Maio<option value="5">Junho<option value="6">Julho<option value="7">Agosto<option value="8">Setembro<option value="9">Outubro<option value="10">Novembro<option value="11">Dezembro</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Sem data final</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Depois</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />ocorrências<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Fim</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_pt.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.xml
new file mode 100644
index 0000000000..c5ea21b6bd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_pt.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_pt.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.js
new file mode 100644
index 0000000000..d5fbf1ef21
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Zilnic</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Saptamanal</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Lunar</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Anual</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>La fiecare</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />zi(le)<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Fiecare zi lucratoare</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repeta la fiecare<input class="dhx_repeat_text" type="text" name="week_count" value="1" />saptamana in urmatoarele zile:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Luni</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Joi</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Marti</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Vineri</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Miercuri</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sambata</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Duminica</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeta in</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />zi la fiecare<input class="dhx_repeat_text" type="text" name="month_count" value="1" />luni<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>In a</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" />zi de<select name="month_day2"><option value="1" selected >Luni<option value="2">Marti<option value="3">Miercuri<option value="4">Joi<option value="5">Vineri<option value="6">Sambata<option value="0">Duminica</select>la fiecare<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />luni<br /> </div> <div id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>In</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />zi a lunii<select name="year_month"><option value="0" selected >Ianuarie<option value="1">Februarie<option value="2">Martie<option value="3">Aprilie<option value="4">Mai<option value="5">Iunie<option value="6">Iulie<option value="7">August<option value="8">Septembrie<option value="9">Octombrie<option value="10">Noiembrie<option value="11">Decembrie</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>In</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" />zi de<select name="year_day2"><option value="1" selected >Luni<option value="2">Marti<option value="3">Miercuri<option value="4">Joi<option value="5">Vineri<option value="6">Sambata<option value="7">Duminica</select>a lunii<select name="year_month2"><option value="0" selected >Ianuarie<option value="1">Februarie<option value="2">Martie<option value="3">Aprilie<option value="4">Mai<option value="5">Iunie<option value="6">Iulie<option value="7">August<option value="8">Septembrie<option value="9">Octombrie<option value="10">Noiembrie<option value="11">Decembrie</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Fara data de sfarsit</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Dupa</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />evenimente<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />La data</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"></div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_ro.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.xml
new file mode 100644
index 0000000000..ada1ac2684
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ro.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_ro.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.js
new file mode 100644
index 0000000000..d908149fb2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />День</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Неделя</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Месяц</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Год</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Каждый</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />день<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Каждый рабочий день</label> </div> <div style="display:none;" id="dhx_repeat_week"> Повторять каждую<input class="dhx_repeat_text" type="text" name="week_count" value="1" />неделю , в:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Понедельник</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Четверг</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Вторник</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Пятницу</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Среду&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Субботу</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Воскресенье</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Повторять</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" /> числа каждый <input class="dhx_repeat_text" type="text" name="month_count" value="1" />месяц<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Понедельник<option value="2">Вторник<option value="3">Среда<option value="4">Четверг<option value="5">Пятница<option value="6">Суббота<option value="0">Воскресенье</select>каждый <input class="dhx_repeat_text" type="text" name="month_count2" value="1" />месяц<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/></label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />день<select name="year_month"><option value="0" selected >Января<option value="1">Февраля<option value="2">Марта<option value="3">Апреля<option value="4">Мая<option value="5">Июня<option value="6">Июля<option value="7">Августа<option value="8">Сентября<option value="9">Октября<option value="10">Ноября<option value="11">Декабря</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Понедельник<option value="2">Вторник<option value="3">Среда<option value="4">Четверг<option value="5">Пятница<option value="6">Суббота<option value="0">Воскресенье</select><select name="year_month2"><option value="0" selected >Января<option value="1">Февраля<option value="2">Марта<option value="3">Апреля<option value="4">Мая<option value="5">Июня<option value="6">Июля<option value="7">Августа<option value="8">Сентября<option value="9">Октября<option value="10">Ноября<option value="11">Декабря</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Без даты окончания</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" /></label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />повторений<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />До </label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_ru.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.xml
new file mode 100644
index 0000000000..e4f9ef07b2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ru.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_ru.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.js
new file mode 100644
index 0000000000..299b569971
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"><form><div class="dhx_repeat_left"><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Denne</label><br /><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Týždenne</label><br /><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mesaène</label><br /><label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Roène</label></div><div class="dhx_repeat_divider"></div><div class="dhx_repeat_center"><div style="display:none;" id="dhx_repeat_day"><label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Každý</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />deò<br /><label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Každý prac. deò</label></div><div style="display:none;" id="dhx_repeat_week">Opakova každý<input class="dhx_repeat_text" type="text" name="week_count" value="1" />týždeò v dòoch:<br /><table class="dhx_repeat_days"><tr><td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Pondelok</label><br /><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Štvrtok</label></td><td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Utorok</label><br /><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Piatok</label></td><td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Streda</label><br /><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sobota</label></td><td><label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Nede¾a</label><br /><br /></td></tr></table></div><div id="dhx_repeat_month"><label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Opakova</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />deò každý<input class="dhx_repeat_text" type="text" name="month_count" value="1" />mesiac<br /><label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Pondelok<option value="2">Utorok<option value="3">Streda<option value="4">Štvrtok<option value="5">Piatok<option value="6">Sobota<option value="0">Nede¾a</select>každý<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mesiac<br /></div><div style="display:none;" id="dhx_repeat_year"><label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Každý</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />deò<select name="year_month"><option value="0" selected >Január<option value="1">Február<option value="2">Marec<option value="3">Apríl<option value="4">Máj<option value="5">Jún<option value="6">Júl<option value="7">August<option value="8">September<option value="9">Október<option value="10">November<option value="11">December</select>mesiac<br /><label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Pondelok<option value="2">Utorok<option value="3">Streda<option value="4">Štvrtok<option value="5">Piatok<option value="6">Sobota<option value="7">Nede¾a</select>poèas<select name="year_month2"><option value="0" selected >Január<option value="1">Február<option value="2">Marec<option value="3">Apríl<option value="4">Máj<option value="5">Jún<option value="6">Júl<option value="7">August<option value="8">September<option value="9">Október<option value="10">November<option value="11">December</select><br /></div></div><div class="dhx_repeat_divider"></div><div class="dhx_repeat_right"><label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Bez dátumu ukonèenia</label><br /><label><input class="dhx_repeat_radio" type="radio" name="end" />Po</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />udalostiach<br /><label><input class="dhx_repeat_radio" type="radio" name="end" />Ukonèi</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /></div></form></div><div style="clear:both"></div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_sk.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.xml
new file mode 100644
index 0000000000..3d2ce212f7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sk.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_sk.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.js
new file mode 100644
index 0000000000..493d30f751
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Dagligen</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Veckovis</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Månadsvis</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Årligen</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Var</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dag<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Varje arbetsdag</label> </div> <div style="display:none;" id="dhx_repeat_week"> Upprepa var<input class="dhx_repeat_text" type="text" name="week_count" value="1" />vecka dessa dagar:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Måndag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Tisdag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Torsdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Fredag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Onsdag</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Lördag</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Söndag</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Upprepa</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />dagen var<input class="dhx_repeat_text" type="text" name="month_count" value="1" />månad<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Den</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >måndagen<option value="2">tisdagen<option value="3">onsdagen<option value="4">torsdagen<option value="5">fredagen<option value="6">lördagen<option value="0">söndagen</select>var<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />månad<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Varje</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dag i<select name="year_month"><option value="0" selected >Januari<option value="1">Februari<option value="2">Mars<option value="3">April<option value="4">Maj<option value="5">Juni<option value="6">Juli<option value="7">Augusti<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">December</select>månad<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Den</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >måndagen<option value="2">tisdagen<option value="3">onsdagen<option value="4">torsdagen<option value="5">fredagen<option value="6">lördagen<option value="7">söndagen</select>i<select name="year_month2"><option value="0" selected >Januari<option value="1">Februari<option value="2">Mars<option value="3">April<option value="4">Maj<option value="5">Juni<option value="6">Juli<option value="7">Augusti<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Inget slutdatum</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Efter</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />upprepningar<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />Sluta efter</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_sv.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.xml
new file mode 100644
index 0000000000..0edf79dce1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_sv.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_sv.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.js
new file mode 100644
index 0000000000..9e4cc5a5fe
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.js
@@ -0,0 +1,11 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />День</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Тиждень</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Місяць</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Рік</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Кожний</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />день<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Кожний робочий день</label> </div> <div style="display:none;" id="dhx_repeat_week"> Повторювати кожен<input class="dhx_repeat_text" type="text" name="week_count" value="1" />тиждень , по:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Понеділкам</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Четвергам</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Вівторкам</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />П\'ятницям</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Середам&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Суботам</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Неділям</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Повторювати</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" /> числа кожний <input class="dhx_repeat_text" type="text" name="month_count" value="1" />місяць<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Понеділок<option value="2">Вівторок<option value="3">Середа<option value="4">Четвер<option value="5">П\'ятниця<option value="6">Субота<option value="0">Неділя</select>кожен <input class="dhx_repeat_text" type="text" name="month_count2" value="1" />місяць<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/></label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />день<select name="year_month"><option value="0" selected >січня<option value="1">лютого<option value="2">березня<option value="3">квітня<option value="4">травня<option value="5">червня<option value="6">липня<option value="7">серпня<option value="8">вересня<option value="9">жовтня<option value="10">листопада<option value="11">грудня</select><br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >понеділок<option value="2">вівторок<option value="3">середа<option value="4">четвер<option value="5">п\'ятниця<option value="6">субота<option value="0">неділя</select><select name="year_month2"><option value="0" selected >січня<option value="1">лютого<option value="2">березня<option value="3">квітня<option value="4">березня<option value="5">червня<option value="6">липня<option value="7">серпня<option value="8">вересня<option value="9">жовтня<option value="10">листопада<option value="11">грудня</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Без дати закінчення</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" /></label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />повторень<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />До </label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
+
+//# sourceMappingURL=../../sources/locale/recurring/locale_recurring_ua.js.map
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.xml
new file mode 100644
index 0000000000..ad6a5d505d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/locale_recurring_ua.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_recurring_ua.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.xml
new file mode 100644
index 0000000000..cb384744d4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_be.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.zpt
new file mode 100644
index 0000000000..50f3cfd24e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_be.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Дзень</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Тыдзень</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Месяц</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Год</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Кожны</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />дзень<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Кожны працоўны дзень</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Паўтараць кожны<input class="dhx_repeat_text" type="text" name="week_count" value="1" />тыдзень<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Панядзелак</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Чацвер</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Аўторак</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Пятніцу</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Сераду&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Суботу</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Нядзелю</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Паўтараць</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" /> чысла кожнага<input class="dhx_repeat_text" type="text" name="month_count" value="1" />месяцу<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Панядзелак<option value="2">Аўторак<option value="3">Серада<option value="4">Чацвер<option value="5">Пятніца<option value="6">Субота<option value="0">Нядзеля</select>кожны <input class="dhx_repeat_text" type="text" name="month_count2" value="1" />месяц<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/></label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />день<select name="year_month"><option value="0" selected >Студзеня<option value="1">Лютага<option value="2">Сакавіка<option value="3">Красавіка<option value="4">Мая<option value="5">Чэрвеня<option value="6">Ліпeня<option value="7">Жніўня<option value="8">Верасня<option value="9">Кастрычніка<option value="10">Лістапада<option value="11">Снежня</select><br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Панядзелак<option value="2">Аўторак<option value="3">Серада<option value="4">Чацвер<option value="5">Пятніца<option value="6">Субота<option value="0">Нядзеля</select><select name="year_month2"><option value="0" selected >Студзеня<option value="1">Лютага<option value="2">Сакавіка<option value="3">Красавіка<option value="4">Мая<option value="5">Чэрвеня<option value="6">Лiпeня<option value="7">Жніўня<option value="8">Верасня<option value="9">Кастрычніка<option value="10">Лістапада<option value="11">Снежня</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Без даты заканчэння</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" /></label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />паўтораў<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Да </label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.xml
new file mode 100644
index 0000000000..e19420e63b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_cn.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.zpt
new file mode 100644
index 0000000000..c47f485b80
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_cn.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />按天</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>按周</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />按月</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />按年</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>每</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />天<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>每个工作日</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   重复 每<input class="dhx_repeat_text" type="text" name="week_count" value="1" />星期的:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />星期一</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />星期四</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />星期二</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />星期五</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />星期三</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />星期六</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />星期日</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>重复</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />日 每<input class="dhx_repeat_text" type="text" name="month_count" value="1" />月<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>在</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >星期一<option value="2">星期二<option value="3">星期三<option value="4">星期四<option value="5">星期五<option value="6">星期六<option value="0">星期日</select>每<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />月<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>每</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />日<select name="year_month"><option value="0" selected >一月<option value="1">二月<option value="2">三月<option value="3">四月<option value="4">五月<option value="5">六月<option value="6">七月<option value="7">八月<option value="8">九月<option value="9">十月<option value="10">十一月<option value="11">十二月</select>月<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>在</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >星期一<option value="2">星期二<option value="3">星期三<option value="4">星期四<option value="5">星期五<option value="6">星期六<option value="7">星期日</select>的<select name="year_month2"><option value="0" selected >一月<option value="1">二月<option value="2">三月<option value="3">四月<option value="4">五月<option value="5">六月<option value="6">七月<option value="7">八月<option value="8">九月<option value="9">十月<option value="10">十一月<option value="11">十二月</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>无结束日期</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />重复</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />次结束<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />结束于</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.xml
new file mode 100644
index 0000000000..0bd60c0965
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_de.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.zpt
new file mode 100644
index 0000000000..bb70c5aac7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_de.html.zpt
@@ -0,0 +1,60 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Täglich</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Wöchentlich</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monatlich</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Jährlich</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+               	   <label>Wiederholt sich:<br/></label>
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>jeden</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />Tag<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>an jedem Arbeitstag</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Wiederholt sich jede<input class="dhx_repeat_text" type="text" name="week_count" value="1" />Woche am:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Montag</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Donnerstag</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Dienstag</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Freitag</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Mittwoch</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Samstag</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sonntag</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+               	   <label>Wiederholt sich:<br/></label>
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>an jedem</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />Tag eines jeden<input class="dhx_repeat_text" type="text" name="month_count" value="1" />Monats<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>am</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Montag<option value="2">Dienstag<option value="3">Mittwoch<option value="4">Donnerstag<option value="5">Freitag<option value="6">Samstag<option value="0">Sonntag</select>jeden<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />Monats<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+				   <label>Wiederholt sich:</label>
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>an jedem</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />Tag im<select name="year_month"><option value="0" selected >Januar<option value="1">Februar<option value="2">März<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Dezember</select><br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>am</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Montag<option value="2">Dienstag<option value="3">Mittwoch<option value="4">Donnerstag<option value="5">Freitag<option value="6">Samstag<option value="0">Sonntag</select>im<select name="year_month2"><option value="0" selected >Januar<option value="1">Februar<option value="2">März<option value="3">April<option value="4">Mai<option value="5">Juni<option value="6">Juli<option value="7">August<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">Dezember</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>kein Enddatum</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />nach</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />Ereignissen<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Schluß</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.xml
new file mode 100644
index 0000000000..2cd383342c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_el.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.zpt
new file mode 100644
index 0000000000..eddddee99a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_el.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Ημερησίως</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Εβδομαδιαίως</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Μηνιαίως</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Ετησίως</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Κάθε</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />ημέρα<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Κάθε εργάσιμη</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Επανάληψη κάθε<input class="dhx_repeat_text" type="text" name="week_count" value="1" />εβδομάδα τις επόμενες ημέρες:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Δευτέρα</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Πέμπτη</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Τρίτη</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Παρασκευή</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Τετάρτη</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Σάββατο</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Κυριακή</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Επανάληψη</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />ημέρα κάθε<input class="dhx_repeat_text" type="text" name="month_count" value="1" />μήνα<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Την</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Δευτέρα<option value="2">Τρίτη<option value="3">Τετάρτη<option value="4">Πέμπτη<option value="5">Παρασκευή<option value="6">Σάββατο<option value="0">Κυριακή</select>κάθε<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />μήνα<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Κάθε</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />ημέρα<select name="year_month"><option value="0" selected >Ιανουάριος<option value="1">Φεβρουάριος<option value="2">Μάρτιος<option value="3">Απρίλιος<option value="4">Μάϊος<option value="5">Ιούνιος<option value="6">Ιούλιος<option value="7">Αύγουστος<option value="8">Σεπτέμβριος<option value="9">Οκτώβριος<option value="10">Νοέμβριος<option value="11">Δεκέμβριος</select>μήνα<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Την</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Δευτέρα<option value="2">Τρίτη<option value="3">Τετάρτη<option value="4">Πέμπτη<option value="5">Παρασκευή<option value="6">Σάββατο<option value="7">Κυριακή</select>του<select name="year_month2"><option value="0" selected >Ιανουάριος<option value="1">Φεβρουάριος<option value="2">Μάρτιος<option value="3">Απρίλιος<option value="4">Μάϊος<option value="5">Ιούνιος<option value="6">Ιούλιος<option value="7">Αύγουστος<option value="8">Σεπτέμβριος<option value="9">Οκτώβριος<option value="10">Νοέμβριος<option value="11">Δεκέμβριος</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Χωρίς ημερομηνία λήξεως</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Μετά από</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />επαναλήψεις<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Λήγει την</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.xml
new file mode 100644
index 0000000000..2505b3ddb2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_en.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.zpt
new file mode 100644
index 0000000000..078f441577
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_en.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daily</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Weekly</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monthly</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Yearly</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />day<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Every workday</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Repeat every<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week next days:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Monday</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Thursday</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tuesday</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Friday</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Wednesday</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Saturday</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunday</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeat</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />day every<input class="dhx_repeat_text" type="text" name="month_count" value="1" />month<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="0">Sunday</select>every<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />month<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />day<select name="year_month"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select>month<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="7">Sunday</select>of<select name="year_month2"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>No end date</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />After</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />End by</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.xml
new file mode 100644
index 0000000000..e956773ff7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_es.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.zpt
new file mode 100644
index 0000000000..94549432bc
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_es.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Diariamente</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Semanalment</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mensualmente</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Anualmente</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Cada</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dia<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Cada jornada de trabajo</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Repetir cada<input class="dhx_repeat_text" type="text" name="week_count" value="1" />semana:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Lunes</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Jeuves</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Martes</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Viernes</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Miércoles</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sabado</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Domingo</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repita</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />dia  cada <input class="dhx_repeat_text" type="text" name="month_count" value="1" />mes<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>El</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Lunes<option value="2">Martes<option value="3">Miércoles<option value="4">Jeuves<option value="5">Viernes<option value="6">Sabado<option value="0">Domingo</select>cada<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mes<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Cada</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dia<select name="year_month"><option value="0" selected >Enero<option value="1">Febrero<option value="2">Маrzo<option value="3">Аbril<option value="4">Mayo<option value="5">Junio<option value="6">Julio<option value="7">Аgosto<option value="8">Setiembre<option value="9">Octubre<option value="10">Noviembre<option value="11">Diciembre</select>mes<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>El</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Lunes<option value="2">Martes<option value="3">Miércoles<option value="4">Jeuves<option value="5">Viernes<option value="6">Sabado<option value="0">Domingo</select>del<select name="year_month2"><option value="0" selected >Enero<option value="1">Febrero<option value="2">Маrzo<option value="3">Аbril<option value="4">Mayo<option value="5">Junio<option value="6">Julio<option value="7">Аgosto<option value="8">Setiembre<option value="9">Octubre<option value="10">Noviembre<option value="11">Diciembre</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Sin fecha de finalización</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Después de</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurencias<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Fin</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.xml
new file mode 100644
index 0000000000..942a9749e3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_fr.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.zpt
new file mode 100644
index 0000000000..281dbe7afc
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_fr.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Quotidienne</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Hebdomadaire</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mensuelle</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Annuelle</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Chaque</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />jour<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Chaque journée de travail</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Répéter toutes les<input class="dhx_repeat_text" type="text" name="week_count" value="1" />semaine:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Lundi</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Jeudi</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Mardi</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Vendredi</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Mercredi</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Samedi</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Dimanche</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Répéter</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />jour  chaque<input class="dhx_repeat_text" type="text" name="month_count" value="1" />mois<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Le</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Lundi<option value="2">Mardi<option value="3">Mercredi<option value="4">Jeudi<option value="5">Vendredi<option value="6">Samedi<option value="0">Dimanche</select>chaque<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mois<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Chaque</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />jour<select name="year_month"><option value="0" selected >Janvier<option value="1">Février<option value="2">Mars<option value="3">Avril<option value="4">Mai<option value="5">Juin<option value="6">Juillet<option value="7">Août<option value="8">Septembre<option value="9">Octobre<option value="10">Novembre<option value="11">Décembre</select>mois<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Le</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Lundi<option value="2">Mardi<option value="3">Mercredi<option value="4">Jeudi<option value="5">Vendredi<option value="6">Samedi<option value="0">Dimanche</select>du<select name="year_month2"><option value="0" selected >Janvier<option value="1">Février<option value="2">Mars<option value="3">Avril<option value="4">Mai<option value="5">Juin<option value="6">Juillet<option value="7">Août<option value="8">Septembre<option value="9">Octobre<option value="10">Novembre<option value="11">Décembre</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Pas de date d&quot;achèvement</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Après</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Fin</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.xml
new file mode 100644
index 0000000000..0ea3f8c715
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_it.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.zpt
new file mode 100644
index 0000000000..1d92cb4d42
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_it.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Quotidiano</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Settimanale</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mensile</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Annuale</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Ogni</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />giorno<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Ogni giornata lavorativa</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Ripetere ogni<input class="dhx_repeat_text" type="text" name="week_count" value="1" />settimana:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Lunedì</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Jovedì</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Martedì</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Venerdì</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Mercoledì</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sabato</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Domenica</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Ripetere</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />giorno ogni<input class="dhx_repeat_text" type="text" name="month_count" value="1" />mese<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Il</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Lunedì<option value="2">Martedì<option value="3">Mercoledì<option value="4">Jovedì<option value="5">Venerdì<option value="6">Sabato<option value="0">Domenica</select>ogni<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mese<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Ogni</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />giorno<select name="year_month"><option value="0" selected >Gennaio<option value="1">Febbraio<option value="2">Marzo<option value="3">Aprile<option value="4">Maggio<option value="5">Jiugno<option value="6">Luglio<option value="7">Agosto<option value="8">Settembre<option value="9">Ottobre<option value="10">Novembre<option value="11">Dicembre</select>mese<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Il</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Lunedì<option value="2">Martedì<option value="3">Mercoledì<option value="4">Jovedì<option value="5">Venerdì<option value="6">Sabato<option value="0">Domenica</select>del<select name="year_month2"><option value="0" selected >Gennaio<option value="1">Febbraio<option value="2">Marzo<option value="3">Aprile<option value="4">Maggio<option value="5">Jiugno<option value="6">Luglio<option value="7">Agosto<option value="8">Settembre<option value="9">Ottobre<option value="10">Novembre<option value="11">Dicembre</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Senza data finale</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Dopo</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occorenze<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Fine</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.xml
new file mode 100644
index 0000000000..6cb1bc7710
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_nl.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.zpt
new file mode 100644
index 0000000000..a1b7a35eae
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_nl.html.zpt
@@ -0,0 +1,65 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Dagelijks</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Wekelijks</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Maandelijks</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Jaarlijks</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Elke</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />dag(en)<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Elke werkdag</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Herhaal elke<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week op de volgende dagen:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Maandag</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Donderdag</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Dinsdag</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Vrijdag</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Woensdag</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Zaterdag</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Zondag</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Herhaal</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />dag iedere<input class="dhx_repeat_text" type="text" name="month_count" value="1" />maanden<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>Op</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2">
+                     <option value="1">Maandag
+                     <option value="2">Dinsdag
+                     <option value="3">Woensdag
+                     <option value="4">Donderdag
+                     <option value="5">Vrijdag
+                     <option value="6">Zaterdag
+                     <option value="0">Zondag
+                     </select>iedere<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />maanden<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Iedere</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />dag<select name="year_month"><option value="0" selected >Januari<option value="1">Februari<option value="2">Maart<option value="3">April<option value="4">Mei<option value="5">Juni<option value="6">Juli<option value="7">Augustus<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">December</select>maand<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>Op</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Maandag<option value="2">Dinsdag<option value="3">Woensdag<option value="4">Donderdag<option value="5">Vrijdag<option value="6">Zaterdag<option value="7">Zondag</select>van<select name="year_month2"><option value="0" selected >Januari<option value="1">Februari<option value="2">Maart<option value="3">April<option value="4">Mei<option value="5">Juni<option value="6">Juli<option value="7">Augustus<option value="8">September<option value="9">Oktober<option value="10">November<option value="11">December</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Geen eind datum</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Na</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />keren<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Eindigd per</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.xml
new file mode 100644
index 0000000000..f4cca3461e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_ro.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.zpt
new file mode 100644
index 0000000000..cf3d2d21d2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ro.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Zilnic</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Saptamanal</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Lunar</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Anual</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>La fiecare</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />zi(le)<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Fiecare zi lucratoare</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Repeta la fiecare<input class="dhx_repeat_text" type="text" name="week_count" value="1" />saptamana in urmatoarele zile:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Luni</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Joi</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Marti</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Vineri</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Miercuri</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sambata</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Duminica</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeta in</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />zi la fiecare<input class="dhx_repeat_text" type="text" name="month_count" value="1" />luni<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>In a</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" />zi de<select name="month_day2"><option value="1" selected >Luni<option value="2">Marti<option value="3">Miercuri<option value="4">Joi<option value="5">Vineri<option value="6">Sambata<option value="0">Duminica</select>la fiecare<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />luni<br />
+               </div>
+               <div id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>In</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />zi a lunii<select name="year_month"><option value="0" selected >Ianuarie<option value="1">Februarie<option value="2">Martie<option value="3">Aprilie<option value="4">Mai<option value="5">Iunie<option value="6">Iulie<option value="7">August<option value="8">Septembrie<option value="9">Octombrie<option value="10">Noiembrie<option value="11">Decembrie</select><br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>In</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" />zi de<select name="year_day2"><option value="1" selected >Luni<option value="2">Marti<option value="3">Miercuri<option value="4">Joi<option value="5">Vineri<option value="6">Sambata<option value="7">Duminica</select>a lunii<select name="year_month2"><option value="0" selected >Ianuarie<option value="1">Februarie<option value="2">Martie<option value="3">Aprilie<option value="4">Mai<option value="5">Iunie<option value="6">Iulie<option value="7">August<option value="8">Septembrie<option value="9">Octombrie<option value="10">Noiembrie<option value="11">Decembrie</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Fara data de sfarsit</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Dupa</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />evenimente<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />La data</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+</div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.xml
new file mode 100644
index 0000000000..07d7dbe708
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_ru.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.zpt
new file mode 100644
index 0000000000..becab2809c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_ru.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />День</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Неделя</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Месяц</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Год</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Каждый</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />день<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Каждый рабочий день</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Повторять каждую<input class="dhx_repeat_text" type="text" name="week_count" value="1" />неделю , в:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Понедельник</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Четверг</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Вторник</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Пятницу</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Среду&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Субботу</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Воскресенье</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Повторять</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" /> числа каждый <input class="dhx_repeat_text" type="text" name="month_count" value="1" />месяц<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Понедельник<option value="2">Вторник<option value="3">Среда<option value="4">Четверг<option value="5">Пятница<option value="6">Суббота<option value="0">Воскресенье</select>каждый <input class="dhx_repeat_text" type="text" name="month_count2" value="1" />месяц<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/></label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />день<select name="year_month"><option value="0" selected >Января<option value="1">Февраля<option value="2">Марта<option value="3">Апреля<option value="4">Мая<option value="5">Июня<option value="6">Июля<option value="7">Августа<option value="8">Сентября<option value="9">Октября<option value="10">Ноября<option value="11">Декабря</select><br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/></label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Понедельник<option value="2">Вторник<option value="3">Среда<option value="4">Четверг<option value="5">Пятница<option value="6">Суббота<option value="0">Воскресенье</select><select name="year_month2"><option value="0" selected >Января<option value="1">Февраля<option value="2">Марта<option value="3">Апреля<option value="4">Мая<option value="5">Июня<option value="6">Июля<option value="7">Августа<option value="8">Сентября<option value="9">Октября<option value="10">Ноября<option value="11">Декабря</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Без даты окончания</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" /></label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />повторений<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />До </label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.xml
new file mode 100644
index 0000000000..e65225221d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>repeat_template_sk.html</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>iso-8859-15</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.zpt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.zpt
new file mode 100644
index 0000000000..22132723c9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/locale/recurring/repeat_template_sk.html.zpt
@@ -0,0 +1,57 @@
+<div class="dhx_form_repeat">
+	<form>
+    <div class="dhx_repeat_left">
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Denne</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Týždenne</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Mesaène</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Roène</label>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_center">
+               <div style="display:none;" id="dhx_repeat_day">
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Každý</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />deò<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Každý prac. deò</label>
+               </div>
+               <div style="display:none;" id="dhx_repeat_week">
+                   Opakova každý<input class="dhx_repeat_text" type="text" name="week_count" value="1" />týždeò v dòoch:<br />
+
+                   <table class="dhx_repeat_days">
+                       <tr>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Pondelok</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Štvrtok</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Utorok</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Piatok</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Streda</label><br />
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Sobota</label>
+                           </td>
+                           <td>
+                               <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Nede¾a</label><br /><br />
+                           </td>
+                       </tr>
+                   </table>
+
+               </div>
+               <div id="dhx_repeat_month">
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Opakova</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />deò každý<input class="dhx_repeat_text" type="text" name="month_count" value="1" />mesiac<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Pondelok<option value="2">Utorok<option value="3">Streda<option value="4">Štvrtok<option value="5">Piatok<option value="6">Sobota<option value="0">Nede¾a</select>každý<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />mesiac<br />
+               </div>
+               <div style="display:none;" id="dhx_repeat_year">
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Každý</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />deò<select name="year_month"><option value="0" selected >Január<option value="1">Február<option value="2">Marec<option value="3">Apríl<option value="4">Máj<option value="5">Jún<option value="6">Júl<option value="7">August<option value="8">September<option value="9">Október<option value="10">November<option value="11">December</select>mesiac<br />
+                   <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Pondelok<option value="2">Utorok<option value="3">Streda<option value="4">Štvrtok<option value="5">Piatok<option value="6">Sobota<option value="7">Nede¾a</select>poèas<select name="year_month2"><option value="0" selected >Január<option value="1">Február<option value="2">Marec<option value="3">Apríl<option value="4">Máj<option value="5">Jún<option value="6">Júl<option value="7">August<option value="8">September<option value="9">Október<option value="10">November<option value="11">December</select><br />
+               </div>
+    </div>
+    <div class="dhx_repeat_divider"></div>
+    <div class="dhx_repeat_right">
+               <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>Bez dátumu ukonèenia</label><br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Po</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />udalostiach<br />
+               <label><input class="dhx_repeat_radio" type="radio" name="end" />Ukonèi</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br />
+    </div>
+    </form>
+ </div>
+ <div style="clear:both">
+ </div>
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources.xml
new file mode 100644
index 0000000000..7adeb63cff
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>sources</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.js
new file mode 100644
index 0000000000..c67bab0634
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.js
@@ -0,0 +1,6326 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+window.dhtmlXScheduler = window.scheduler = { version: "4.3.1" };
+
+if (!window.dhtmlx) {
+	dhtmlx = function(obj){
+		for (var a in obj) dhtmlx[a]=obj[a];
+		return dhtmlx; //simple singleton
+	};
+}
+dhtmlx.extend_api=function(name,map,ext){
+    var t = window[name];
+    if (!t) return; //component not defined
+    window[name]=function(obj){
+        var that;
+
+        if (obj && typeof obj == "object" && !obj.tagName){
+            that = t.apply(this,(map._init?map._init(obj):arguments));
+            //global settings
+            for (var a in dhtmlx)
+                if (map[a]) this[map[a]](dhtmlx[a]);
+            //local settings
+            for (var a in obj){
+                if (map[a]) this[map[a]](obj[a]);
+                else if (a.indexOf("on")===0){
+                    this.attachEvent(a,obj[a]);
+                }
+            }
+        } else
+            that = t.apply(this,arguments);
+        if (map._patch) map._patch(this);
+        return that||this;
+    };
+    window[name].prototype=t.prototype;
+    if (ext)
+        dhtmlXHeir(window[name].prototype,ext);
+};
+
+dhtmlxAjax={
+    get:function(url,callback){
+        var t=new dtmlXMLLoaderObject(true);
+        t.async=(arguments.length<3);
+        t.waitCall=callback;
+        t.loadXML(url);
+        return t;
+    },
+    post:function(url,post,callback){
+        var t=new dtmlXMLLoaderObject(true);
+        t.async=(arguments.length<4);
+        t.waitCall=callback;
+        t.loadXML(url,true,post);
+        return t;
+    },
+    getSync:function(url){
+        return this.get(url,null,true);
+    },
+    postSync:function(url,post){
+        return this.post(url,post,null,true);
+    }
+};
+
+/**
+ *     @desc: xmlLoader object
+ *     @type: private
+ *     @param: funcObject - xml parser function
+ *     @param: object - jsControl object
+ *     @param: async - sync/async mode (async by default)
+ *     @param: rSeed - enable/disable random seed ( prevent IE caching)
+ *     @topic: 0
+ */
+function dtmlXMLLoaderObject(funcObject, dhtmlObject, async, rSeed){
+    this.xmlDoc="";
+
+    if (typeof (async) != "undefined")
+        this.async=async;
+    else
+        this.async=true;
+
+    this.onloadAction=funcObject||null;
+    this.mainObject=dhtmlObject||null;
+    this.waitCall=null;
+    this.rSeed=rSeed||false;
+    return this;
+}
+
+dtmlXMLLoaderObject.count = 0;
+
+/**
+ *     @desc: xml loading handler
+ *     @type: private
+ *     @param: dtmlObject - xmlLoader object
+ *     @topic: 0
+ */
+dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){
+    var once = true;
+    this.check=function (){
+        if ((dhtmlObject)&&(dhtmlObject.onloadAction)){
+            if ((!dhtmlObject.xmlDoc.readyState)||(dhtmlObject.xmlDoc.readyState == 4)){
+                if (!once)
+                    return;
+
+                once=false; //IE 5 fix
+                dtmlXMLLoaderObject.count++;
+                if (typeof dhtmlObject.onloadAction == "function")
+                    dhtmlObject.onloadAction(dhtmlObject.mainObject, null, null, null, dhtmlObject);
+
+                if (dhtmlObject.waitCall){
+                    dhtmlObject.waitCall.call(this,dhtmlObject);
+                    dhtmlObject.waitCall=null;
+                }
+            }
+        }
+    };
+    return this.check;
+};
+
+/**
+ *     @desc: return XML top node
+ *     @param: tagName - top XML node tag name (not used in IE, required for Safari and Mozilla)
+ *     @type: private
+ *     @returns: top XML node
+ *     @topic: 0
+ */
+dtmlXMLLoaderObject.prototype.getXMLTopNode=function(tagName, oldObj){
+    var z;
+
+    if (this.xmlDoc.responseXML){
+        var temp = this.xmlDoc.responseXML.getElementsByTagName(tagName);
+        if(temp.length === 0 && tagName.indexOf(":")!=-1)
+            var temp = this.xmlDoc.responseXML.getElementsByTagName((tagName.split(":"))[1]);
+        z = temp[0];
+    } else
+        z = this.xmlDoc.documentElement;
+
+    if (z){
+        this._retry=false;
+        return z;
+    }
+
+    if (!this._retry&&_isIE){
+        this._retry=true;
+        var oldObj = this.xmlDoc;
+        this.loadXMLString(this.xmlDoc.responseText.replace(/^[\s]+/,""), true);
+        return this.getXMLTopNode(tagName, oldObj);
+    }
+
+    dhtmlxError.throwError("LoadXML", "Incorrect XML", [
+        (oldObj||this.xmlDoc),
+        this.mainObject
+    ]);
+
+    return document.createElement("DIV");
+};
+
+/**
+ *     @desc: load XML from string
+ *     @type: private
+ *     @param: xmlString - xml string
+ *     @topic: 0
+ */
+dtmlXMLLoaderObject.prototype.loadXMLString=function(xmlString, silent){
+
+    if (!_isIE){
+        var parser = new DOMParser();
+        this.xmlDoc=parser.parseFromString(xmlString, "text/xml");
+    } else {
+        this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
+        this.xmlDoc.async=this.async;
+        this.xmlDoc.onreadystatechange = function(){};
+        this.xmlDoc["loadXM"+"L"](xmlString);
+    }
+
+    if (silent)
+        return;
+
+    if (this.onloadAction)
+        this.onloadAction(this.mainObject, null, null, null, this);
+
+    if (this.waitCall){
+        this.waitCall();
+        this.waitCall=null;
+    }
+};
+/**
+ *     @desc: load XML
+ *     @type: private
+ *     @param: filePath - xml file path
+ *     @param: postMode - send POST request
+ *     @param: postVars - list of vars for post request
+ *     @topic: 0
+ */
+dtmlXMLLoaderObject.prototype.loadXML=function(filePath, postMode, postVars, rpc){
+    if (this.rSeed)
+        filePath+=((filePath.indexOf("?") != -1) ? "&" : "?")+"a_dhx_rSeed="+(new Date()).valueOf();
+    this.filePath=filePath;
+
+    if ((!_isIE)&&(window.XMLHttpRequest))
+        this.xmlDoc=new XMLHttpRequest();
+    else {
+        this.xmlDoc=new ActiveXObject("Microsoft.XMLHTTP");
+    }
+
+    if (this.async)
+        this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);
+    if (typeof postMode == "string")
+        this.xmlDoc.open(postMode, filePath, this.async);
+    else
+        this.xmlDoc.open(postMode ? "POST" : "GET", filePath, this.async);
+
+    if (rpc){
+        this.xmlDoc.setRequestHeader("User-Agent", "dhtmlxRPC v0.1 ("+navigator.userAgent+")");
+        this.xmlDoc.setRequestHeader("Content-type", "text/xml");
+    }
+
+    else if (postMode)
+        this.xmlDoc.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+
+    this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");
+    this.xmlDoc.send(null||postVars);
+
+    if (!this.async)
+        (new this.waitLoadFunction(this))();
+};
+/**
+ *     @desc: destructor, cleans used memory
+ *     @type: private
+ *     @topic: 0
+ */
+dtmlXMLLoaderObject.prototype.destructor=function(){
+    this._filterXPath = null;
+    this._getAllNamedChilds = null;
+    this._retry = null;
+    this.async = null;
+    this.rSeed = null;
+    this.filePath = null;
+    this.onloadAction = null;
+    this.mainObject = null;
+    this.xmlDoc = null;
+    this.doXPath = null;
+    this.doXPathOpera = null;
+    this.doXSLTransToObject = null;
+    this.doXSLTransToString = null;
+    this.loadXML = null;
+    this.loadXMLString = null;
+    // this.waitLoadFunction = null;
+    this.doSerialization = null;
+    this.xmlNodeToJSON = null;
+    this.getXMLTopNode = null;
+    this.setXSLParamValue = null;
+    return null;
+};
+
+dtmlXMLLoaderObject.prototype.xmlNodeToJSON = function(node){
+    var t={};
+    for (var i=0; i<node.attributes.length; i++)
+        t[node.attributes[i].name]=node.attributes[i].value;
+    t["_tagvalue"]=node.firstChild?node.firstChild.nodeValue:"";
+    for (var i=0; i<node.childNodes.length; i++){
+        var name=node.childNodes[i].tagName;
+        if (name){
+            if (!t[name]) t[name]=[];
+            t[name].push(this.xmlNodeToJSON(node.childNodes[i]));
+        }
+    }
+    return t;
+};
+
+/**
+ *     @desc: Call wrapper
+ *     @type: private
+ *     @param: funcObject - action handler
+ *     @param: dhtmlObject - user data
+ *     @returns: function handler
+ *     @topic: 0
+ */
+function callerFunction(funcObject, dhtmlObject){
+    this.handler=function(e){
+        if (!e)
+            e=window.event;
+        funcObject(e, dhtmlObject);
+        return true;
+    };
+    return this.handler;
+}
+
+/**
+ *     @desc: Calculate absolute position of html object
+ *     @type: private
+ *     @param: htmlObject - html object
+ *     @topic: 0
+ */
+function getAbsoluteLeft(htmlObject){
+    return getOffset(htmlObject).left;
+}
+/**
+ *     @desc: Calculate absolute position of html object
+ *     @type: private
+ *     @param: htmlObject - html object
+ *     @topic: 0
+ */
+function getAbsoluteTop(htmlObject){
+    return getOffset(htmlObject).top;
+}
+
+function getOffsetSum(elem) {
+    var top=0, left=0;
+    while(elem) {
+        top = top + parseInt(elem.offsetTop);
+        left = left + parseInt(elem.offsetLeft);
+        elem = elem.offsetParent;
+    }
+    return {top: top, left: left};
+}
+function getOffsetRect(elem) {
+    var box = elem.getBoundingClientRect();
+    var body = document.body;
+    var docElem = document.documentElement;
+    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
+    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
+    var clientTop = docElem.clientTop || body.clientTop || 0;
+    var clientLeft = docElem.clientLeft || body.clientLeft || 0;
+    var top  = box.top +  scrollTop - clientTop;
+    var left = box.left + scrollLeft - clientLeft;
+    return { top: Math.round(top), left: Math.round(left) };
+}
+function getOffset(elem) {
+    if (elem.getBoundingClientRect) {
+        return getOffsetRect(elem);
+    } else {
+        return getOffsetSum(elem);
+    }
+}
+
+/**
+ *     @desc: Convert string to it boolean representation
+ *     @type: private
+ *     @param: inputString - string for covertion
+ *     @topic: 0
+ */
+function convertStringToBoolean(inputString){
+    if (typeof (inputString) == "string")
+        inputString=inputString.toLowerCase();
+
+    switch (inputString){
+        case "1":
+        case "true":
+        case "yes":
+        case "y":
+        case 1:
+        case true:
+            return true;
+        default:
+            return false;
+    }
+}
+
+/**
+ *     @desc: find out what symbol to use as url param delimiters in further params
+ *     @type: private
+ *     @param: str - current url string
+ *     @topic: 0
+ */
+function getUrlSymbol(str){
+    if (str.indexOf("?") != -1)
+        return "&";
+    else
+        return "?";
+}
+
+function dhtmlDragAndDropObject(){
+    if (window.dhtmlDragAndDrop)
+        return window.dhtmlDragAndDrop;
+
+    this.lastLanding=0;
+    this.dragNode=0;
+    this.dragStartNode=0;
+    this.dragStartObject=0;
+    this.tempDOMU=null;
+    this.tempDOMM=null;
+    this.waitDrag=0;
+    window.dhtmlDragAndDrop=this;
+
+    return this;
+}
+
+dhtmlDragAndDropObject.prototype.removeDraggableItem=function(htmlNode){
+    htmlNode.onmousedown=null;
+    htmlNode.dragStarter=null;
+    htmlNode.dragLanding=null;
+};
+
+dhtmlDragAndDropObject.prototype.addDraggableItem=function(htmlNode, dhtmlObject){
+    htmlNode.onmousedown=this.preCreateDragCopy;
+    htmlNode.dragStarter=dhtmlObject;
+    this.addDragLanding(htmlNode, dhtmlObject);
+};
+
+dhtmlDragAndDropObject.prototype.addDragLanding=function(htmlNode, dhtmlObject){
+    htmlNode.dragLanding=dhtmlObject;
+};
+
+dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e){
+    if ((e||window.event) && (e||event).button == 2)
+        return;
+
+    if (window.dhtmlDragAndDrop.waitDrag){
+        window.dhtmlDragAndDrop.waitDrag=0;
+        document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU;
+        document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM;
+        return false;
+    }
+
+    if (window.dhtmlDragAndDrop.dragNode)
+        window.dhtmlDragAndDrop.stopDrag(e);
+
+    window.dhtmlDragAndDrop.waitDrag=1;
+    window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;
+    window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove;
+    window.dhtmlDragAndDrop.dragStartNode=this;
+    window.dhtmlDragAndDrop.dragStartObject=this.dragStarter;
+    document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;
+    document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;
+    window.dhtmlDragAndDrop.downtime = new Date().valueOf();
+
+
+    if ((e)&&(e.preventDefault)){
+        e.preventDefault();
+        return false;
+    }
+    return false;
+};
+
+dhtmlDragAndDropObject.prototype.callDrag=function(e){
+    if (!e)
+        e=window.event;
+    var dragger=window.dhtmlDragAndDrop;
+    if ((new Date()).valueOf()-dragger.downtime<100) return;
+
+    //if ((e.button == 0)&&(_isIE))
+    //	return dragger.stopDrag();
+
+    if (!dragger.dragNode){
+        if (dragger.waitDrag){
+            dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode, e);
+
+            if (!dragger.dragNode)
+                return dragger.stopDrag();
+
+            dragger.dragNode.onselectstart=function(){return false;};
+            dragger.gldragNode=dragger.dragNode;
+            document.body.appendChild(dragger.dragNode);
+            document.body.onmouseup=dragger.stopDrag;
+            dragger.waitDrag=0;
+            dragger.dragNode.pWindow=window;
+            dragger.initFrameRoute();
+        }
+        else return dragger.stopDrag(e, true);
+    }
+
+    if (dragger.dragNode.parentNode != window.document.body && dragger.gldragNode){
+        var grd = dragger.gldragNode;
+
+        if (dragger.gldragNode.old)
+            grd=dragger.gldragNode.old;
+
+        //if (!document.all) dragger.calculateFramePosition();
+        grd.parentNode.removeChild(grd);
+        var oldBody = dragger.dragNode.pWindow;
+
+        if (grd.pWindow &&	grd.pWindow.dhtmlDragAndDrop.lastLanding)
+            grd.pWindow.dhtmlDragAndDrop.lastLanding.dragLanding._dragOut(grd.pWindow.dhtmlDragAndDrop.lastLanding);
+
+        //		var oldp=dragger.dragNode.parentObject;
+        if (_isIE){
+            var div = document.createElement("Div");
+            div.innerHTML=dragger.dragNode.outerHTML;
+            dragger.dragNode=div.childNodes[0];
+        } else
+            dragger.dragNode=dragger.dragNode.cloneNode(true);
+
+        dragger.dragNode.pWindow=window;
+        //		dragger.dragNode.parentObject=oldp;
+
+        dragger.gldragNode.old=dragger.dragNode;
+        document.body.appendChild(dragger.dragNode);
+        oldBody.dhtmlDragAndDrop.dragNode=dragger.dragNode;
+    }
+
+    dragger.dragNode.style.left=e.clientX+15 + 
+        (dragger.fx ? dragger.fx*(-1) : 0) +
+        (document.body.scrollLeft||document.documentElement.scrollLeft)+"px";
+    dragger.dragNode.style.top=e.clientY+3+
+        (dragger.fy ? dragger.fy*(-1) : 0) +
+        (document.body.scrollTop||document.documentElement.scrollTop)+"px";
+
+    var z;
+    if (!e.srcElement)
+        z = e.target;
+    else
+        z=e.srcElement;
+    dragger.checkLanding(z, e);
+};
+
+dhtmlDragAndDropObject.prototype.calculateFramePosition=function(n){
+    //this.fx = 0, this.fy = 0;
+    if (window.name){
+        var el = parent.frames[window.name].frameElement.offsetParent;
+        var fx = 0;
+        var fy = 0;
+
+        while (el){
+            fx+=el.offsetLeft;
+            fy+=el.offsetTop;
+            el=el.offsetParent;
+        }
+
+        if ((parent.dhtmlDragAndDrop)){
+            var ls = parent.dhtmlDragAndDrop.calculateFramePosition(1);
+            fx+=ls.split('_')[0]*1;
+            fy+=ls.split('_')[1]*1;
+        }
+
+        if (n)
+            return fx+"_"+fy;
+        else
+            this.fx=fx;
+        this.fy=fy;
+    }
+    return "0_0";
+};
+
+dhtmlDragAndDropObject.prototype.checkLanding=function(htmlObject, e){
+    if ((htmlObject)&&(htmlObject.dragLanding)){
+        if (this.lastLanding)
+            this.lastLanding.dragLanding._dragOut(this.lastLanding);
+        this.lastLanding=htmlObject;
+        this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, e.clientX,
+            e.clientY, e);
+        this.lastLanding_scr=(_isIE ? e.srcElement : e.target);
+    } else {
+        if ((htmlObject)&&(htmlObject.tagName != "BODY"))
+            this.checkLanding(htmlObject.parentNode, e);
+        else {
+            if (this.lastLanding)
+                this.lastLanding.dragLanding._dragOut(this.lastLanding, e.clientX, e.clientY, e);
+            this.lastLanding=0;
+
+            if (this._onNotFound)
+                this._onNotFound();
+        }
+    }
+};
+
+dhtmlDragAndDropObject.prototype.stopDrag=function(e, mode){
+    var dragger=window.dhtmlDragAndDrop;
+
+    if (!mode){
+        dragger.stopFrameRoute();
+        var temp = dragger.lastLanding;
+        dragger.lastLanding=null;
+
+        if (temp)
+            temp.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, temp,
+                (_isIE ? event.srcElement : e.target));
+    }
+    dragger.lastLanding=null;
+
+    if ((dragger.dragNode)&&(dragger.dragNode.parentNode == document.body))
+        dragger.dragNode.parentNode.removeChild(dragger.dragNode);
+    dragger.dragNode=0;
+    dragger.gldragNode=0;
+    dragger.fx=0;
+    dragger.fy=0;
+    dragger.dragStartNode=0;
+    dragger.dragStartObject=0;
+    document.body.onmouseup=dragger.tempDOMU;
+    document.body.onmousemove=dragger.tempDOMM;
+    dragger.tempDOMU=null;
+    dragger.tempDOMM=null;
+    dragger.waitDrag=0;
+};
+
+dhtmlDragAndDropObject.prototype.stopFrameRoute=function(win){
+    if (win)
+        window.dhtmlDragAndDrop.stopDrag(1, 1);
+
+    for (var i = 0; i < window.frames.length; i++){
+        try{
+            if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
+                window.frames[i].dhtmlDragAndDrop.stopFrameRoute(window);
+        } catch(e){}
+    }
+
+    try{
+        if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
+            parent.dhtmlDragAndDrop.stopFrameRoute(window);
+    } catch(e){}
+};
+
+dhtmlDragAndDropObject.prototype.initFrameRoute=function(win, mode){
+    if (win){
+        window.dhtmlDragAndDrop.preCreateDragCopy();
+        window.dhtmlDragAndDrop.dragStartNode=win.dhtmlDragAndDrop.dragStartNode;
+        window.dhtmlDragAndDrop.dragStartObject=win.dhtmlDragAndDrop.dragStartObject;
+        window.dhtmlDragAndDrop.dragNode=win.dhtmlDragAndDrop.dragNode;
+        window.dhtmlDragAndDrop.gldragNode=win.dhtmlDragAndDrop.dragNode;
+        window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag;
+        window.waitDrag=0;
+
+        if (((!_isIE)&&(mode))&&((!_isFF)||(_FFrv < 1.8)))
+            window.dhtmlDragAndDrop.calculateFramePosition();
+    }
+    try{
+        if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
+            parent.dhtmlDragAndDrop.initFrameRoute(window);
+    }catch(e){}
+
+    for (var i = 0; i < window.frames.length; i++){
+        try{
+            if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
+                window.frames[i].dhtmlDragAndDrop.initFrameRoute(window, ((!win||mode) ? 1 : 0));
+        } catch(e){}
+    }
+};
+
+_isFF = false;
+_isIE = false;
+_isOpera = false;
+_isKHTML = false;
+_isMacOS = false;
+_isChrome = false;
+_FFrv = false;
+_KHTMLrv = false;
+_OperaRv = false;
+
+if (navigator.userAgent.indexOf('Macintosh') != -1)
+    _isMacOS=true;
+
+
+if (navigator.userAgent.toLowerCase().indexOf('chrome')>-1)
+    _isChrome=true;
+
+if ((navigator.userAgent.indexOf('Safari') != -1)||(navigator.userAgent.indexOf('Konqueror') != -1)){
+    _KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Safari')+7, 5));
+
+    if (_KHTMLrv > 525){ //mimic FF behavior for Safari 3.1+
+        _isFF=true;
+        _FFrv = 1.9;
+    } else
+        _isKHTML=true;
+} else if (navigator.userAgent.indexOf('Opera') != -1){
+    _isOpera=true;
+    _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6, 3));
+}
+
+
+else if (navigator.appName.indexOf("Microsoft") != -1){
+    _isIE=true;
+    if ((navigator.appVersion.indexOf("MSIE 8.0")!= -1 || navigator.appVersion.indexOf("MSIE 9.0")!= -1 || navigator.appVersion.indexOf("MSIE 10.0")!= -1 ) && document.compatMode != "BackCompat"){
+        _isIE=8;
+    }
+} else if (navigator.appName  == 'Netscape' && navigator.userAgent.indexOf("Trident") != -1){
+	//ie11
+	_isIE=8;
+} else {
+    _isFF=true;
+    _FFrv = parseFloat(navigator.userAgent.split("rv:")[1]);
+}
+
+
+//multibrowser Xpath processor
+dtmlXMLLoaderObject.prototype.doXPath=function(xpathExp, docObj, namespace, result_type){
+    if (_isKHTML || (!_isIE && !window.XPathResult))
+        return this.doXPathOpera(xpathExp, docObj);
+
+    if (_isIE){ //IE
+        if (!docObj)
+            if (!this.xmlDoc.nodeName)
+                docObj=this.xmlDoc.responseXML;
+            else
+                docObj=this.xmlDoc;
+
+        if (!docObj)
+            dhtmlxError.throwError("LoadXML", "Incorrect XML", [
+                (docObj||this.xmlDoc),
+                this.mainObject
+            ]);
+
+        if (namespace)
+            docObj.setProperty("SelectionNamespaces", "xmlns:xsl='"+namespace+"'"); //
+
+        if (result_type == 'single'){
+            return docObj.selectSingleNode(xpathExp);
+        }
+        else {
+            return docObj.selectNodes(xpathExp)||new Array(0);
+        }
+    } else { //Mozilla
+        var nodeObj = docObj;
+
+        if (!docObj){
+            if (!this.xmlDoc.nodeName){
+                docObj=this.xmlDoc.responseXML;
+            }
+            else {
+                docObj=this.xmlDoc;
+            }
+        }
+
+        if (!docObj)
+            dhtmlxError.throwError("LoadXML", "Incorrect XML", [
+                (docObj||this.xmlDoc),
+                this.mainObject
+            ]);
+
+        if (docObj.nodeName.indexOf("document") != -1){
+            nodeObj=docObj;
+        }
+        else {
+            nodeObj=docObj;
+            docObj=docObj.ownerDocument;
+        }
+        var retType = XPathResult.ANY_TYPE;
+
+        if (result_type == 'single')
+            retType=XPathResult.FIRST_ORDERED_NODE_TYPE;
+        var rowsCol = [];
+        var col = docObj.evaluate(xpathExp, nodeObj, function(pref){
+            return namespace;
+        }, retType, null);
+
+        if (retType == XPathResult.FIRST_ORDERED_NODE_TYPE){
+            return col.singleNodeValue;
+        }
+        var thisColMemb = col.iterateNext();
+
+        while (thisColMemb){
+            rowsCol[rowsCol.length]=thisColMemb;
+            thisColMemb=col.iterateNext();
+        }
+        return rowsCol;
+    }
+};
+
+function _dhtmlxError(type, name, params){
+    if (!this.catches)
+        this.catches=[];
+
+    return this;
+}
+
+_dhtmlxError.prototype.catchError=function(type, func_name){
+    this.catches[type]=func_name;
+};
+
+_dhtmlxError.prototype.throwError=function(type, name, params){
+    if (this.catches[type])
+        return this.catches[type](type, name, params);
+
+    if (this.catches["ALL"])
+        return this.catches["ALL"](type, name, params);
+
+    window.alert("Error type: "+arguments[0]+"\nDescription: "+arguments[1]);
+    return null;
+};
+
+window.dhtmlxError=new _dhtmlxError();
+
+
+//opera fake, while 9.0 not released
+//multibrowser Xpath processor
+dtmlXMLLoaderObject.prototype.doXPathOpera=function(xpathExp, docObj){
+    //this is fake for Opera
+    var z = xpathExp.replace(/[\/]+/gi, "/").split('/');
+    var obj = null;
+    var i = 1;
+
+    if (!z.length)
+        return [];
+
+    if (z[0] == ".")
+        obj=[docObj]; else if (z[0] === ""){
+        obj=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(z[i].replace(/\[[^\]]*\]/g, ""));
+        i++;
+    } else
+        return [];
+
+    for (i; i < z.length; i++)obj=this._getAllNamedChilds(obj, z[i]);
+
+    if (z[i-1].indexOf("[") != -1)
+        obj=this._filterXPath(obj, z[i-1]);
+    return obj;
+};
+
+dtmlXMLLoaderObject.prototype._filterXPath=function(a, b){
+    var c = [];
+    var b = b.replace(/[^\[]*\[\@/g, "").replace(/[\[\]\@]*/g, "");
+
+    for (var i = 0; i < a.length; i++)
+        if (a[i].getAttribute(b))
+            c[c.length]=a[i];
+
+    return c;
+};
+
+dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a, b){
+    var c = [];
+
+    if (_isKHTML)
+        b=b.toUpperCase();
+
+    for (var i = 0; i < a.length; i++)for (var j = 0; j < a[i].childNodes.length; j++){
+        if (_isKHTML){
+            if (a[i].childNodes[j].tagName&&a[i].childNodes[j].tagName.toUpperCase() == b)
+                c[c.length]=a[i].childNodes[j];
+        }
+
+        else if (a[i].childNodes[j].tagName == b)
+            c[c.length]=a[i].childNodes[j];
+    }
+
+    return c;
+};
+
+function dhtmlXHeir(a, b){
+    for (var c in b)
+        if (typeof (b[c]) == "function")
+            a[c]=b[c];
+    return a;
+}
+
+if(typeof (window.dhtmlxEvent) == 'undefined'){
+    window.dhtmlxEvent = function dhtmlxEvent(el, event, handler){
+        if (el.addEventListener)
+            el.addEventListener(event, handler, false);
+
+        else if (el.attachEvent)
+            el.attachEvent("on"+event, handler);
+    };
+}
+
+//============= XSL Extension ===================================
+
+dtmlXMLLoaderObject.prototype.xslDoc=null;
+dtmlXMLLoaderObject.prototype.setXSLParamValue=function(paramName, paramValue, xslDoc){
+    if (!xslDoc)
+        xslDoc=this.xslDoc;
+
+    if (xslDoc.responseXML)
+        xslDoc=xslDoc.responseXML;
+    var item =
+        this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+paramName+"']", xslDoc,
+            "http:/\/www.w3.org/1999/XSL/Transform", "single");
+
+    if (item)
+        item.firstChild.nodeValue=paramValue;
+};
+
+dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(xslDoc, xmlDoc){
+    if (!xslDoc)
+        xslDoc=this.xslDoc;
+
+    if (xslDoc.responseXML)
+        xslDoc=xslDoc.responseXML;
+
+    if (!xmlDoc)
+        xmlDoc=this.xmlDoc;
+
+    if (xmlDoc.responseXML)
+        xmlDoc=xmlDoc.responseXML;
+
+    
+    var result;
+    //Mozilla
+    if (!_isIE){
+        if (!this.XSLProcessor){
+            this.XSLProcessor=new XSLTProcessor();
+            this.XSLProcessor.importStylesheet(xslDoc);
+        }
+        result = this.XSLProcessor.transformToDocument(xmlDoc);
+    } else {
+        result = new ActiveXObject("Msxml2.DOMDocument.3.0");
+        try{
+            xmlDoc.transformNodeToObject(xslDoc, result);
+        }catch(e){
+            result = xmlDoc.transformNode(xslDoc);
+        }
+    }
+    return result;
+};
+
+dtmlXMLLoaderObject.prototype.doXSLTransToString=function(xslDoc, xmlDoc){
+    var res = this.doXSLTransToObject(xslDoc, xmlDoc);
+    if(typeof(res)=="string")
+        return res;
+    return this.doSerialization(res);
+};
+
+dtmlXMLLoaderObject.prototype.doSerialization=function(xmlDoc){
+    if (!xmlDoc)
+        xmlDoc=this.xmlDoc;
+    if (xmlDoc.responseXML)
+        xmlDoc=xmlDoc.responseXML;
+    if (!_isIE){
+        var xmlSerializer = new XMLSerializer();
+        return xmlSerializer.serializeToString(xmlDoc);
+    } else
+        return xmlDoc.xml;
+};
+
+/**
+ *   @desc:
+ *   @type: private
+ */
+dhtmlxEventable=function(obj){
+    obj.attachEvent=function(name, catcher, callObj){
+        name='ev_'+name.toLowerCase();
+        if (!this[name])
+            this[name]=new this.eventCatcher(callObj||this);
+
+        return(name+':'+this[name].addEvent(catcher)); //return ID (event name & event ID)
+    };
+    obj.callEvent=function(name, arg0){
+        name='ev_'+name.toLowerCase();
+        if (this[name])
+            return this[name].apply(this, arg0);
+        return true;
+    };
+    obj.checkEvent=function(name){
+        return (!!this['ev_'+name.toLowerCase()]);
+    };
+    obj.eventCatcher=function(obj){
+        var dhx_catch = [];
+        var z = function(){
+            var res = true;
+            for (var i = 0; i < dhx_catch.length; i++){
+                if (dhx_catch[i]){
+                    var zr = dhx_catch[i].apply(obj, arguments);
+                    res=res&&zr;
+                }
+            }
+            return res;
+        };
+        z.addEvent=function(ev){
+            if (typeof (ev) != "function")
+                ev=eval(ev);
+            if (ev)
+                return dhx_catch.push(ev)-1;
+            return false;
+        };
+        z.removeEvent=function(id){
+            dhx_catch[id]=null;
+        };
+        return z;
+    };
+    obj.detachEvent=function(id){
+        if (id){
+            var list = id.split(':');           //get EventName and ID
+            this[list[0]].removeEvent(list[1]); //remove event
+        }
+    };
+    obj.detachAllEvents = function(){
+        for (var name in this){
+            if (name.indexOf("ev_")===0){
+                this.detachEvent(name);
+                this[name] = null;
+            }
+        }
+    };
+    obj = null;
+};
+if(!window.dhtmlx)
+	window.dhtmlx = {};
+
+(function(){
+	var _dhx_msg_cfg = null;
+	function callback(config, result){
+			var usercall = config.callback;
+			modality(false);
+			config.box.parentNode.removeChild(config.box);
+			_dhx_msg_cfg = config.box = null;
+			if (usercall)
+				usercall(result);
+	}
+	function modal_key(e){
+		if (_dhx_msg_cfg){
+			e = e||event;
+			var code = e.which||event.keyCode;
+			if (dhtmlx.message.keyboard){
+				if (code == 13 || code == 32)
+					callback(_dhx_msg_cfg, true);
+				if (code == 27)
+					callback(_dhx_msg_cfg, false);
+			}
+			if (e.preventDefault)
+				e.preventDefault();
+			return !(e.cancelBubble = true);
+		}
+	}
+	if (document.attachEvent)
+		document.attachEvent("onkeydown", modal_key);
+	else
+		document.addEventListener("keydown", modal_key, true);
+		
+	function modality(mode){
+		if(!modality.cover){
+			modality.cover = document.createElement("DIV");
+			//necessary for IE only
+			modality.cover.onkeydown = modal_key;
+			modality.cover.className = "dhx_modal_cover";
+			document.body.appendChild(modality.cover);
+		}
+		var height =  document.body.scrollHeight;
+		modality.cover.style.display = mode?"inline-block":"none";
+	}
+
+	function button(text, result, css){
+		// css - for locale-independent class name
+		var className = css ? css : (text || "");
+		var button_css = "dhtmlx_"+(className).toLowerCase().replace(/ /g, "_")+"_button"; // dhtmlx_ok_button, dhtmlx_click_me_button
+		return "<div class='dhtmlx_popup_button "+button_css+"' result='"+result+"' ><div>"+text+"</div></div>";
+	}
+
+	function info(text){
+		if (!t.area){
+			t.area = document.createElement("DIV");
+			t.area.className = "dhtmlx_message_area";
+			t.area.style[t.position]="5px";
+			document.body.appendChild(t.area);
+		}
+
+		t.hide(text.id);
+		var message = document.createElement("DIV");
+		message.innerHTML = "<div>"+text.text+"</div>";
+		message.className = "dhtmlx-info dhtmlx-" + text.type;
+		message.onclick = function(){
+			t.hide(text.id);
+			text = null;
+		};
+
+		if (t.position == "bottom" && t.area.firstChild)
+			t.area.insertBefore(message,t.area.firstChild);
+		else
+			t.area.appendChild(message);
+		
+		if (text.expire > 0)
+			t.timers[text.id]=window.setTimeout(function(){
+				t.hide(text.id);
+			}, text.expire);
+
+		t.pull[text.id] = message;
+		message = null;
+
+		return text.id;
+	}
+	function _boxStructure(config, ok, cancel){
+		var box = document.createElement("DIV");
+		box.className = " dhtmlx_modal_box dhtmlx-"+config.type;
+		box.setAttribute("dhxbox", 1);
+			
+		var inner = '';
+
+		if (config.width)
+			box.style.width = config.width;
+		if (config.height)
+			box.style.height = config.height;
+		if (config.title)
+			inner+='<div class="dhtmlx_popup_title">'+config.title+'</div>';
+		inner+='<div class="dhtmlx_popup_text"><span>'+(config.content?'':config.text)+'</span></div><div  class="dhtmlx_popup_controls">';
+		if (ok){
+			var ok_text = (config.ok || scheduler.locale.labels.message_ok);
+			//default value for compatibility with custom locales some people have
+			if(ok_text === undefined) ok_text = "OK";
+			inner += button(ok_text, true, "ok");
+		}
+		if (cancel){
+			var cancel_text = (config.cancel || scheduler.locale.labels.message_cancel);
+			if(cancel_text === undefined) cancel_text = "Cancel";
+			inner += button(cancel_text, false, "cancel");
+		}
+		if (config.buttons){
+			for (var i=0; i<config.buttons.length; i++)
+				inner += button(config.buttons[i],i);
+		}
+		inner += '</div>';
+		box.innerHTML = inner;
+
+		if (config.content){
+			var node = config.content;
+			if (typeof node == "string") 
+				node = document.getElementById(node);
+			if (node.style.display == 'none')
+				node.style.display = "";
+			box.childNodes[config.title?1:0].appendChild(node);
+		}
+
+		box.onclick = function(e){
+			e = e ||event;
+			var source = e.target || e.srcElement;
+			if (!source.className) source = source.parentNode;
+			if (source.className.split(" ")[0] == "dhtmlx_popup_button"){
+				var result = source.getAttribute("result");
+				result = (result == "true")||(result == "false"?false:result);
+				callback(config, result);
+			}
+		};
+		config.box = box;
+		if (ok||cancel)
+			_dhx_msg_cfg = config;
+
+		return box;
+	}
+	function _createBox(config, ok, cancel){
+		var box = config.tagName ? config : _boxStructure(config, ok, cancel);
+		
+		if (!config.hidden)
+			modality(true);
+		document.body.appendChild(box);
+		var x = Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth) - box.offsetWidth)/2));
+		var y = Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight) - box.offsetHeight)/2));
+		if (config.position == "top")
+			box.style.top = "-3px";
+		else
+			box.style.top = y+'px';
+		box.style.left = x+'px';
+		//necessary for IE only
+		box.onkeydown = modal_key;
+
+		box.focus();
+		if (config.hidden)
+			dhtmlx.modalbox.hide(box);
+
+		return box;
+	}
+
+	function alertPopup(config){
+		return _createBox(config, true, false);
+	}
+	function confirmPopup(config){
+		return _createBox(config, true, true);
+	}
+	function boxPopup(config){
+		return _createBox(config);
+	}
+	function box_params(text, type, callback){
+		if (typeof text != "object"){
+			if (typeof type == "function"){
+				callback = type;
+				type = "";
+			}
+			text = {text:text, type:type, callback:callback };
+		}
+		return text;
+	}
+	function params(text, type, expire, id){
+		if (typeof text != "object")
+			text = {text:text, type:type, expire:expire, id:id};
+		text.id = text.id||t.uid();
+		text.expire = text.expire||t.expire;
+		return text;
+	}
+	dhtmlx.alert = function(){
+		var text = box_params.apply(this, arguments);
+		text.type = text.type || "confirm";
+		return alertPopup(text);
+	};
+	dhtmlx.confirm = function(){
+		var text = box_params.apply(this, arguments);
+		text.type = text.type || "alert";
+		return confirmPopup(text);
+	};
+	dhtmlx.modalbox = function(){
+		var text = box_params.apply(this, arguments);
+		text.type = text.type || "alert";
+		return boxPopup(text);
+	};
+	dhtmlx.modalbox.hide = function(node){
+		while (node && node.getAttribute && !node.getAttribute("dhxbox"))
+			node = node.parentNode;
+		if (node){
+			node.parentNode.removeChild(node);
+			modality(false);
+		}
+	};
+	var t = dhtmlx.message = function(text, type, expire, id){
+		text = params.apply(this, arguments);
+		text.type = text.type||"info";
+
+		var subtype = text.type.split("-")[0];
+		switch (subtype){
+			case "alert":
+				return alertPopup(text);
+			case "confirm":
+				return confirmPopup(text);
+			case "modalbox":
+				return boxPopup(text);
+			default:
+				return info(text);
+		}
+	};
+
+	t.seed = (new Date()).valueOf();
+	t.uid = function(){return t.seed++;};
+	t.expire = 4000;
+	t.keyboard = true;
+	t.position = "top";
+	t.pull = {};
+	t.timers = {};
+
+	t.hideAll = function(){
+		for (var key in t.pull)
+			t.hide(key);
+	};
+	t.hide = function(id){
+		var obj = t.pull[id];
+		if (obj && obj.parentNode){
+			window.setTimeout(function(){
+				obj.parentNode.removeChild(obj);
+				obj = null;
+			},2000);
+			obj.className+=" hidden";
+			
+			if(t.timers[id])
+				window.clearTimeout(t.timers[id]);
+			delete t.pull[id];
+		}
+	};
+})();
+/**
+	* 	@desc: constructor, data processor object 
+	*	@param: serverProcessorURL - url used for update
+	*	@type: public
+	*/
+function dataProcessor(serverProcessorURL){
+    this.serverProcessor = serverProcessorURL;
+    this.action_param="!nativeeditor_status";
+    
+	this.object = null;
+	this.updatedRows = []; //ids of updated rows
+	
+	this.autoUpdate = true;
+	this.updateMode = "cell";
+	this._tMode="GET"; 
+	this.post_delim = "_";
+	
+    this._waitMode=0;
+    this._in_progress={};//?
+    this._invalid={};
+    this.mandatoryFields=[];
+    this.messages=[];
+    
+    this.styles={
+    	updated:"font-weight:bold;",
+    	inserted:"font-weight:bold;",
+    	deleted:"text-decoration : line-through;",
+    	invalid:"background-color:FFE0E0;",
+    	invalid_cell:"border-bottom:2px solid red;",
+    	error:"color:red;",
+    	clear:"font-weight:normal;text-decoration:none;"
+    };
+    
+    this.enableUTFencoding(true);
+    dhtmlxEventable(this);
+
+    return this;
+    }
+
+dataProcessor.prototype={
+	/**
+	* 	@desc: select GET or POST transaction model
+	*	@param: mode - GET/POST
+	*	@param: total - true/false - send records row by row or all at once (for grid only)
+	*	@type: public
+	*/
+	setTransactionMode:function(mode,total){
+        this._tMode=mode;
+		this._tSend=total;
+		if (mode == "REST"){
+			this._tSend = false;
+			this._endnm = true;
+		}
+    },
+    escape:function(data){
+    	if (this._utf)
+    		return encodeURIComponent(data);
+    	else
+        	return escape(data);
+	},
+    /**
+	* 	@desc: allows to set escaping mode
+	*	@param: true - utf based escaping, simple - use current page encoding
+	*	@type: public
+	*/	
+	enableUTFencoding:function(mode){
+        this._utf=convertStringToBoolean(mode);
+    },
+    /**
+	* 	@desc: allows to define, which column may trigger update
+	*	@param: val - array or list of true/false values
+	*	@type: public
+	*/
+	setDataColumns:function(val){
+		this._columns=(typeof val == "string")?val.split(","):val;
+    },
+    /**
+	* 	@desc: get state of updating
+	*	@returns:   true - all in sync with server, false - some items not updated yet.
+	*	@type: public
+	*/
+	getSyncState:function(){
+		return !this.updatedRows.length;
+	},
+	/**
+	* 	@desc: enable/disable named field for data syncing, will use column ids for grid
+	*	@param:   mode - true/false
+	*	@type: public
+	*/
+	enableDataNames:function(mode){
+		this._endnm=convertStringToBoolean(mode);
+	},
+	/**
+	* 	@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode
+	*	@param:   mode - true/false
+	*	@type: public
+	*/
+	enablePartialDataSend:function(mode){
+		this._changed=convertStringToBoolean(mode);
+	},
+	/**
+	* 	@desc: set if rows should be send to server automaticaly
+	*	@param: mode - "row" - based on row selection changed, "cell" - based on cell editing finished, "off" - manual data sending
+	*	@type: public
+	*/
+	setUpdateMode:function(mode,dnd){
+		this.autoUpdate = (mode=="cell");
+		this.updateMode = mode;
+		this.dnd=dnd;
+	},
+	ignore:function(code,master){
+		this._silent_mode=true;
+		code.call(master||window);
+		this._silent_mode=false;
+	},
+	/**
+	* 	@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)
+	*	@param: rowId - id of row to set update-status for
+	*	@param: state - true for "updated", false for "not updated"
+	*	@param: mode - update mode name
+	*	@type: public
+	*/
+	setUpdated:function(rowId,state,mode){
+		if (this._silent_mode) return;
+		var ind=this.findRow(rowId);
+		
+		mode=mode||"updated";
+		var existing = this.obj.getUserData(rowId,this.action_param);
+		if (existing && mode == "updated") mode=existing;
+		if (state){
+			this.set_invalid(rowId,false); //clear previous error flag
+			this.updatedRows[ind]=rowId;
+			this.obj.setUserData(rowId,this.action_param,mode);
+			if (this._in_progress[rowId]) 
+				this._in_progress[rowId]="wait";
+		} else{
+			if (!this.is_invalid(rowId)){
+				this.updatedRows.splice(ind,1);
+				this.obj.setUserData(rowId,this.action_param,"");
+			}
+		}
+
+		//clear changed flag
+		if (!state)
+			this._clearUpdateFlag(rowId);
+     			
+		this.markRow(rowId,state,mode);
+		if (state && this.autoUpdate) this.sendData(rowId);
+	},
+	_clearUpdateFlag:function(id){},
+	markRow:function(id,state,mode){ 
+		var str="";
+		var invalid=this.is_invalid(id);
+		if (invalid){
+        	str=this.styles[invalid];
+        	state=true;
+    	}
+		if (this.callEvent("onRowMark",[id,state,mode,invalid])){
+			//default logic
+			str=this.styles[state?mode:"clear"]+str;
+			
+        	this.obj[this._methods[0]](id,str);
+
+			if (invalid && invalid.details){
+				str+=this.styles[invalid+"_cell"];
+				for (var i=0; i < invalid.details.length; i++)
+					if (invalid.details[i])
+        				this.obj[this._methods[1]](id,i,str);
+			}
+		}
+	},
+	getState:function(id){
+		return this.obj.getUserData(id,this.action_param);
+	},
+	is_invalid:function(id){
+		return this._invalid[id];
+	},
+	set_invalid:function(id,mode,details){ 
+		if (details) mode={value:mode, details:details, toString:function(){ return this.value.toString(); }};
+		this._invalid[id]=mode;
+	},
+	/**
+	* 	@desc: check mandatory fields and varify values of cells, initiate update (if specified)
+	*	@param: rowId - id of row to set update-status for
+	*	@type: public
+	*/
+	checkBeforeUpdate:function(rowId){ 
+		return true;
+	},
+	/**
+	* 	@desc: send row(s) values to server
+	*	@param: rowId - id of row which data to send. If not specified, then all "updated" rows will be send
+	*	@type: public
+	*/
+	sendData:function(rowId){
+		if (this._waitMode && (this.obj.mytype=="tree" || this.obj._h2)) return;
+		if (this.obj.editStop) this.obj.editStop();
+	
+		
+		if(typeof rowId == "undefined" || this._tSend) return this.sendAllData();
+		if (this._in_progress[rowId]) return false;
+		
+		this.messages=[];
+		if (!this.checkBeforeUpdate(rowId) && this.callEvent("onValidationError",[rowId,this.messages])) return false;
+		this._beforeSendData(this._getRowData(rowId),rowId);
+    },
+    _beforeSendData:function(data,rowId){
+    	if (!this.callEvent("onBeforeUpdate",[rowId,this.getState(rowId),data])) return false;	
+		this._sendData(data,rowId);
+    },
+    serialize:function(data, id){
+    	if (typeof data == "string")
+    		return data;
+    	if (typeof id != "undefined")
+    		return this.serialize_one(data,"");
+    	else{
+    		var stack = [];
+    		var keys = [];
+    		for (var key in data)
+    			if (data.hasOwnProperty(key)){
+    				stack.push(this.serialize_one(data[key],key+this.post_delim));
+    				keys.push(key);
+				}
+    		stack.push("ids="+this.escape(keys.join(",")));
+    		if (dhtmlx.security_key)
+				stack.push("dhx_security="+dhtmlx.security_key);
+    		return stack.join("&");
+    	}
+    },
+    serialize_one:function(data, pref){
+    	if (typeof data == "string")
+    		return data;
+    	var stack = [];
+    	for (var key in data)
+    		if (data.hasOwnProperty(key)){
+    			if ((key == "id" || key == this.action_param) && this._tMode == "REST") continue;
+    			stack.push(this.escape((pref||"")+key)+"="+this.escape(data[key]));
+    		}
+		return stack.join("&");
+    },
+    _sendData:function(a1,rowId){
+    	if (!a1) return; //nothing to send
+		if (!this.callEvent("onBeforeDataSending",rowId?[rowId,this.getState(rowId),a1]:[null, null, a1])) return false;				
+		
+    	if (rowId)
+			this._in_progress[rowId]=(new Date()).valueOf();
+		var a2=new dtmlXMLLoaderObject(function(that,b,c,d,xml){
+			var ids = [];
+			if (rowId)
+				ids.push(rowId);
+			else if (a1)
+				for (var key in a1)
+					ids.push(key);
+
+			return that.afterUpdate(that,xml,ids);
+		},this,true);
+		
+		var a3 = this.serverProcessor+(this._user?(getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&")):"");
+
+		if (this._tMode=="GET")
+        	a2.loadXML(a3+((a3.indexOf("?")!=-1)?"&":"?")+this.serialize(a1,rowId));
+		else if (this._tMode == "POST")
+        	a2.loadXML(a3,true,this.serialize(a1,rowId));
+        else if (this._tMode == "REST"){
+        	var state = this.getState(rowId);
+        	var url = a3.replace(/(\&|\?)editing\=true/,"");
+        	if (state == "inserted")
+        		a2.loadXML(url+rowId,"POST",this.serialize(a1,rowId));
+        	else if (state == "deleted")
+        		a2.loadXML(url+rowId,"DELETE","");
+        	else
+        		a2.loadXML(url+rowId,"PUT",this.serialize(a1,rowId));
+        }
+
+		this._waitMode++;
+    },
+	sendAllData:function(){
+		if (!this.updatedRows.length) return;			
+
+		this.messages=[]; var valid=true;
+		for (var i=0; i<this.updatedRows.length; i++)
+			valid&=this.checkBeforeUpdate(this.updatedRows[i]);
+		if (!valid && !this.callEvent("onValidationError",["",this.messages])) return false;
+	
+		if (this._tSend) 
+			this._sendData(this._getAllData());
+		else
+			for (var i=0; i<this.updatedRows.length; i++)
+				if (!this._in_progress[this.updatedRows[i]]){
+					if (this.is_invalid(this.updatedRows[i])) continue;
+					this._beforeSendData(this._getRowData(this.updatedRows[i]),this.updatedRows[i]);
+					if (this._waitMode && (this.obj.mytype=="tree" || this.obj._h2)) return; //block send all for tree
+				}
+	},
+    
+	
+	
+	
+	
+	
+	
+	
+	_getAllData:function(rowId){
+		var out={};
+		var has_one = false;
+		for(var i=0;i<this.updatedRows.length;i++){
+			var id=this.updatedRows[i];
+			if (this._in_progress[id] || this.is_invalid(id)) continue;
+			if (!this.callEvent("onBeforeUpdate",[id,this.getState(id), this._getRowData(id)])) continue;
+			out[id]=this._getRowData(id,id+this.post_delim);
+			has_one = true;
+			this._in_progress[id]=(new Date()).valueOf();
+		}
+		return has_one?out:null;
+	},
+	
+	
+	/**
+	* 	@desc: specify column which value should be varified before sending to server
+	*	@param: ind - column index (0 based)
+	*	@param: verifFunction - function (object) which should verify cell value (if not specified, then value will be compared to empty string). Two arguments will be passed into it: value and column name
+	*	@type: public
+	*/
+	setVerificator:function(ind,verifFunction){
+		this.mandatoryFields[ind] = verifFunction||(function(value){return (value!=="");});
+	},
+	/**
+	* 	@desc: remove column from list of those which should be verified
+	*	@param: ind - column Index (0 based)
+	*	@type: public
+	*/
+	clearVerificator:function(ind){
+		this.mandatoryFields[ind] = false;
+	},
+	
+	
+	
+	
+	
+	findRow:function(pattern){
+		var i=0;
+    	for(i=0;i<this.updatedRows.length;i++)
+		    if(pattern==this.updatedRows[i]) break;
+	    return i;
+    },
+
+   
+	
+
+
+    
+
+
+
+
+
+	/**
+	* 	@desc: define custom actions
+	*	@param: name - name of action, same as value of action attribute
+	*	@param: handler - custom function, which receives a XMl response content for action
+	*	@type: private
+	*/
+	defineAction:function(name,handler){
+        if (!this._uActions) this._uActions=[];
+            this._uActions[name]=handler;
+	},
+
+
+
+
+	/**
+*     @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system
+*     @param: sid - id of item before update
+*     @param: tid - id of item after up0ate
+*     @param: action - action name
+*     @type: public
+*     @topic: 0
+*/
+	afterUpdateCallback:function(sid, tid, action, btag) {
+		var marker = sid;
+		var correct=(action!="error" && action!="invalid");
+		if (!correct) this.set_invalid(sid,action);
+		if ((this._uActions)&&(this._uActions[action])&&(!this._uActions[action](btag))) 
+			return (delete this._in_progress[marker]);
+			
+		if (this._in_progress[marker]!="wait")
+	    	this.setUpdated(sid, false);
+	    	
+	    var soid = sid;
+	
+	    switch (action) {
+	    case "inserted":
+	    case "insert":
+	        if (tid != sid) {
+	            this.obj[this._methods[2]](sid, tid);
+	            sid = tid;
+	        }
+	        break;
+	    case "delete":
+	    case "deleted":
+	    	this.obj.setUserData(sid, this.action_param, "true_deleted");
+	        this.obj[this._methods[3]](sid);
+	        delete this._in_progress[marker];
+	        return this.callEvent("onAfterUpdate", [sid, action, tid, btag]);
+	    }
+	    
+	    if (this._in_progress[marker]!="wait"){
+	    	if (correct) this.obj.setUserData(sid, this.action_param,'');
+	    	delete this._in_progress[marker];
+    	} else {
+    		delete this._in_progress[marker];
+    		this.setUpdated(tid,true,this.obj.getUserData(sid,this.action_param));
+		}
+	    
+	    this.callEvent("onAfterUpdate", [soid, action, tid, btag]);
+	},
+
+	/**
+	* 	@desc: response from server
+	*	@param: xml - XMLLoader object with response XML
+	*	@type: private
+	*/
+	afterUpdate:function(that,xml,id){
+		//try to use json first
+		if (window.JSON){
+			try{
+				var tag = JSON.parse(xml.xmlDoc.responseText);
+				var action = tag.action || this.getState(id) || "updated";
+				var sid = tag.sid || id[0];
+				var tid = tag.tid || id[0];
+				that.afterUpdateCallback(sid, tid, action, tag);
+				that.finalizeUpdate();
+				return;
+			} catch(e){
+			}
+		}
+		//xml response
+		xml.getXMLTopNode("data"); //fix incorrect content type in IE
+
+		if (!xml.xmlDoc.responseXML){
+			if(this.obj && this.obj.callEvent){
+				this.obj.callEvent("onSaveError", [id, xml.xmlDoc]);
+			}
+			return this.cleanUpdate(id);
+		}
+
+		var atag=xml.doXPath("//data/action");
+		if (!atag.length) return this.cleanUpdate(id);
+
+		for (var i=0; i<atag.length; i++){
+        	var btag=atag[i];
+			var action = btag.getAttribute("type");
+			var sid = btag.getAttribute("sid");
+			var tid = btag.getAttribute("tid");
+			
+			that.afterUpdateCallback(sid,tid,action,btag);
+		}
+		that.finalizeUpdate();
+	},
+	cleanUpdate:function(id){
+		if (id)
+			for (var i = 0; i < id.length; i++)
+				delete this._in_progress[id[i]];
+	},
+	finalizeUpdate:function(){
+		if (this._waitMode) this._waitMode--;
+		
+		if ((this.obj.mytype=="tree" || this.obj._h2) && this.updatedRows.length) 
+			this.sendData();
+		this.callEvent("onAfterUpdateFinish",[]);
+		if (!this.updatedRows.length)
+			this.callEvent("onFullSync",[]);
+	},
+
+
+
+
+	
+	/**
+	* 	@desc: initializes data-processor
+	*	@param: anObj - dhtmlxGrid object to attach this data-processor to
+	*	@type: public
+	*/
+	init:function(anObj){
+		this.obj = anObj;
+		if (this.obj._dp_init) 
+			this.obj._dp_init(this);
+	},
+	
+	
+	setOnAfterUpdate:function(ev){
+		this.attachEvent("onAfterUpdate",ev);
+	},
+	enableDebug:function(mode){
+	},
+	setOnBeforeUpdateHandler:function(func){  
+		this.attachEvent("onBeforeDataSending",func);
+	},
+
+
+
+	/* starts autoupdate mode
+		@param interval
+			time interval for sending update requests
+	*/
+	setAutoUpdate: function(interval, user) {
+		interval = interval || 2000;
+		
+		this._user = user || (new Date()).valueOf();
+		this._need_update = false;
+		this._loader = null;
+		this._update_busy = false;
+		
+		this.attachEvent("onAfterUpdate",function(sid,action,tid,xml_node){
+			this.afterAutoUpdate(sid, action, tid, xml_node);
+		});
+		this.attachEvent("onFullSync",function(){
+			this.fullSync();
+		});
+		
+		var self = this;
+		window.setInterval(function(){
+			self.loadUpdate();
+		}, interval);
+	},
+
+
+	/* process updating request answer
+		if status == collision version is depricated
+		set flag for autoupdating immidiatly
+	*/
+	afterAutoUpdate: function(sid, action, tid, xml_node) {
+		if (action == 'collision') {
+			this._need_update = true;
+			return false;
+		} else {
+			return true;
+		}
+	},
+
+
+	/* callback function for onFillSync event
+		call update function if it's need
+	*/
+	fullSync: function() {
+		if (this._need_update) {
+			this._need_update = false;
+			this.loadUpdate();
+		}
+		return true;
+	},
+
+
+	/* sends query to the server and call callback function
+	*/
+	getUpdates: function(url,callback){
+		if (this._update_busy) 
+			return false;
+		else
+			this._update_busy = true;
+		
+		this._loader = this._loader || new dtmlXMLLoaderObject(true);
+		
+		this._loader.async=true;
+		this._loader.waitCall=callback;
+		this._loader.loadXML(url);
+	},
+
+
+	/* returns xml node value
+		@param node
+			xml node
+	*/
+	_v: function(node) {
+		if (node.firstChild) return node.firstChild.nodeValue;
+		return "";
+	},
+
+
+	/* returns values array of xml nodes array
+		@param arr
+			array of xml nodes
+	*/
+	_a: function(arr) {
+		var res = [];
+		for (var i=0; i < arr.length; i++) {
+			res[i]=this._v(arr[i]);
+		}
+		return res;
+	},
+
+
+	/* loads updates and processes them
+	*/
+	loadUpdate: function(){
+		var self = this;
+		var version = this.obj.getUserData(0,"version");
+		var url = this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+version].join("&");
+		url = url.replace("editing=true&","");
+		this.getUpdates(url, function(){
+			var vers = self._loader.doXPath("//userdata");
+			self.obj.setUserData(0,"version",self._v(vers[0]));
+			
+			var upds = self._loader.doXPath("//update");
+			if (upds.length){
+				self._silent_mode = true;
+				
+				for (var i=0; i<upds.length; i++) {
+					var status = upds[i].getAttribute('status');
+					var id = upds[i].getAttribute('id');
+					var parent = upds[i].getAttribute('parent');
+					switch (status) {
+						case 'inserted':
+							self.callEvent("insertCallback",[upds[i], id, parent]);
+							break;
+						case 'updated':
+							self.callEvent("updateCallback",[upds[i], id, parent]);
+							break;
+						case 'deleted':
+							self.callEvent("deleteCallback",[upds[i], id, parent]);
+							break;
+					}
+				}
+				
+				self._silent_mode = false;
+			}
+			
+			self._update_busy = false;
+			self = null;
+		});
+	}
+
+};
+
+//(c)dhtmlx ltd. www.dhtmlx.com
+if (window.dataProcessor && !dataProcessor.prototype.init_original){
+	dataProcessor.prototype.init_original=dataProcessor.prototype.init;
+	dataProcessor.prototype.init=function(obj){
+		this.init_original(obj);
+		obj._dataprocessor=this;
+
+		this.setTransactionMode("POST",true);
+		this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true";
+	};
+}
+
+dhtmlxError.catchError("LoadXML", function(a, b, c){
+	var message = c[0].responseText;
+
+	switch (scheduler.config.ajax_error){
+		case "alert":
+			window.alert(message);
+			break;
+		case "console":
+			window.console.log(message);
+			break;
+		default:
+			break;
+	}
+});
+
+
+dhtmlxEventable(scheduler);
+
+scheduler._detachDomEvent = function(el, event, handler){
+	if (el.removeEventListener){
+		el.removeEventListener(event, handler, false);
+
+	}else if (el.detachEvent){
+		el.detachEvent("on"+event, handler);
+	}
+};
+
+scheduler._init_once = function(){
+
+	var oldSize = getWindowSize();
+	dhtmlxEvent(window,"resize",function(){
+		var newSize = getWindowSize();
+
+		// ie7-8 triggers "resize" when window's elements are resized, it messes container-autoresize extension
+		// check if it's actually resized
+		if(!equals(oldSize, newSize)){
+			window.clearTimeout(scheduler._resize_timer);
+			scheduler._resize_timer=window.setTimeout(function(){
+				if (scheduler.callEvent("onSchedulerResize",[]))  {
+					scheduler.update_view();
+					scheduler.callEvent("onAfterSchedulerResize", []);
+				}
+			}, 100);
+		}
+		oldSize = newSize;
+
+	});
+	function getWindowSize(){
+		return {
+			w : window.innerWidth || document.documentElement.clientWidth,
+			h : window.innerHeight || document.documentElement.clientHeight
+		};
+	}
+	function equals(a,b){
+		return a.w == b.w && a.h == b.h;
+	}
+
+	scheduler._init_once = function(){};
+};
+scheduler.init=function(id,date,mode){
+	date=date||(scheduler._currentDate());
+	mode=mode||"week";
+
+	if(this._obj){
+		this.unset_actions();
+	}
+
+	this._obj=(typeof id == "string")?document.getElementById(id):id;
+
+	//hook for terrace skin
+	if (this._skin_init)
+		scheduler._skin_init();
+
+	scheduler.date.init();
+
+
+	this._els=[];
+	this._scroll=true;
+	this._quirks=(_isIE && document.compatMode == "BackCompat");
+	this._quirks7=(_isIE && navigator.appVersion.indexOf("MSIE 8")==-1);
+
+	this.get_elements();
+	this.init_templates();
+	this.set_actions();
+
+	this._init_once();
+	this._init_touch_events();
+
+	this.set_sizes();
+	scheduler.callEvent('onSchedulerReady', []);
+	this.setCurrentView(date,mode);
+
+};
+
+scheduler.xy={
+	min_event_height:40,
+	scale_width:50,
+	scroll_width:18,
+	scale_height:20,
+	month_scale_height:20,
+	menu_width:25,
+	margin_top:0,
+	margin_left:0,
+	editor_width:140,
+	month_head_height:22
+};
+scheduler.keys={
+	edit_save:13,
+	edit_cancel:27
+};
+scheduler.set_sizes=function(){
+	var w = this._x = this._obj.clientWidth-this.xy.margin_left;
+	var h = this._y = this._obj.clientHeight-this.xy.margin_top;
+	
+	//not-table mode always has scroll - need to be fixed in future
+	var scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);
+	var scale_s=this._table_view?-1:this.xy.scale_width;
+	
+	this.set_xy(this._els["dhx_cal_navline"][0],w,this.xy.nav_height,0,0);
+	this.set_xy(this._els["dhx_cal_header"][0],w-scale_x,this.xy.scale_height,scale_s,this.xy.nav_height+(this._quirks?-1:1));
+	//to support alter-skin, we need a way to alter height directly from css
+	var actual_height = this._els["dhx_cal_navline"][0].offsetHeight;
+	if (actual_height > 0) this.xy.nav_height = actual_height;
+	
+	var data_y=this.xy.scale_height+this.xy.nav_height+(this._quirks?-2:0);
+	this.set_xy(this._els["dhx_cal_data"][0],w,h-(data_y+2),0,data_y+2);
+};
+scheduler.set_xy=function(node,w,h,x,y){
+	node.style.width=Math.max(0,w)+"px";
+	node.style.height=Math.max(0,h)+"px";
+	if (arguments.length>3){
+		node.style.left=x+"px";
+		node.style.top=y+"px";	
+	}
+};
+scheduler.get_elements=function(){
+	//get all child elements as named hash
+	var els=this._obj.getElementsByTagName("DIV");
+	for (var i=0; i < els.length; i++){
+		var class_name=els[i].className || "";
+		var attr_value = els[i].getAttribute("name") || "";
+		if (class_name) class_name = class_name.split(" ")[0];
+		if (!this._els[class_name]) this._els[class_name]=[];
+		this._els[class_name].push(els[i]);
+		
+		//check if name need to be changed
+		var label = scheduler.locale.labels[attr_value||class_name];
+		if (typeof label !== "string" && attr_value && !els[i].innerHTML)
+			 label = attr_value.split("_")[0];
+		if (label)
+			els[i].innerHTML= label;
+	}
+};
+
+scheduler.unset_actions = function(){
+	for (var a in this._els)
+		if (this._click[a])
+			for (var i=0; i < this._els[a].length; i++)
+				this._els[a][i].onclick = null;
+	this._obj.onselectstart = null;
+	this._obj.onmousemove = null;
+	this._obj.onmousedown = null;
+	this._obj.onmouseup = null;
+	this._obj.ondblclick = null;
+	this._obj.oncontextmenu = null;
+};
+
+scheduler.set_actions=function(){
+	for (var a in this._els)
+		if (this._click[a])
+			for (var i=0; i < this._els[a].length; i++)
+				this._els[a][i].onclick=scheduler._click[a];
+	this._obj.onselectstart=function(e){ return false; };
+	this._obj.onmousemove=function(e){
+		if (!scheduler._temp_touch_block)
+			scheduler._on_mouse_move(e||event);
+	};
+	this._obj.onmousedown=function(e){
+		if (!scheduler._ignore_next_click)
+			scheduler._on_mouse_down(e||event);
+	};
+	this._obj.onmouseup=function(e){
+		if (!scheduler._ignore_next_click)
+			scheduler._on_mouse_up(e||event);
+	};
+	this._obj.ondblclick=function(e){
+		scheduler._on_dbl_click(e||event);
+	};
+	this._obj.oncontextmenu = function(e) {
+		var ev = e||event;
+		var src = ev.target||ev.srcElement;
+		var returnValue = scheduler.callEvent("onContextMenu", [scheduler._locate_event(src), ev]);
+		return returnValue;
+	};
+};
+scheduler.select=function(id){
+	if (this._select_id==id) return;
+	scheduler._close_not_saved();
+	this.editStop(false);
+	this.unselect();
+	this._select_id = id;
+	this.updateEvent(id);
+};
+scheduler.unselect=function(id){
+	if (id && id!=this._select_id) return;
+	var t=this._select_id;
+	this._select_id = null;
+	if (t && this.getEvent(t)) this.updateEvent(t);
+};
+scheduler.getState=function(){
+	return {
+		mode: this._mode,
+		date: new Date(this._date),
+		min_date: new Date(this._min_date),
+		max_date: new Date(this._max_date),
+		editor_id: this._edit_id,
+		lightbox_id: this._lightbox_id,
+		new_event: this._new_event,
+		select_id: this._select_id,
+		expanded: this.expanded,
+		drag_id: this._drag_id,
+		drag_mode: this._drag_mode
+	};
+};
+scheduler._click={
+	dhx_cal_data:function(e){
+		//in case of touch disable click processing
+		if (scheduler._ignore_next_click){
+			if (e.preventDefault)
+				e.preventDefault();
+			e.cancelBubble = true;
+			scheduler._ignore_next_click = false;
+			return false;
+		}
+
+		var trg = e?e.target:event.srcElement;
+		var id = scheduler._locate_event(trg);
+		
+		e = e || event;
+
+		if (!id) {
+			scheduler.callEvent("onEmptyClick",[scheduler.getActionData(e).date, e]);
+		} else {
+			if ( !scheduler.callEvent("onClick",[id,e]) || scheduler.config.readonly ) return;
+		}
+
+		if (id && scheduler.config.select) {
+
+			scheduler.select(id);
+			var mask = trg.className;
+			if (mask.indexOf("_icon")!=-1)
+				scheduler._click.buttons[mask.split(" ")[1].replace("icon_","")](id);
+		} else{
+			scheduler._close_not_saved();
+			if (new Date().valueOf()-(scheduler._new_event||0) > 500){
+				scheduler.unselect();
+			}
+		}
+	},
+	dhx_cal_prev_button:function(){
+		scheduler._click.dhx_cal_next_button(0,-1);
+	},
+	dhx_cal_next_button:function(dummy,step){
+		scheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects
+			scheduler.date[scheduler._mode+"_start"](scheduler._date),(step||1),scheduler._mode));
+	},
+	dhx_cal_today_button:function(){
+		if (scheduler.callEvent("onBeforeTodayDisplayed", [])) {
+			scheduler.setCurrentView(scheduler._currentDate());
+		}
+	},
+	dhx_cal_tab:function(){
+		var name = this.getAttribute("name");
+		var mode = name.substring(0, name.search("_tab"));
+		scheduler.setCurrentView(scheduler._date,mode);
+	},
+	buttons:{
+		"delete":function(id){
+			var c = scheduler.locale.labels.confirm_deleting;
+			scheduler._dhtmlx_confirm(c, scheduler.locale.labels.title_confirm_deleting, function(){ scheduler.deleteEvent(id); });
+		},
+		edit:function(id){ scheduler.edit(id); },
+		save:function(id){ scheduler.editStop(true); },
+		details:function(id){ scheduler.showLightbox(id); },
+		cancel:function(id){ scheduler.editStop(false); }
+	}
+};
+scheduler._dhtmlx_confirm = function(message, title, callback) {
+	if (!message)
+		return callback();
+	var opts = { text: message };
+	if (title)
+		opts.title = title;
+	if (callback) {
+		opts.callback = function(result) {
+			if (result)
+				callback();
+		};
+	}
+	dhtmlx.confirm(opts);
+};
+scheduler.addEventNow=function(start,end,e){
+	var base = {};
+	if (start && start.constructor.toString().match(/object/i) !== null){
+		base = start;
+		start = null;
+	}
+	
+	var d = (this.config.event_duration||this.config.time_step)*60000;
+	if (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/d)*d;
+	var start_date = new Date(start);
+	if (!end){
+		var start_hour = this.config.first_hour;
+		if (start_hour > start_date.getHours()){
+			start_date.setHours(start_hour);
+			start = start_date.valueOf();
+		}
+		end = start.valueOf()+d;
+	}
+	var end_date = new Date(end);
+
+	// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)
+	if(start_date.valueOf() == end_date.valueOf())
+		end_date.setTime(end_date.valueOf()+d);
+
+	base.start_date = base.start_date||start_date;
+	base.end_date =  base.end_date||end_date;
+	base.text = base.text||this.locale.labels.new_event;
+	base.id = this._drag_id = this.uid();
+	this._drag_mode="new-size";
+
+	this._loading=true;
+	this.addEvent(base);
+	this.callEvent("onEventCreated",[this._drag_id,e]);
+	this._loading=false;
+	
+	this._drag_event={}; //dummy , to trigger correct event updating logic
+	this._on_mouse_up(e);	
+};
+scheduler._on_dbl_click=function(e,src){
+	src = src||(e.target||e.srcElement);
+	if (this.config.readonly) return;
+	var name = (src.className||"").split(" ")[0];
+	switch(name){
+		case "dhx_scale_holder":
+		case "dhx_scale_holder_now":
+		case "dhx_month_body":
+		case "dhx_wa_day_data":
+			if (!scheduler.config.dblclick_create) break;
+			this.addEventNow(this.getActionData(e).date,null,e);
+			break;
+		case "dhx_cal_event":
+		case "dhx_wa_ev_body":
+		case "dhx_agenda_line":
+		case "dhx_grid_event":
+		case "dhx_cal_event_line":
+		case "dhx_cal_event_clear":
+			var id = this._locate_event(src);
+			if (!this.callEvent("onDblClick",[id,e])) return;
+			if (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)
+				this.showLightbox(id);
+			else
+				this.edit(id);
+			break;
+		case "dhx_time_block":
+		case "dhx_cal_container":
+			return;
+		default:
+			var t = this["dblclick_"+name];
+			if (t) {
+				t.call(this,e);
+			}
+			else {
+				if (src.parentNode && src != this)
+					return scheduler._on_dbl_click(e,src.parentNode);
+			}
+			break;
+	}
+};
+//column index by mouse x-coordinate
+scheduler._get_column_index = function(x_pos){
+	var column = 0;
+	if (this._cols){
+
+		var width = 0;
+		for(var i=0; i < this._cols.length && !width; i++){
+			width = this._cols[i];
+		}
+
+		if(width){
+			column = x_pos / width;
+		}else{
+			column = 0;
+		}
+
+		if (this._ignores)
+			for (var i=0; i<=column; i++)
+				if (this._ignores[i])
+					column++;
+	}
+	return column;
+};
+//transform mouse coordinates to day-time indexes of week based view
+scheduler._week_indexes_from_pos = function(pos){
+	//"get position" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)
+	if(!this._cols){
+		return pos;
+	}else{
+		var column = this._get_column_index(pos.x);
+		pos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));
+
+		pos.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);
+		return pos;
+	}
+};
+
+scheduler._mouse_coords=function(ev){
+	var pos;
+	var b=document.body;
+	var d = document.documentElement;
+	if (!_isIE && (ev.pageX || ev.pageY))
+	    pos={x:ev.pageX, y:ev.pageY};
+	else pos={
+	    x:ev.clientX + (b.scrollLeft||d.scrollLeft||0) - b.clientLeft,
+	    y:ev.clientY + (b.scrollTop||d.scrollTop||0) - b.clientTop
+	};
+
+	//apply layout
+	pos.x-=getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);
+	pos.y-=getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els["dhx_cal_data"][0].scrollTop;
+	pos.ev = ev;
+
+	var handler = this["mouse_"+this._mode];
+	if (handler)
+		return handler.call(this,pos);
+
+
+	//transform to date
+	if (!this._table_view) {
+		pos = this._week_indexes_from_pos(pos);
+	} else {
+		var column = this._get_column_index(pos.x);
+		if (!this._cols || !this._colsS) // agenda/map views
+			return pos;
+		var dy=0;
+		for (dy=1; dy < this._colsS.heights.length; dy++)
+			if (this._colsS.heights[dy]>pos.y) break;
+
+		pos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );
+
+		if (scheduler._drag_mode || this._mode == "month")
+			pos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;
+
+		//we care about ignored days only during event moving in month view
+		if (this._drag_mode == "move"){
+			if (scheduler._ignores_detected && scheduler.config.preserve_length){
+				pos._ignores = true;
+				//get real lengtn of event
+				if (!this._drag_event._event_length)
+					this._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"});
+			}
+		}
+
+		pos.x=0;
+	}
+	return pos;
+};
+scheduler._close_not_saved=function(){
+	if (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){
+		var c=scheduler.locale.labels.confirm_closing;
+
+		scheduler._dhtmlx_confirm(c, scheduler.locale.labels.title_confirm_closing, function() { scheduler.editStop(scheduler.config.positive_closing); });
+		if(c){
+			this._drag_id = this._drag_pos = this._drag_mode = null;
+		}
+	}
+};
+scheduler._correct_shift=function(start, back){
+	return start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);	
+};
+
+scheduler._is_pos_changed = function(old_pos, new_pos){
+	function diff(old_val, new_val, acc){
+		return !!(Math.abs(old_val - new_val) > acc);
+	}
+
+	if(!(old_pos && this._drag_pos)){
+		return true;
+	}
+	var delay = 100,
+		d_pos = 5;
+
+	// start drag only if passed some time since mouse down, or if mouse position changed sufficiently
+	return !!(!this._drag_pos.start || (+new Date() - this._drag_pos.start > delay) || diff(old_pos.x, new_pos.x, d_pos) || diff(old_pos.y, new_pos.y, d_pos));
+};
+
+scheduler._on_mouse_move=function(e){
+	if (this._drag_mode){
+		var pos=this._mouse_coords(e);
+		if (pos.force_redraw || this._is_pos_changed(this._drag_pos, pos)){
+			var start, end;
+			if (this._edit_id!=this._drag_id)
+				this._close_not_saved();
+
+			if(!this._drag_mode)
+				return;
+
+			this._drag_pos=pos;
+			this._drag_pos.has_moved = true;
+
+			if (this._drag_mode=="create"){
+				this._close_not_saved();
+				this.unselect(this._select_id);
+				this._loading=true; //will be ignored by dataprocessor
+				
+				start = this._get_date_from_pos(pos).valueOf();
+
+				if (!this._drag_start) {
+					var res = this.callEvent("onBeforeEventCreated", [e, this._drag_id]);
+					if (!res)
+						return;
+
+
+					this._drag_start=start;
+					return;
+				}
+
+				end = start;
+				if (end == this._drag_start) {
+				}
+
+				var start_date = new Date(this._drag_start);
+				var end_date = new Date(end);
+				if ( (this._mode == "day" || this._mode == "week") &&
+					(start_date.getHours() == end_date.getHours() &&
+					start_date.getMinutes() == end_date.getMinutes()) ) {
+						end_date = new Date(this._drag_start+1000);
+				}
+
+				
+				this._drag_id=this.uid();
+				this.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);
+				
+				this.callEvent("onEventCreated",[this._drag_id,e]);
+				this._loading=false;
+				this._drag_mode="new-size";
+				
+			} 
+
+			var ev=this.getEvent(this._drag_id);
+			var obj;
+
+			if (this._drag_mode=="move"){
+				start = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60 -(scheduler._move_pos_shift||0) )*60000;
+				if (!pos.custom && this._table_view) start+=this.date.time_part(ev.start_date)*1000;
+				start = this._correct_shift(start);
+
+				if (pos._ignores && this.config.preserve_length && this._table_view){
+					if (this.matrix) 
+						obj = this.matrix[this._mode];
+					obj = obj  || { x_step:1, x_unit:"day" };
+					end = start*1 + this._get_fictional_event_length(start, this._drag_event._event_length, obj);
+				} else
+					end = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);
+			} else { // resize
+				start = ev.start_date.valueOf();
+				end = ev.end_date.valueOf();
+				if (this._table_view) {
+					var resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);
+					if (this._mode == "month") {
+						resize_date = this._correct_shift(resize_date, false);
+						if( this._drag_from_start ) {
+							var day = 24*60*60000;
+							if( 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
+								start = resize_date - day;
+						} else {
+							end = resize_date;
+						}
+					} else {
+						if (pos.resize_from_start)
+							start = resize_date;
+						else
+							end = resize_date;
+					}
+				} else {
+					end = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf()+pos.y*this.config.time_step*60000;
+					this._els["dhx_cal_data"][0].style.cursor="s-resize";
+					if (this._mode == "week" || this._mode == "day")
+						end = this._correct_shift(end);
+				}
+				if (this._drag_mode == "new-size") {
+					if (end <= this._drag_start){
+						var shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);
+						start = end-(pos.shift?0:shift);
+						end = this._drag_start+(shift||(this.config.time_step*60000));
+					} else {
+						start = this._drag_start;
+					}
+				} else {
+					if (end<=start)
+						end=start+this.config.time_step*60000;
+				}
+			}
+			var new_end = new Date(end-1);			
+			var new_start = new Date(start);
+			//deny drag out of visible scheduler scale in timeline view
+			if(scheduler.config.limit_drag_out &&
+				(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){
+					var duration = end - new_start;
+					if(+new_start < +scheduler._min_date){
+						new_start = new Date(scheduler._min_date);
+						end = new Date(+new_start + duration);
+					}else{
+						end = new Date(scheduler._max_date);
+						new_start = new Date(+end - duration);
+					}
+					var new_end = new Date(end-1);
+			}
+
+
+
+			// fix event dates when resized to bottom of the column (day/week views)
+			if(!this._table_view &&
+				!scheduler.config.all_timed &&
+				((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){
+				var duration = end - new_start;
+				var day = this._min_date.valueOf()+(pos.x*24*60)*60000;
+				end = scheduler.date.date_part(new Date(day));
+				end.setHours(this.config.last_hour);
+				new_end = new Date(end-1);
+				if(this._drag_mode == "move"){
+					new_start = new Date(+end - duration);
+				}
+			}
+
+			//prevent out-of-borders situation for day|week view
+			if ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()<this.config.last_hour) || scheduler._allow_dnd ){
+				ev.start_date=new_start;
+				ev.end_date=new Date(end);
+				if (this.config.update_render){
+					//fix for repaint after dnd and scroll issue, #231
+					var sx = scheduler._els["dhx_cal_data"][0].scrollTop;
+					this.update_view();
+					scheduler._els["dhx_cal_data"][0].scrollTop = sx;
+				} else
+					this.updateEvent(this._drag_id);
+			}
+			if (this._table_view) {
+				this.for_rendered(this._drag_id,function(r){
+					r.className+=" dhx_in_move";
+				});
+			}
+
+			this.callEvent("onEventDrag", [this._drag_id, this._drag_mode, e]);
+		}
+	}  else {
+		if (scheduler.checkEvent("onMouseMove")){
+			var id = this._locate_event(e.target||e.srcElement);
+			this.callEvent("onMouseMove",[id,e]);
+		}
+	}
+};
+scheduler._on_mouse_down=function(e,src) {
+	// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state
+	// let's ignore right mouse button then
+	if (e.button == 2)
+		return;
+
+	if (this.config.readonly || this._drag_mode) return;
+	src = src||(e.target||e.srcElement);
+	var classname = src.className && src.className.split(" ")[0];
+
+	switch (classname) {
+		case "dhx_cal_event_line":
+		case "dhx_cal_event_clear":
+			if (this._table_view)
+				this._drag_mode="move"; //item in table mode
+			break;
+		case "dhx_event_move":
+		case "dhx_wa_ev_body":
+			this._drag_mode="move";
+			break;
+		case "dhx_event_resize":
+			this._drag_mode="resize";
+			if((src.className||"").indexOf("dhx_event_resize_end") < 0){
+				scheduler._drag_from_start = true;
+			}else{
+				scheduler._drag_from_start = false;
+			}
+			break;
+		case "dhx_scale_holder":
+		case "dhx_scale_holder_now":
+		case "dhx_month_body":
+		case "dhx_matrix_cell":
+		case "dhx_marked_timespan":
+			this._drag_mode="create";
+			break;
+		case "":
+			if (src.parentNode)
+				return scheduler._on_mouse_down(e,src.parentNode);
+			break;
+		default:
+			if (!scheduler.checkEvent("onMouseDown") || scheduler.callEvent("onMouseDown", [classname])) {
+				if (src.parentNode && src != this && classname != "dhx_body") {
+					return scheduler._on_mouse_down(e,src.parentNode);
+				}
+			}
+			this._drag_mode=null;
+			this._drag_id=null;
+			break;
+	}
+	if (this._drag_mode){
+		var id = this._locate_event(src);
+		if (!this.config["drag_"+this._drag_mode] || !this.callEvent("onBeforeDrag",[id, this._drag_mode, e]))
+			this._drag_mode=this._drag_id=0;
+		else {
+			this._drag_id= id;
+
+			if (this._edit_id!=this._drag_id || (this._edit_id && this._drag_mode == "create"))
+				this._close_not_saved();
+			if(!this._drag_mode)
+				return;
+
+			this._drag_event = scheduler._lame_clone(this.getEvent(this._drag_id) || {});
+			this._drag_pos = this._mouse_coords(e);
+			this._drag_pos.start = +new Date();
+		}
+	}
+	this._drag_start=null;
+};
+
+
+scheduler._get_private_properties = function(event){
+	var fields = {};
+	for(var i in event){
+		if(i.indexOf("_") === 0){
+			fields[i] = true;
+		}
+	}
+	return fields;
+};
+scheduler._clear_temporary_properties = function(clean, flagged_event){
+	var initial = this._get_private_properties(clean);
+	var current_state = this._get_private_properties(flagged_event);
+	for(var i in current_state){
+		if(!initial[i]){
+			delete flagged_event[i];
+		}
+	}
+};
+
+
+scheduler._on_mouse_up=function(e){
+	if (e && e.button == 2 && scheduler.config.touch) return;
+	if (this._drag_mode && this._drag_id){
+		this._els["dhx_cal_data"][0].style.cursor="default";
+		//drop
+
+		var drag_id = this._drag_id;
+		var mode = this._drag_mode;
+
+		var moved = !this._drag_pos || this._drag_pos.has_moved;
+
+		var ev=this.getEvent(this._drag_id);
+		if (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())){
+			var is_new=(this._drag_mode=="new-size");
+			if (!this.callEvent("onBeforeEventChanged",[ev, e, is_new, this._drag_event])){
+				if (is_new) 
+					this.deleteEvent(ev.id, true);
+				else {
+					this._drag_event._dhx_changed = false;
+					this._clear_temporary_properties(ev, this._drag_event);
+					scheduler._lame_copy(ev, this._drag_event);
+					this.updateEvent(ev.id);
+				}
+			} else {
+
+				this._drag_id = this._drag_mode = null;
+				if (is_new && this.config.edit_on_create){
+					this.unselect();
+					this._new_event=new Date();//timestamp of creation
+					//if selection disabled - force lightbox usage
+					if (this._table_view || this.config.details_on_create || !this.config.select) {
+						scheduler.callEvent("onDragEnd", [drag_id, mode, e]);
+						return this.showLightbox(drag_id);
+					}
+					this._drag_pos = true; //set flag to trigger full redraw
+					this._select_id = this._edit_id = drag_id;
+				} else {
+					if (!this._new_event)
+						this.callEvent(is_new?"onEventAdded":"onEventChanged",[drag_id,this.getEvent(drag_id)]);
+				}
+			}
+		}
+		if (this._drag_pos && (this._drag_pos.has_moved || this._drag_pos === true)) this.render_view_data(); //redraw even if there is no real changes - necessary for correct positioning item after drag
+		scheduler.callEvent("onDragEnd", [drag_id, mode, e]);
+	}
+	this._drag_id = null;
+	this._drag_mode=null;
+	this._drag_pos=null;
+};
+
+scheduler._trigger_dyn_loading = function(){
+	if (this._load_mode && this._load()){
+		this._render_wait = true;
+		return true;
+	}else{
+		return false;
+	}
+};
+scheduler.update_view=function(){
+	var view = this[this._mode + "_view"];
+	if(view){
+		view(true);
+	}else{
+		this._reset_scale();
+	}
+
+	if (this._trigger_dyn_loading()){
+		return true;
+	}
+	this.render_view_data();
+};
+
+scheduler.isViewExists = function(mode){
+	return !!(scheduler[mode+ "_view"] ||
+		(scheduler.date[mode+ "_start"] && scheduler.templates[mode+ "_date"] && scheduler.templates[mode+ "_scale_date"]));
+};
+
+scheduler.updateView = function(date, mode) {
+	date = date || this._date;
+	mode = mode || this._mode;
+	var dhx_cal_data = 'dhx_cal_data';
+
+	if (!this._mode)
+		this._obj.className += " dhx_scheduler_" + mode; else {
+		this._obj.className = this._obj.className.replace("dhx_scheduler_" + this._mode, "dhx_scheduler_" + mode);
+	}
+
+	var prev_scroll = (this._mode == mode && this.config.preserve_scroll) ? this._els[dhx_cal_data][0].scrollTop : false; // saving current scroll
+
+	//hide old custom view
+	if (this[this._mode + "_view"] && mode && this._mode != mode)
+		this[this._mode + "_view"](false);
+
+	this._close_not_saved();
+
+	var dhx_multi_day = 'dhx_multi_day';
+	if (this._els[dhx_multi_day]) {
+		this._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);
+		this._els[dhx_multi_day] = null;
+	}
+
+	this._mode = mode;
+	this._date = date;
+	this._table_view = (this._mode == "month");
+
+	this._dy_shift = 0;//correction for multiday section in week/day views
+
+	var tabs = this._els["dhx_cal_tab"];
+	if(tabs){//calendar can work without view tabs
+		for (var i = 0; i < tabs.length; i++) {
+			var name = tabs[i].className;
+			name = name.replace(/ active/g, "");
+			if (tabs[i].getAttribute("name") == this._mode + "_tab")
+				name = name + " active";
+			tabs[i].className = name;
+		}
+	}
+	//show new view
+	this.update_view();
+
+	if (typeof prev_scroll == "number") // if we are updating or working with the same view scrollTop should be saved
+		this._els[dhx_cal_data][0].scrollTop = prev_scroll; // restoring original scroll
+};
+scheduler.setCurrentView = function(date, mode) {
+	if (!this.callEvent("onBeforeViewChange", [this._mode, this._date, mode || this._mode, date || this._date])) return;
+	this.updateView(date, mode);
+	this.callEvent("onViewChange", [this._mode, this._date]);
+};
+scheduler._render_x_header = function(i,left,d,h, offset_top){
+	offset_top = offset_top || 0;
+	//header scale	
+	var head=document.createElement("DIV");
+	head.className = "dhx_scale_bar";
+
+	if(this.templates[this._mode+"_scalex_class"]){
+		//'_scalex_class' - timeline already have similar template, use the same name
+		head.className += ' ' + this.templates[this._mode+"_scalex_class"](d);
+	}
+
+	var width = this._cols[i]-1;
+
+	if (this._mode == "month" && i === 0 && this.config.left_border) {
+		head.className += " dhx_scale_bar_border";
+		left = left+1;
+	}
+	this.set_xy(head, width, this.xy.scale_height-2, left, offset_top);//-1 for border
+	head.innerHTML=this.templates[this._mode+"_scale_date"](d,this._mode); //TODO - move in separate method
+	h.appendChild(head);
+};
+
+scheduler._get_columns_num = function(from, to){
+	var count = 7;
+	if (!scheduler._table_view){
+		var count_n = scheduler.date["get_"+scheduler._mode+"_end"];
+		if (count_n) to = count_n(from);
+		count = Math.round((to.valueOf()-from.valueOf())/(1000*60*60*24));
+	}
+	return count;
+};
+scheduler._get_timeunit_start = function(){
+	//start date of currently displayed time unit(day, week,...)
+	return this.date[this._mode+"_start"](new Date(this._date.valueOf()));
+};
+
+scheduler._get_view_end = function(){
+	var dd = this._get_timeunit_start();
+	var ed = scheduler.date.add(dd, 1, this._mode);
+	if (!scheduler._table_view){
+		var count_n = scheduler.date["get_"+scheduler._mode+"_end"];
+		if (count_n) ed = count_n(dd);
+	}
+	return ed;
+};
+scheduler._calc_scale_sizes = function(width, from, to){
+	//calculates number of displayed columns(days/units/month view cols) and their widths
+	var summ = width; //border delta
+	var count = this._get_columns_num(from, to);
+
+	this._process_ignores(from, count, "day", 1);
+	var realcount = count - this._ignores_detected;
+
+	for (var i=0; i<count; i++){
+		if (this._ignores[i]){
+			this._cols[i] = 0;
+			realcount++;
+		} else {
+			this._cols[i]=Math.floor(summ/(realcount-i));
+		}
+		summ-=this._cols[i];
+		this._colsS[i]=(this._cols[i-1]||0)+(this._colsS[i-1]||(this._table_view?0:this.xy.scale_width+2));
+	}
+	this._colsS['col_length'] = count;
+
+	this._colsS[count] = (this._cols[count-1]+this._colsS[count-1]) || 0;
+};
+scheduler._set_scale_col_size = function(div, width, left){
+	var c = this.config;
+	this.set_xy(div, width-1, c.hour_size_px*(c.last_hour-c.first_hour), left+this.xy.scale_width+1, 0);//-1 for border
+};
+
+scheduler._render_scales = function(header, data_area){
+	//render columns in week/units view, or header in month view
+	var sd = new Date(scheduler._min_date),
+		ed = new Date(scheduler._max_date),
+		today = this.date.date_part( scheduler._currentDate());
+
+	var summ = parseInt(header.style.width,10); //border delta
+	var d = new Date(this._min_date);
+	var count = this._get_columns_num(sd, ed);
+	this._calc_scale_sizes(summ, sd, ed);
+	var left=0;
+
+	header.innerHTML = "";
+	for (var i=0; i<count; i++){
+		if (!this._ignores[i]){
+			this._render_x_header(i,left,d,header);
+		}
+		if (!this._table_view){
+			var scales=document.createElement("DIV");
+			var cls = "dhx_scale_holder";
+			if (d.valueOf() == today.valueOf()) cls = "dhx_scale_holder_now";
+
+			if (this._ignores_detected && this._ignores[i]){
+				cls += " dhx_scale_ignore";
+			}
+
+			scales.className = cls+" "+this.templates.week_date_class(d,today);
+
+			this._set_scale_col_size(scales, this._cols[i], left);
+
+			data_area.appendChild(scales);
+			this.callEvent("onScaleAdd",[scales, d]);
+		}
+
+		left+=this._cols[i];
+		d=this.date.add(d,1,"day");
+		d = this.date.day_start(d);
+	}
+};
+
+scheduler._reset_scale=function(){
+	//current mode doesn't support scales
+	//we mustn't call reset_scale for such modes, so it just to be sure
+	if (!this.templates[this._mode + "_date"]) return;
+
+	var h = this._els["dhx_cal_header"][0];
+	var data_area = this._els["dhx_cal_data"][0];
+	var c = this.config;
+
+	h.innerHTML = "";
+	//data_area.scrollTop = 0; //fix flickering in FF; makes IE8 flicker instead
+	data_area.innerHTML = "";
+
+	var str = ((c.readonly || (!c.drag_resize)) ? " dhx_resize_denied" : "") + ((c.readonly || (!c.drag_move)) ? " dhx_move_denied" : "");
+	data_area.className = "dhx_cal_data" + str;
+
+	this._scales = {};
+	this._cols = [];	//store for data section
+	this._colsS = {height: 0};
+	this._dy_shift = 0;
+
+	this.set_sizes();
+
+	var d,sd,today;
+	var dd = this._get_timeunit_start(),
+		ed = scheduler._get_view_end();
+
+	d = sd = this._table_view ? scheduler.date.week_start(dd) : dd;
+
+
+	this._min_date=d;
+	this._els["dhx_cal_date"][0].innerHTML=this.templates[this._mode+"_date"](dd,ed,this._mode);
+
+	this._max_date = ed;
+	scheduler._render_scales(h, data_area);
+
+	if (this._table_view) // month view
+		this._reset_month_scale(data_area,dd,sd);
+	else{
+		this._reset_hours_scale(data_area,dd,sd);
+		if (c.multi_day) {
+			var dhx_multi_day = 'dhx_multi_day';
+
+			if(this._els[dhx_multi_day]) {
+				this._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);
+				this._els[dhx_multi_day] = null;
+			}
+			
+			var navline = this._els["dhx_cal_navline"][0];
+			var top = navline.offsetHeight + this._els["dhx_cal_header"][0].offsetHeight+1;
+			
+			var c1 = document.createElement("DIV");
+			c1.className = dhx_multi_day;
+			c1.style.visibility="hidden";
+			this.set_xy(c1, Math.max(this._colsS[this._colsS.col_length]+this.xy.scroll_width - 2, 0), 0, 0, top); // 2 extra borders, dhx_header has -1 bottom margin
+			data_area.parentNode.insertBefore(c1,data_area);
+			
+			var c2 = c1.cloneNode(true);
+			c2.className = dhx_multi_day+"_icon";
+			c2.style.visibility="hidden";
+			this.set_xy(c2, this.xy.scale_width, 0, 0, top); // dhx_header has -1 bottom margin
+			
+			c1.appendChild(c2);
+			this._els[dhx_multi_day]=[c1,c2];
+			this._els[dhx_multi_day][0].onclick = this._click.dhx_cal_data;
+		}
+	}
+};
+scheduler._reset_hours_scale=function(b,dd,sd){
+	var c=document.createElement("DIV");
+	c.className="dhx_scale_holder";
+	
+	var date = new Date(1980,1,1,this.config.first_hour,0,0);
+	for (var i=this.config.first_hour*1; i < this.config.last_hour; i++) {
+		var cc=document.createElement("DIV");
+		cc.className="dhx_scale_hour";
+		cc.style.height=this.config.hour_size_px-(this._quirks?0:1)+"px";
+		var width = this.xy.scale_width;
+		if (this.config.left_border) {
+			width = width - 1;
+			cc.className += " dhx_scale_hour_border";
+		}
+		cc.style.width = width + "px";
+		cc.innerHTML=scheduler.templates.hour_scale(date);
+		
+		c.appendChild(cc);
+		date=this.date.add(date,1,"hour");
+	}
+	b.appendChild(c);
+	if (this.config.scroll_hour)
+		b.scrollTop = this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour);
+};
+
+scheduler._currentDate = function(){
+	if(scheduler.config.now_date){
+		return new Date(scheduler.config.now_date);
+	}
+	return new Date();
+};
+
+scheduler._process_ignores = function(sd, n, mode, step, preserve){
+	this._ignores={};
+	this._ignores_detected = 0;
+	var ignore = scheduler["ignore_"+this._mode];
+
+	if (ignore){
+		var ign_date = new Date(sd);
+		for (var i=0; i<n; i++){
+			if (ignore(ign_date)){
+				this._ignores_detected += 1;
+				this._ignores[i] = true;
+				if (preserve)
+					n++;
+			}
+			ign_date = scheduler.date.add(ign_date, step, mode);
+			if(scheduler.date[mode + '_start'])
+				ign_date = scheduler.date[mode + '_start'](ign_date);
+		}
+	}
+};
+
+scheduler._render_month_scale = function(div, dd/*month start*/, sd/*view start*/ ){
+	//renders month view layout
+
+	var ed=scheduler.date.add(dd,1,"month"),
+		view_start = new Date(sd);
+	var cd = scheduler._currentDate();
+	this.date.date_part(cd);
+	this.date.date_part(sd);
+
+	var rows=Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);
+	var tdcss=[];
+
+	for (var i=0; i<=7; i++) {
+		var cell_width = ((this._cols[i]||0)-1);
+		if (i === 0 && this.config.left_border) {
+			cell_width = cell_width - 1;
+		}
+		tdcss[i]=" style='width:"+cell_width+"px;";
+	}
+
+	function getCellHeight(row){
+		var h = scheduler._colsS.height;
+		if(scheduler._colsS.heights[row + 1] !== undefined ){
+			h = scheduler._colsS.heights[row + 1] - (scheduler._colsS.heights[row]||0);
+		}
+		return h;
+	}
+
+
+	var cellheight = 0;
+
+	var html="<table cellpadding='0' cellspacing='0'>";
+	var rendered_dates = [];
+	for (var i=0; i<rows; i++){
+		html+="<tr>";
+		var row_height = Math.max(getCellHeight(i) - scheduler.xy.month_head_height, 0);
+		for (var j=0; j<7; j++) {
+			html+="<td";
+
+			var cls = "";
+			if (sd<dd)
+				cls='dhx_before';
+			else if (sd>=ed)
+				cls='dhx_after';
+			else if (sd.valueOf()==cd.valueOf())
+				cls='dhx_now';
+
+			if (this._ignores_detected && this._ignores[j]){
+				cls += " dhx_scale_ignore";
+			}
+
+			html+=" class='"+cls+" "+this.templates.month_date_class(sd,cd)+"' >";
+			var body_class = "dhx_month_body";
+			var head_class = "dhx_month_head";
+			if (j === 0 && this.config.left_border) {
+				body_class += " dhx_month_body_border";
+				head_class += " dhx_month_head_border";
+			}
+			if (!this._ignores_detected || !this._ignores[j]){
+				html+="<div class='"+head_class+"'>"+this.templates.month_day(sd)+"</div>";
+				html+="<div class='"+body_class+"' "+tdcss[j] + ";height:"+row_height + "px;'></div></td>";
+			} else {
+				html+="<div></div><div></div>";
+			}
+			rendered_dates.push(sd);
+			var bf1 = sd.getDate();
+			sd=this.date.add(sd,1,"day");
+			if (sd.getDate() - bf1 > 1)
+				sd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);
+		}
+		html+="</tr>";
+
+		scheduler._colsS.heights[i] = cellheight;
+		cellheight += getCellHeight(i);
+	}
+	html+="</table>";
+
+	this._min_date = view_start;
+	this._max_date = sd;
+
+	div.innerHTML=html;
+
+	this._scales = {};
+	var divs = div.getElementsByTagName('div');
+	for (var i=0; i<rendered_dates.length; i++) { // [header, body, header, body, ...]
+		var div = divs[(i*2)+1];
+		var date = rendered_dates[i];
+		this._scales[+date] = div;
+	}
+	for (var i=0; i<rendered_dates.length; i++) {
+		var date = rendered_dates[i];
+		this.callEvent("onScaleAdd", [this._scales[+date], date]);
+	}
+
+
+
+	return this._max_date;
+};
+
+scheduler._reset_month_scale=function(b,dd,sd){
+	//recalculates rows height and redraws month layout
+	var ed=scheduler.date.add(dd,1,"month");
+	
+	//trim time part for comparation reasons
+	var cd = scheduler._currentDate();
+	this.date.date_part(cd);
+	this.date.date_part(sd);
+
+	var rows=Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);
+
+	var height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);
+	
+	this._colsS.height = height + this.xy.month_head_height;
+	this._colsS.heights = [];
+
+	return scheduler._render_month_scale(b, dd, sd);
+
+};
+scheduler.getLabel = function(property, key) {
+	var sections = this.config.lightbox.sections;
+	for (var i=0; i<sections.length; i++) {
+		if(sections[i].map_to == property) {
+			var options = sections[i].options;
+			for (var j=0; j<options.length; j++) {
+				if(options[j].key == key) {
+					return options[j].label;
+				}
+			}
+		}
+	}
+	return "";
+};
+scheduler.updateCollection = function(list_name, collection) {
+	var list = scheduler.serverList(list_name);
+	if (!list) return false;
+	list.splice(0, list.length);
+	list.push.apply(list, collection || []);
+	scheduler.callEvent("onOptionsLoad", []);
+	scheduler.resetLightbox();
+	return true;
+};
+scheduler._lame_clone = function(object, cache) {
+	var i, t, result; // iterator, types array, result
+
+	cache = cache || [];
+
+	for (i=0; i<cache.length; i+=2)
+		if(object === cache[i])
+			return cache[i+1];
+
+	if (object && typeof object == "object") {
+		result = {};
+		t = [Array,Date,Number,String,Boolean];
+		for (i=0; i<t.length; i++) {
+			if (object instanceof t[i])
+				result = i ? new t[i](object) : new t[i](); // first one is array
+		}
+		cache.push(object, result);
+		for (i in object) {
+			if (Object.prototype.hasOwnProperty.apply(object, [i]))
+				result[i] = scheduler._lame_clone(object[i], cache);
+		}
+	}
+	return result || object;
+};
+scheduler._lame_copy = function(target, source) {
+	for (var key in source) {
+		if (source.hasOwnProperty(key)) {
+			target[key] = source[key];
+		}
+	}
+	return target;
+};
+scheduler._get_date_from_pos = function(pos) {
+	var start=this._min_date.valueOf()+(pos.y*this.config.time_step+(this._table_view?0:pos.x)*24*60)*60000;
+	return new Date(this._correct_shift(start));
+};
+// n_ev - native event
+scheduler.getActionData = function(n_ev) {
+	var pos = this._mouse_coords(n_ev);
+	return {
+		date:this._get_date_from_pos(pos),
+		section:pos.section
+	};
+};
+scheduler._focus = function(node, select){
+	if (node && node.focus){
+		if (this.config.touch){
+			window.setTimeout(function(){ 
+				node.focus();
+			},100);
+		} else {
+			if (select && node.select) node.select();
+			node.focus();
+		}
+	}
+};
+
+//non-linear scales
+scheduler._get_real_event_length=function(sd, fd, obj){
+	var ev_length = fd -sd;
+	var hours = (obj._start_correction + obj._end_correction)||0;
+	var ignore = this["ignore_"+this._mode];
+
+	var start_slot = 0,
+		end_slot;
+	if (obj.render){
+		start_slot = this._get_date_index(obj, sd);
+		end_slot = this._get_date_index(obj, fd);
+	} else{
+		end_slot = Math.round(ev_length/60/60/1000/24);
+	}
+
+	while (start_slot < end_slot){
+		var check = scheduler.date.add(fd, -obj.x_step, obj.x_unit);
+		if (ignore && ignore(fd))
+			ev_length -= (fd-check);
+		else
+			ev_length -= hours;
+
+		fd = check;
+		end_slot--;
+	}
+	return ev_length;
+};
+scheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){
+	var sd = new Date(end_date);
+	var dir = back ? -1 : 1;
+
+	//get difference caused by first|last hour
+	if (obj._start_correction || obj._end_correction){
+		var today;
+		if (back)
+			today = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;
+		else
+			today = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());
+		var per_day = (obj.last_hour - obj.first_hour)*60;
+		var days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);
+		ev_length += days * (24*60 - per_day) * 60 * 1000;
+	}
+
+	var fd = new Date(end_date*1+ev_length*dir);
+	var ignore = this["ignore_"+this._mode];
+
+	var start_slot = 0,
+		end_slot;
+	if (obj.render){
+		start_slot = this._get_date_index(obj, sd);
+		end_slot = this._get_date_index(obj, fd);
+	} else{
+		end_slot = Math.round(ev_length/60/60/1000/24);
+	}
+
+	while (start_slot*dir <= end_slot*dir){
+		var check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);
+		if (ignore && ignore(sd)){
+			ev_length += (check-sd)*dir;
+			end_slot += dir;
+		}
+
+		sd = check;
+		start_slot+=dir;
+	}
+	
+	return ev_length;
+};
+
+scheduler._get_section_view = function(){
+	if(this.matrix && this.matrix[this._mode]){
+		return this.matrix[this._mode];
+	}else if(this._props && this._props[this._mode]){
+		return this._props[this._mode];
+	}
+	return null;
+};
+
+scheduler._get_section_property = function(){
+	if(this.matrix && this.matrix[this._mode]){
+		return this.matrix[this._mode].y_property;
+	}else if(this._props && this._props[this._mode]){
+		return this._props[this._mode].map_to;
+	}
+	return null;
+};
+
+scheduler._is_initialized = function(){
+	var state = this.getState();
+	return (this._obj && state.date && state.mode);
+};
+scheduler._is_lightbox_open = function(){
+	var state = this.getState();
+	return state.lightbox_id !== null && state.lightbox_id !== undefined;
+};
+scheduler.date={
+	init:function(){
+		var s = scheduler.locale.date.month_short;
+		var t = scheduler.locale.date.month_short_hash = {};
+		for (var i = 0; i < s.length; i++)
+			t[s[i]]=i;
+
+		var s = scheduler.locale.date.month_full;
+		var t = scheduler.locale.date.month_full_hash = {};
+		for (var i = 0; i < s.length; i++)
+			t[s[i]]=i;
+	},
+	date_part:function(date){
+		var old = new Date(date);
+		date.setHours(0);
+		date.setMinutes(0);
+		date.setSeconds(0);
+		date.setMilliseconds(0);
+		if (date.getHours() && //shift to yesterday on dst
+			(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )
+			date.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));
+		return date;
+	},
+	time_part:function(date){
+		return (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;
+	},
+	week_start:function(date){
+		var shift=date.getDay();
+		if (scheduler.config.start_on_monday){
+			if (shift===0) shift=6;
+			else shift--;
+		}
+		return this.date_part(this.add(date,-1*shift,"day"));
+	},
+	month_start:function(date){
+		date.setDate(1);
+		return this.date_part(date);
+	},
+	year_start:function(date){
+		date.setMonth(0);
+		return this.month_start(date);
+	},
+	day_start:function(date){
+		return this.date_part(date);
+	},
+	_add_days:function(date, inc){
+		var ndate = new Date(date.valueOf());
+
+		ndate.setDate(ndate.getDate() + inc);
+		if (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst
+			(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )
+			ndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));
+		   return ndate;
+	},
+	add:function(date,inc,mode){
+		var ndate=new Date(date.valueOf());
+		switch(mode){
+			case "day":
+				ndate = scheduler.date._add_days(ndate, inc);
+				break;
+			case "week":
+				ndate = scheduler.date._add_days(ndate, inc * 7);
+				break;
+			case "month": ndate.setMonth(ndate.getMonth()+inc); break;
+			case "year": ndate.setYear(ndate.getFullYear()+inc); break;
+			case "hour":
+				/*
+				 setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch
+				 setTime seems working as expected
+				*/
+				ndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);
+				break;
+			case "minute":
+				ndate.setTime(ndate.getTime() + inc * 60 * 1000);
+				break;
+			default:
+				return scheduler.date["add_"+mode](date,inc,mode);
+		}
+		return ndate;
+	},
+	to_fixed:function(num){
+		if (num<10)	return "0"+num;
+		return num;
+	},
+	copy:function(date){
+		return new Date(date.valueOf());
+	},
+	date_to_str:function(format,utc){
+		format=format.replace(/%[a-zA-Z]/g,function(a){
+			switch(a){
+				case "%d": return "\"+scheduler.date.to_fixed(date.getDate())+\"";
+				case "%m": return "\"+scheduler.date.to_fixed((date.getMonth()+1))+\"";
+				case "%j": return "\"+date.getDate()+\"";
+				case "%n": return "\"+(date.getMonth()+1)+\"";
+				case "%y": return "\"+scheduler.date.to_fixed(date.getFullYear()%100)+\""; 
+				case "%Y": return "\"+date.getFullYear()+\"";
+				case "%D": return "\"+scheduler.locale.date.day_short[date.getDay()]+\"";
+				case "%l": return "\"+scheduler.locale.date.day_full[date.getDay()]+\"";
+				case "%M": return "\"+scheduler.locale.date.month_short[date.getMonth()]+\"";
+				case "%F": return "\"+scheduler.locale.date.month_full[date.getMonth()]+\"";
+				case "%h": return "\"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+\"";
+				case "%g": return "\"+((date.getHours()+11)%12+1)+\"";
+				case "%G": return "\"+date.getHours()+\"";
+				case "%H": return "\"+scheduler.date.to_fixed(date.getHours())+\"";
+				case "%i": return "\"+scheduler.date.to_fixed(date.getMinutes())+\"";
+				case "%a": return "\"+(date.getHours()>11?\"pm\":\"am\")+\"";
+				case "%A": return "\"+(date.getHours()>11?\"PM\":\"AM\")+\"";
+				case "%s": return "\"+scheduler.date.to_fixed(date.getSeconds())+\"";
+				case "%W": return "\"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+\"";
+				default: return a;
+			}
+		});
+		if (utc) format=format.replace(/date\.get/g,"date.getUTC");
+		return new Function("date","return \""+format+"\";");
+	},
+	str_to_date:function(format,utc){
+		var splt="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);";
+		var mask=format.match(/%[a-zA-Z]/g);
+		for (var i=0; i<mask.length; i++){
+			switch(mask[i]){
+				case "%j":
+				case "%d": splt+="set[2]=temp["+i+"]||1;";
+					break;
+				case "%n":
+				case "%m": splt+="set[1]=(temp["+i+"]||1)-1;";
+					break;
+				case "%y": splt+="set[0]=temp["+i+"]*1+(temp["+i+"]>50?1900:2000);";
+					break;
+				case "%g":
+				case "%G":
+				case "%h": 
+				case "%H":
+							splt+="set[3]=temp["+i+"]||0;";
+					break;
+				case "%i":
+							splt+="set[4]=temp["+i+"]||0;";
+					break;
+				case "%Y": splt+="set[0]=temp["+i+"]||0;";
+					break;
+				case "%a":					
+				case "%A": splt+="set[3]=set[3]%12+((temp["+i+"]||'').toLowerCase()=='am'?0:12);";
+					break;					
+				case "%s": splt+="set[5]=temp["+i+"]||0;";
+					break;
+				case "%M": splt+="set[1]=scheduler.locale.date.month_short_hash[temp["+i+"]]||0;";
+					break;
+				case "%F": splt+="set[1]=scheduler.locale.date.month_full_hash[temp["+i+"]]||0;";
+					break;
+				default:
+					break;
+			}
+		}
+		var code ="set[0],set[1],set[2],set[3],set[4],set[5]";
+		if (utc) code =" Date.UTC("+code+")";
+		return new Function("date","var set=[0,0,1,0,0,0]; "+splt+" return new Date("+code+");");
+	},
+	getISOWeek: function(ndate) {
+		if(!ndate) return false;
+		var nday = ndate.getDay();
+		if (nday === 0) {
+			nday = 7;
+		}
+		var first_thursday = new Date(ndate.valueOf());
+		first_thursday.setDate(ndate.getDate() + (4 - nday));
+		var year_number = first_thursday.getFullYear(); // year of the first Thursday
+		var 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)
+		var week_number = 1 + Math.floor( ordinal_date / 7);
+		return week_number;
+	},
+	getUTCISOWeek: function(ndate){
+		return this.getISOWeek(this.convert_to_utc(ndate));
+	},
+	convert_to_utc: function(date) {
+		return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
+	}
+};
+scheduler.locale = {
+	date:{
+		month_full:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+		month_short:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		day_full:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+		day_short:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
+	},
+	labels:{
+		dhx_cal_today_button:"Today",
+		day_tab:"Day",
+		week_tab:"Week",
+		month_tab:"Month",
+		new_event:"New event",
+		icon_save:"Save",
+		icon_cancel:"Cancel",
+		icon_details:"Details",
+		icon_edit:"Edit",
+		icon_delete:"Delete",
+		confirm_closing:"",//Your changes will be lost, are your sure ?
+		confirm_deleting:"Event will be deleted permanently, are you sure?",
+		section_description:"Description",
+		section_time:"Time period",
+		full_day:"Full day",
+
+		/*recurring events*/
+		confirm_recurring:"Do you want to edit the whole set of repeated events?",
+		section_recurring:"Repeat event",
+		button_recurring:"Disabled",
+		button_recurring_open:"Enabled",
+		button_edit_series: "Edit series",
+		button_edit_occurrence: "Edit occurrence",
+
+		/*agenda view extension*/
+		agenda_tab:"Agenda",
+		date:"Date",
+		description:"Description",
+
+		/*year view extension*/
+		year_tab:"Year",
+
+		/* week agenda extension */
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Grid",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
+
+/*
+%e	Day of the month without leading zeros (01..31)
+%d	Day of the month, 2 digits with leading zeros (01..31)
+%j	Day of the year, 3 digits with leading zeros (001..366)
+%a	A textual representation of a day, two letters
+%W	A full textual representation of the day of the week
+
+%c	Numeric representation of a month, without leading zeros (0..12)
+%m	Numeric representation of a month, with leading zeros (00..12)
+%b	A short textual representation of a month, three letters (Jan..Dec)
+%M	A full textual representation of a month, such as January or March (January..December)
+
+%y	A two digit representation of a year (93..03)
+%Y	A full numeric representation of a year, 4 digits (1993..03)
+*/
+
+scheduler.config={
+	default_date: "%j %M %Y",
+	month_date: "%F %Y",
+	load_date: "%Y-%m-%d",
+	week_date: "%l",
+	day_date: "%D, %F %j",
+	hour_date: "%H:%i",
+	month_day: "%d",
+	xml_date: "%m/%d/%Y %H:%i",
+	api_date: "%d-%m-%Y %H:%i",
+	preserve_length:true,
+	time_step: 5,
+
+	start_on_monday: 1,
+	first_hour: 0,
+	last_hour: 24,
+	readonly: false,
+	drag_resize: 1,
+	drag_move: 1,
+	drag_create: 1,
+	dblclick_create: 1,
+	edit_on_create: 1,
+	details_on_create: 0,
+	resize_month_events:false,
+	resize_month_timed:false,
+
+	cascade_event_display: false,
+	cascade_event_count: 4,
+	cascade_event_margin: 30,
+
+	multi_day:true,
+	multi_day_height_limit: 0,
+
+	drag_lightbox: true,
+	preserve_scroll: true,
+	select: true,
+
+	server_utc: false,
+	touch:true,
+	touch_tip:true,
+	touch_drag:500,
+	quick_info_detached:true,
+
+	positive_closing: false,
+
+	drag_highlight: true,
+	limit_drag_out: false,
+	icons_edit: ["icon_save", "icon_cancel"],
+	icons_select: ["icon_details", "icon_edit", "icon_delete"],
+	buttons_left: ["dhx_save_btn", "dhx_cancel_btn"],
+	buttons_right: ["dhx_delete_btn"],
+	lightbox: {
+		sections: [
+			{name: "description", height: 200, map_to: "text", type: "textarea", focus: true},
+			{name: "time", height: 72, type: "time", map_to: "auto"}
+		]
+	},
+	highlight_displayed_event: true,
+	left_border: false,
+
+	ajax_error: "alert",//"ignore"|"console"
+	delay_render: 0
+};
+scheduler.templates={};
+scheduler.init_templates=function(){
+	var labels = scheduler.locale.labels;
+	labels.dhx_save_btn 	= labels.icon_save;
+	labels.dhx_cancel_btn 	= labels.icon_cancel;
+	labels.dhx_delete_btn 	= labels.icon_delete;
+
+
+	var d=scheduler.date.date_to_str;
+	var c=scheduler.config;
+	var f = function(a,b){
+		for (var c in b)
+			if (!a[c]) a[c]=b[c];
+	};
+	f(scheduler.templates,{
+		day_date:d(c.default_date),
+		month_date:d(c.month_date),
+		week_date:function(d1,d2){
+			return scheduler.templates.day_date(d1)+" &ndash; "+scheduler.templates.day_date(scheduler.date.add(d2,-1,"day"));
+		},
+		day_scale_date:d(c.default_date),
+		month_scale_date:d(c.week_date),
+		week_scale_date:d(c.day_date),
+		hour_scale:d(c.hour_date),
+		time_picker:d(c.hour_date),
+		event_date:d(c.hour_date),
+		month_day:d(c.month_day),
+		xml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),
+		load_format:d(c.load_date,c.server_utc),
+		xml_format:d(c.xml_date,c.server_utc),
+		api_date:scheduler.date.str_to_date(c.api_date),
+		event_header:function(start,end,ev){
+			return scheduler.templates.event_date(start)+" - "+scheduler.templates.event_date(end);
+		},
+		event_text:function(start,end,ev){
+			return ev.text;
+		},
+		event_class:function(start,end,ev){
+			return "";
+		},
+		month_date_class:function(d){
+			return "";
+		},
+		week_date_class:function(d){
+			return "";
+		},
+		event_bar_date:function(start,end,ev){
+			return scheduler.templates.event_date(start)+" ";
+		},
+		event_bar_text:function(start,end,ev){
+			return ev.text;
+		},
+		month_events_link : function(date, count){
+			return "<a>View more("+count+" events)</a>";
+		},
+		drag_marker_class : function(start, end, event){
+			return "";
+		},
+		drag_marker_content : function(start, end, event){
+			return "";
+		}
+	});
+	this.callEvent("onTemplatesReady",[]);
+};
+
+
+
+scheduler.uid = function() {
+	if (!this._seed) this._seed = (new Date()).valueOf();
+	return this._seed++;
+};
+scheduler._events = {};
+scheduler.clearAll = function() {
+	this._events = {};
+	this._loaded = {};
+
+	this._edit_id = null;
+	this._select_id = null;
+	this._drag_id = null;
+	this._drag_mode = null;
+	this._drag_pos = null;
+
+	this.clear_view();
+	this.callEvent("onClearAll", []);
+};
+scheduler.addEvent = function(start_date, end_date, text, id, extra_data) {
+	if (!arguments.length)
+		return this.addEventNow();
+	var ev = start_date;
+	if (arguments.length != 1) {
+		ev = extra_data || {};
+		ev.start_date = start_date;
+		ev.end_date = end_date;
+		ev.text = text;
+		ev.id = id;
+	}
+	ev.id = ev.id || scheduler.uid();
+	ev.text = ev.text || "";
+
+	if (typeof ev.start_date == "string")  ev.start_date = this.templates.api_date(ev.start_date);
+	if (typeof ev.end_date == "string")  ev.end_date = this.templates.api_date(ev.end_date);
+
+	var d = (this.config.event_duration || this.config.time_step) * 60000;
+	if (ev.start_date.valueOf() == ev.end_date.valueOf())
+		ev.end_date.setTime(ev.end_date.valueOf() + d);
+
+	ev._timed = this.isOneDayEvent(ev);
+
+	var is_new = !this._events[ev.id];
+	this._events[ev.id] = ev;
+	this.event_updated(ev);
+	if (!this._loading)
+		this.callEvent(is_new ? "onEventAdded" : "onEventChanged", [ev.id, ev]);
+	return ev.id;
+};
+scheduler.deleteEvent = function(id, silent) {
+	var ev = this._events[id];
+	if (!silent && (!this.callEvent("onBeforeEventDelete", [id, ev]) || !this.callEvent("onConfirmedBeforeEventDelete", [id, ev])))
+		return;
+	if (ev) {
+		this._select_id = null;
+		delete this._events[id];
+		this.event_updated(ev);
+	}
+
+	this.callEvent("onEventDeleted", [id, ev]);
+};
+scheduler.getEvent = function(id) {
+	return this._events[id];
+};
+scheduler.setEvent = function(id, hash) {
+	if(!hash.id)
+		hash.id = id;
+
+	this._events[id] = hash;
+};
+scheduler.for_rendered = function(id, method) {
+	for (var i = this._rendered.length - 1; i >= 0; i--)
+		if (this._rendered[i].getAttribute("event_id") == id)
+			method(this._rendered[i], i);
+};
+scheduler.changeEventId = function(id, new_id) {
+	if (id == new_id) return;
+	var ev = this._events[id];
+	if (ev) {
+		ev.id = new_id;
+		this._events[new_id] = ev;
+		delete this._events[id];
+	}
+	this.for_rendered(id, function(r) {
+		r.setAttribute("event_id", new_id);
+	});
+	if (this._select_id == id) this._select_id = new_id;
+	if (this._edit_id == id) this._edit_id = new_id;
+	//if (this._drag_id==id) this._drag_id=new_id;
+	this.callEvent("onEventIdChange", [id, new_id]);
+};
+
+(function() {
+	var attrs = ["text", "Text", "start_date", "StartDate", "end_date", "EndDate"];
+	var create_getter = function(name) {
+		return function(id) { return (scheduler.getEvent(id))[name]; };
+	};
+	var create_setter = function(name) {
+		return function(id, value) {
+			var ev = scheduler.getEvent(id);
+			ev[name] = value;
+			ev._changed = true;
+			ev._timed = this.isOneDayEvent(ev);
+			scheduler.event_updated(ev, true);
+		};
+	};
+	for (var i = 0; i < attrs.length; i += 2) {
+		scheduler["getEvent" + attrs[i + 1]] = create_getter(attrs[i]);
+		scheduler["setEvent" + attrs[i + 1]] = create_setter(attrs[i]);
+	}
+})();
+
+scheduler.event_updated = function(ev, force) {
+	if (this.is_visible_events(ev))
+		this.render_view_data();
+	else
+		this.clear_event(ev.id);
+};
+scheduler.is_visible_events = function(ev) {
+	//if in displayed dates
+	var in_visible_range = (ev.start_date < this._max_date && this._min_date < ev.end_date);
+
+	if(in_visible_range){
+
+		//end dates are not between last/first hours
+		var end_dates_visible = (this._table_view || ((ev.end_date.getHours() >= this.config.first_hour && ev.end_date.getHours() < this.config.last_hour) ||
+							(ev.start_date.getHours() >= this.config.first_hour && ev.start_date.getHours() < this.config.last_hour))) ;
+
+		if(end_dates_visible){
+			return true;
+		}else{
+
+			//event is bigger than area hidden between last/first hours
+			var event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours
+				hidden_duration = 24 - (this.config.last_hour - this.config.first_hour);
+
+			return (event_duration > hidden_duration);
+
+		}
+	}else{
+		return false;
+	}
+};
+scheduler.isOneDayEvent = function(ev) {
+	var delta = ev.end_date.getDate() - ev.start_date.getDate();
+
+	if (!delta)
+		return ev.start_date.getMonth() == ev.end_date.getMonth() && ev.start_date.getFullYear() == ev.end_date.getFullYear();
+	else {
+		if (delta < 0)  delta = Math.ceil((ev.end_date.valueOf() - ev.start_date.valueOf()) / (24 * 60 * 60 * 1000));
+		return (delta == 1 && !ev.end_date.getHours() && !ev.end_date.getMinutes() && (ev.start_date.getHours() || ev.start_date.getMinutes() ));
+	}
+
+};
+scheduler.get_visible_events = function(only_timed) {
+	//not the best strategy for sure
+	var stack = [];
+
+	for (var id in this._events)
+		if (this.is_visible_events(this._events[id]))
+			if (!only_timed || this._events[id]._timed)
+				if (this.filter_event(id, this._events[id]))
+					stack.push(this._events[id]);
+
+	return stack;
+};
+scheduler.filter_event = function(id, ev) {
+	var filter = this["filter_" + this._mode];
+	return (filter) ? filter(id, ev) : true;
+};
+scheduler._is_main_area_event = function(ev){
+	return !!ev._timed;
+};
+scheduler.render_view_data = function(evs, hold) {
+	if (!evs) {
+		if (this._not_render) {
+			this._render_wait = true;
+			return;
+		}
+		this._render_wait = false;
+
+		this.clear_view();
+		evs = this.get_visible_events(!(this._table_view || this.config.multi_day));
+	}
+	for(var i= 0, len = evs.length; i < len; i++){
+		this._recalculate_timed(evs[i]);
+	}
+
+	if (this.config.multi_day && !this._table_view) {
+
+		var tvs = [];
+		var tvd = [];
+		for (var i = 0; i < evs.length; i++) {
+			if (this._is_main_area_event(evs[i]))
+				tvs.push(evs[i]); 
+			else
+				tvd.push(evs[i]);
+		}
+
+		// multiday events
+		this._rendered_location = this._els['dhx_multi_day'][0];
+		this._table_view = true;
+		this.render_data(tvd, hold);
+		this._table_view = false;
+
+		// normal events
+		this._rendered_location = this._els['dhx_cal_data'][0];
+		this._table_view = false;
+		this.render_data(tvs, hold);
+
+	} else {
+		this._rendered_location = this._els['dhx_cal_data'][0];
+		this.render_data(evs, hold);
+	}
+};
+
+
+scheduler._view_month_day = function(e){
+	var date = scheduler.getActionData(e).date;
+	if(!scheduler.callEvent("onViewMoreClick", [date]))
+		return;
+	scheduler.setCurrentView(date, "day");
+};
+
+scheduler._render_month_link = function(ev){
+	var parent = this._rendered_location;
+	var toRender = this._lame_clone(ev);
+
+	//render links in each cell of multiday events
+	for(var d = ev._sday; d < ev._eday; d++){
+
+		toRender._sday = d;
+		toRender._eday = d+1;
+
+		var date = scheduler.date;
+		var curr = scheduler._min_date;
+		curr = date.add(curr, toRender._sweek, "week");
+		curr = date.add(curr, toRender._sday, "day");
+		var count = scheduler.getEvents(curr, date.add(curr, 1, "day")).length;
+
+		var pos = this._get_event_bar_pos(toRender);
+		var widt = (pos.x2 - pos.x);
+
+		var el = document.createElement("div");
+		el.onclick = function(e){scheduler._view_month_day(e||event);};
+		el.className = "dhx_month_link";
+		el.style.top = pos.y + "px";
+		el.style.left = pos.x + "px";
+		el.style.width = widt + "px";
+		el.innerHTML = scheduler.templates.month_events_link(curr, count);
+		this._rendered.push(el);
+
+		parent.appendChild(el);
+	}
+};
+
+scheduler._recalculate_timed = function(id){
+	if(!id) return;
+	var ev;
+	if(typeof(id) != "object")
+		ev = this._events[id];
+	else
+		ev = id;
+	if(!ev) return;
+	ev._timed = scheduler.isOneDayEvent(ev);
+};
+scheduler.attachEvent("onEventChanged", scheduler._recalculate_timed);
+scheduler.attachEvent("onEventAdded", scheduler._recalculate_timed);
+
+scheduler.render_data = function(evs, hold) {
+	evs = this._pre_render_events(evs, hold);
+
+	for (var i = 0; i < evs.length; i++)
+		if (this._table_view){
+			if(scheduler._mode != 'month'){
+				this.render_event_bar(evs[i]);//may be multiday section on other views
+			}else{
+
+				var max_evs = scheduler.config.max_month_events;
+				if(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){
+					//of max number events per month cell is set and event can be rendered
+					this.render_event_bar(evs[i]);
+				}else if(max_evs !== undefined && evs[i]._sorder == max_evs){
+					//render 'view more' links
+					scheduler._render_month_link(evs[i]);
+				}else{
+					//do not render events with ordinal number > maximum events per cell
+				}
+			}
+
+
+
+		}else
+			this.render_event(evs[i]);
+};
+
+scheduler._get_first_visible_cell = function(cells) {
+	for (var i = 0; i < cells.length; i++) {
+		if ((cells[i].className || "").indexOf("dhx_scale_ignore") == -1) {
+			return cells[i];
+		}
+	}
+	// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic
+	return cells[0];
+};
+
+scheduler._pre_render_events = function(evs, hold) {
+	var hb = this.xy.bar_height;
+	var h_old = this._colsS.heights;
+	var h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];
+	var data = this._els["dhx_cal_data"][0];
+
+	if (!this._table_view)
+		evs = this._pre_render_events_line(evs, hold); //ignore long events for now
+	else
+		evs = this._pre_render_events_table(evs, hold);
+
+	if (this._table_view) {
+		if (hold)
+			this._colsS.heights = h_old;
+		else {
+			var evl = data.firstChild;
+			if (evl.rows) {
+				for (var i = 0; i < evl.rows.length; i++) {
+					h[i]++;
+					var cells = evl.rows[i].cells;
+					var cellHeight = this._colsS.height - this.xy.month_head_height;
+					if ((h[i]) * hb > cellHeight) { // 22 - height of cell's header
+						//we have overflow, update heights
+
+						var cHeight = cellHeight;
+						if(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){
+							cHeight = h[i] * hb;
+						}else if( (this.config.max_month_events + 1) * hb > cellHeight){
+							cHeight = (this.config.max_month_events + 1) * hb;
+						}
+
+						for (var j = 0; j < cells.length; j++) {
+							cells[j].childNodes[1].style.height = cHeight + "px";
+						}
+					//	h[i] = (h[i - 1] || 0) + cells[0].offsetHeight;
+					}
+
+					h[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;
+				}
+				h.unshift(0);
+				if (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {
+
+					var scale_settings = scheduler._colsS,
+						sum_width = scale_settings[scale_settings.col_length],
+						row_heights = scale_settings.heights.slice();
+
+					sum_width -= (scheduler.xy.scroll_width || 0);
+					this._calc_scale_sizes(sum_width, this._min_date, this._max_date);
+					scheduler._colsS.heights = row_heights;
+
+					this.set_xy(this._els["dhx_cal_header"][0], sum_width, this.xy.scale_height);
+					scheduler._render_scales(this._els["dhx_cal_header"][0]);
+					scheduler._render_month_scale(this._els["dhx_cal_data"][0], this._get_timeunit_start(), this._min_date);
+
+					scale_settings.scroll_fix = true;
+				}
+			} else {
+				if (!evs.length && this._els["dhx_multi_day"][0].style.visibility == "visible")
+					h[0] = -1;
+				if (evs.length || h[0] == -1) {
+					//shift days to have space for multiday events
+					var childs = evl.parentNode.childNodes;
+
+					// +1 so multiday events would have 2px from top and 2px from bottom by default
+					var full_multi_day_height = (h[0] + 1) * hb + 1;
+
+					var used_multi_day_height = full_multi_day_height;
+					var used_multi_day_height_css = full_multi_day_height + "px";
+					if (this.config.multi_day_height_limit) {
+						used_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;
+						used_multi_day_height_css = used_multi_day_height + "px";
+					}
+
+					data.style.top = (this._els["dhx_cal_navline"][0].offsetHeight + this._els["dhx_cal_header"][0].offsetHeight + used_multi_day_height ) + 'px';
+					data.style.height = (this._obj.offsetHeight - parseInt(data.style.top, 10) - (this.xy.margin_top || 0)) + 'px';
+
+					var multi_day_section = this._els["dhx_multi_day"][0];
+					multi_day_section.style.height = used_multi_day_height_css;
+					multi_day_section.style.visibility = (h[0] == -1 ? "hidden" : "visible");
+
+					// icon
+					var multi_day_icon = this._els["dhx_multi_day"][1];
+					multi_day_icon.style.height = used_multi_day_height_css;
+					multi_day_icon.style.visibility = (h[0] == -1 ? "hidden" : "visible");
+					multi_day_icon.className = h[0] ? "dhx_multi_day_icon" : "dhx_multi_day_icon_small";
+					this._dy_shift = (h[0] + 1) * hb;
+					if(this.config.multi_day_height_limit){
+						this._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);
+					}
+					h[0] = 0;
+
+					if (used_multi_day_height != full_multi_day_height) {
+						data.style.top = (parseInt(data.style.top) + 2) + "px";
+
+						multi_day_section.style.overflowY = "auto";
+					//	multi_day_section.style.width = (parseInt(this._els["dhx_cal_navline"][0].style.width)) + "px";
+
+						multi_day_icon.style.position = "fixed";
+						multi_day_icon.style.top = "";
+						multi_day_icon.style.left = "";
+					}
+				}
+			}
+		}
+	}
+
+	return evs;
+};
+scheduler._get_event_sday = function(ev) {
+	return Math.floor((ev.start_date.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));
+};
+scheduler._get_event_mapped_end_date = function(ev) {
+	var end_date = ev.end_date;
+	if (this.config.separate_short_events) {
+		var ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes
+		if (ev_duration < this._min_mapped_duration) {
+			end_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, "minute");
+		}
+	}
+	return end_date;
+};
+scheduler._pre_render_events_line = function(evs, hold){
+	evs.sort(function(a, b) {
+		if (a.start_date.valueOf() == b.start_date.valueOf())
+			return a.id > b.id ? 1 : -1;
+		return a.start_date > b.start_date ? 1 : -1;
+	});
+	var days = []; //events by weeks
+	var evs_originals = [];
+
+	this._min_mapped_duration = Math.ceil(this.xy.min_event_height * 60 / this.config.hour_size_px);  // values could change along the way
+
+	for (var i = 0; i < evs.length; i++) {
+		var ev = evs[i];
+
+		//check date overflow
+		var sd = ev.start_date;
+		var ed = ev.end_date;
+		//check scale overflow
+		var sh = sd.getHours();
+		var eh = ed.getHours();
+
+		ev._sday = this._get_event_sday(ev); // sday based on event start_date
+		if (this._ignores[ev._sday]){
+			//ignore event
+			evs.splice(i,1);
+			i--;
+			continue;
+		}
+
+		if (!days[ev._sday]) days[ev._sday] = [];
+
+		if (!hold) {
+			ev._inner = false;
+
+			var stack = days[ev._sday];
+
+			while (stack.length) {
+				var t_ev = stack[stack.length - 1];
+				var t_end_date = this._get_event_mapped_end_date(t_ev);
+				if (t_end_date.valueOf() <= ev.start_date.valueOf()) {
+					stack.splice(stack.length - 1, 1);
+				} else {
+					break;
+				}
+			}
+			var slot_index = stack.length;
+			var sorderSet = false;
+			for (var j = 0; j < stack.length; j++) {
+				var t_ev = stack[j];
+				var t_end_date = this._get_event_mapped_end_date(t_ev);
+				if (t_end_date.valueOf() <= ev.start_date.valueOf()) {
+					sorderSet = true;
+					ev._sorder = t_ev._sorder;
+					slot_index = j;
+					ev._inner = true;
+					break;
+				}
+			}
+
+			if (stack.length)
+				stack[stack.length - 1]._inner = true;
+
+			if (!sorderSet) {
+				if (stack.length) {
+					if (stack.length <= stack[stack.length - 1]._sorder) {
+						if (!stack[stack.length - 1]._sorder)
+							ev._sorder = 0;
+						else
+							for (j = 0; j < stack.length; j++) {
+								var _is_sorder = false;
+								for (var k = 0; k < stack.length; k++) {
+									if (stack[k]._sorder == j) {
+										_is_sorder = true;
+										break;
+									}
+								}
+								if (!_is_sorder) {
+									ev._sorder = j;
+									break;
+								}
+							}
+						ev._inner = true;
+					} else {
+						var _max_sorder = stack[0]._sorder;
+						for (j = 1; j < stack.length; j++) {
+							if (stack[j]._sorder > _max_sorder)
+								_max_sorder = stack[j]._sorder;
+						}
+						ev._sorder = _max_sorder + 1;
+						ev._inner = false;
+					}
+
+				} else
+					ev._sorder = 0;
+			}
+
+			stack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);
+
+			if (stack.length > (stack.max_count || 0)) {
+				stack.max_count = stack.length;
+				ev._count = stack.length;
+			} else {
+				ev._count = (ev._count) ? ev._count : 1;
+			}
+		}
+
+		if (sh < this.config.first_hour || eh >= this.config.last_hour) {
+			// Need to create copy of event as we will be changing it's start/end date
+			// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info
+			evs_originals.push(ev);
+			evs[i] = ev = this._copy_event(ev);
+
+			if (sh < this.config.first_hour) {
+				ev.start_date.setHours(this.config.first_hour);
+				ev.start_date.setMinutes(0);
+			}
+			if (eh >= this.config.last_hour) {
+				ev.end_date.setMinutes(0);
+				ev.end_date.setHours(this.config.last_hour);
+			}
+
+			if (ev.start_date > ev.end_date || sh == this.config.last_hour) {
+				evs.splice(i, 1);
+				i--;
+				continue;
+			}
+		}
+	}
+	if (!hold) {
+		for (var i = 0; i < evs.length; i++) {
+			evs[i]._count = days[evs[i]._sday].max_count;
+		}
+		for (var i = 0; i < evs_originals.length; i++)
+			evs_originals[i]._count = days[evs_originals[i]._sday].max_count;
+	}
+
+	return evs;
+};
+scheduler._time_order = function(evs) {
+	evs.sort(function(a, b) {
+		if (a.start_date.valueOf() == b.start_date.valueOf()) {
+			if (a._timed && !b._timed) return 1;
+			if (!a._timed && b._timed) return -1;
+			return a.id > b.id ? 1 : -1;
+		}
+		return a.start_date > b.start_date ? 1 : -1;
+	});
+};
+scheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot
+	this._time_order(evs);
+	var out = [];
+	var weeks = [
+		[],
+		[],
+		[],
+		[],
+		[],
+		[],
+		[]
+	]; //events by weeks
+	var max = this._colsS.heights;
+	var start_date;
+	var cols = this._cols.length;
+	var chunks_info = {};
+
+	for (var i = 0; i < evs.length; i++) {
+		var ev = evs[i];
+		var id = ev.id;
+		if (!chunks_info[id]) {
+			chunks_info[id] = {
+				first_chunk: true,
+				last_chunk: true
+			};
+		}
+		var chunk_info = chunks_info[id];
+		var sd = (start_date || ev.start_date);
+		var ed = ev.end_date;
+		//trim events which are crossing through current view
+		if (sd < this._min_date) {
+			chunk_info.first_chunk = false;
+			sd = this._min_date;
+		}
+		if (ed > this._max_date) {
+			chunk_info.last_chunk = false;
+			ed = this._max_date;
+		}
+
+		var locate_s = this.locate_holder_day(sd, false, ev);
+		ev._sday = locate_s % cols;
+
+		//skip single day events for ignored dates
+		if (this._ignores[ev._sday] && ev._timed) continue;
+
+		var locate_e = this.locate_holder_day(ed, true, ev) || cols;
+		ev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday
+		ev._length = locate_e - locate_s;
+
+		//3600000 - compensate 1 hour during winter|summer time shift
+		ev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));
+
+		//current slot
+		var stack = weeks[ev._sweek];
+		//check order position
+		var stack_line;
+
+		for (stack_line = 0; stack_line < stack.length; stack_line++)
+			if (stack[stack_line]._eday <= ev._sday)
+				break;
+
+		if (!ev._sorder || !hold) {
+			ev._sorder = stack_line;
+		}
+
+		if (ev._sday + ev._length <= cols) {
+			start_date = null;
+			out.push(ev);
+			stack[stack_line] = ev;
+			//get max height of slot
+			max[ev._sweek] = stack.length - 1;
+			ev._first_chunk = chunk_info.first_chunk;
+			ev._last_chunk = chunk_info.last_chunk;
+		} else { // split long event in chunks
+			var copy = this._copy_event(ev);
+			copy.id = ev.id;
+			copy._length = cols - ev._sday;
+			copy._eday = cols;
+			copy._sday = ev._sday;
+			copy._sweek = ev._sweek;
+			copy._sorder = ev._sorder;
+			copy.end_date = this.date.add(sd, copy._length, "day");
+			copy._first_chunk = chunk_info.first_chunk;
+			if (chunk_info.first_chunk) {
+				chunk_info.first_chunk = false;
+			}
+
+			out.push(copy);
+			stack[stack_line] = copy;
+			start_date = copy.end_date;
+			//get max height of slot
+			max[ev._sweek] = stack.length - 1;
+			i--;
+			continue;  //repeat same step
+		}
+	}
+	return out;
+};
+scheduler._copy_dummy = function() {
+	var a = new Date(this.start_date);
+	var b = new Date(this.end_date);
+	this.start_date = a;
+	this.end_date = b;
+};
+scheduler._copy_event = function(ev) {
+	this._copy_dummy.prototype = ev;
+	return new this._copy_dummy();
+	//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}
+};
+scheduler._rendered = [];
+scheduler.clear_view = function() {
+	for (var i = 0; i < this._rendered.length; i++) {
+		var obj = this._rendered[i];
+		if (obj.parentNode) obj.parentNode.removeChild(obj);
+	}
+	this._rendered = [];
+};
+scheduler.updateEvent = function(id) {
+	var ev = this.getEvent(id);
+	this.clear_event(id);
+
+	if (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {
+		if (this.config.update_render){
+			this.render_view_data(); 
+		}else{
+			if(this.getState().mode == "month" && !this.getState().drag_id && !this.isOneDayEvent(ev)){
+				this.render_view_data();
+			}else{
+				this.render_view_data([ev], true);
+			}
+		}
+	}
+};
+scheduler.clear_event = function(id) {
+	this.for_rendered(id, function(node, i) {
+		if (node.parentNode)
+			node.parentNode.removeChild(node);
+		scheduler._rendered.splice(i, 1);
+	});
+};
+scheduler._y_from_date = function(date){
+	var sm = date.getHours() * 60 + date.getMinutes();
+	return ((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
+};
+scheduler._calc_event_y = function(ev, min_height){
+	min_height = min_height || 0;
+	var sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();
+	var em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);
+	var top = this._y_from_date(ev.start_date);
+
+	var height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour
+	return {
+		top: top,
+		height: height
+	};
+};
+scheduler.render_event = function(ev) {
+	var menu = scheduler.xy.menu_width;
+	var menu_offset = (this.config.use_select_menu_space) ? 0 : menu;
+	if (ev._sday < 0) return; //can occur in case of recurring event during time shift
+
+	var parent = scheduler.locate_holder(ev._sday);	
+	if (!parent) return; //attempt to render non-visible event
+
+	var pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);
+	var top = pos_y.top,
+		height = pos_y.height;
+
+	var ev_count = ev._count || 1;
+	var ev_sorder = ev._sorder || 0;
+
+	var width = Math.floor((parent.clientWidth - menu_offset) / ev_count);
+	var left = ev_sorder * width + 1;
+	if (!ev._inner) width = width * (ev_count - ev_sorder);
+	if (this.config.cascade_event_display) {
+		var limit = this.config.cascade_event_count;
+		var margin = this.config.cascade_event_margin;
+		left = ev_sorder % limit * margin;
+		var right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;
+		width = Math.floor(parent.clientWidth - menu_offset - left - right);
+	}
+
+	var 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));
+
+	this._rendered.push(d);
+	parent.appendChild(d);
+
+	left = left + parseInt(parent.style.left, 10) + menu_offset;
+
+	if (this._edit_id == ev.id) {
+
+		d.style.zIndex = 1; //fix overlapping issue
+		width = Math.max(width - 4, scheduler.xy.editor_width);
+		d = document.createElement("DIV");
+		d.setAttribute("event_id", ev.id);
+		this.set_xy(d, width, height - 20, left, top + 14);
+		d.className = "dhx_cal_event dhx_cal_editor";
+
+		var tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);
+
+		if(tplClass){
+			d.className += " " + tplClass;
+		}
+		var d2 = document.createElement("DIV");
+		this.set_xy(d2, width - 6, height - 26);
+		d2.style.cssText += ";margin:2px 2px 2px 2px;overflow:hidden;";
+
+		d.appendChild(d2);
+		this._els["dhx_cal_data"][0].appendChild(d);
+		this._rendered.push(d);
+
+		d2.innerHTML = "<textarea class='dhx_cal_editor'>" + ev.text + "</textarea>";
+		if (this._quirks7) d2.firstChild.style.height = height - 12 + "px"; //IEFIX
+		this._editor = d2.firstChild;
+		this._editor.onkeydown = function(e) {
+			if ((e || event).shiftKey) return true;
+			var code = (e || event).keyCode;
+			if (code == scheduler.keys.edit_save) scheduler.editStop(true);
+			if (code == scheduler.keys.edit_cancel) scheduler.editStop(false);
+		};
+		this._editor.onselectstart = function (e) {
+			(e || event).cancelBubble = true;
+			return true;
+		};
+		scheduler._focus(d2.firstChild, true);
+		//IE and opera can add x-scroll during focusing
+		this._els["dhx_cal_data"][0].scrollLeft = 0;
+	}
+	if (this.xy.menu_width !== 0 && this._select_id == ev.id) {
+		if (this.config.cascade_event_display && this._drag_mode)
+			d.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event
+		var icons = this.config["icons_" + ((this._edit_id == ev.id) ? "edit" : "select")];
+		var icons_str = "";
+		var bg_color = (ev.color ? ("background-color: " + ev.color + ";") : "");
+		var color = (ev.textColor ? ("color: " + ev.textColor + ";") : "");
+		for (var i = 0; i < icons.length; i++)
+			icons_str += "<div class='dhx_menu_icon " + icons[i] + "' style='" + bg_color + "" + color + "' title='" + this.locale.labels[icons[i]] + "'></div>";
+		var obj = this._render_v_bar(ev, left - menu + 1, top, menu, icons.length * 20 + 26 - 2, "", "<div style='" + bg_color + "" + color + "' class='dhx_menu_head'></div>", icons_str, true);
+		obj.style.left = left - menu + 1;
+		this._els["dhx_cal_data"][0].appendChild(obj);
+		this._rendered.push(obj);
+	}
+	if(this.config.drag_highlight && this._drag_id == ev.id){
+		this.highlightEventPosition(ev);
+	}
+};
+scheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {
+	var d = document.createElement("DIV");
+	var id = ev.id;
+	var cs = (bottom) ? "dhx_cal_event dhx_cal_select_menu" : "dhx_cal_event";
+
+	var cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);
+	if (cse) cs = cs + " " + cse;
+
+	var bg_color = (ev.color ? ("background:" + ev.color + ";") : "");
+	var color = (ev.textColor ? ("color:" + ev.textColor + ";") : "");
+
+	var html = '<div event_id="' + id + '" class="' + cs + '" style="position:absolute; top:' + y + 'px; left:' + x + 'px; width:' + (w - 4) + 'px; height:' + h + 'px;' + (style || "") + '"></div>';
+	d.innerHTML = html;
+
+	var container = d.cloneNode(true).firstChild;
+
+	if (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {
+		return container;
+	} else {
+		container = d.firstChild;
+
+		var inner_html = '<div class="dhx_event_move dhx_header" style=" width:' + (w - 6) + 'px;' + bg_color + '" >&nbsp;</div>';
+		inner_html += '<div class="dhx_event_move dhx_title" style="' + bg_color + '' + color + '">' + contentA + '</div>';
+		inner_html += '<div class="dhx_body" style=" width:' + (w - (this._quirks ? 4 : 14)) + 'px; height:' + (h - (this._quirks ? 20 : 30) + 1) + 'px;' + bg_color + '' + color + '">' + contentB + '</div>'; // +2 css specific, moved from render_event
+
+		var footer_class = "dhx_event_resize dhx_footer";
+		if (bottom)
+			footer_class = "dhx_resize_denied " + footer_class;
+
+		inner_html += '<div class="' + footer_class + '" style=" width:' + (w - 8) + 'px;' + (bottom ? ' margin-top:-1px;' : '') + '' + bg_color + '' + color + '" ></div>';
+
+		container.innerHTML = inner_html;
+	}
+
+	return container;
+};
+scheduler.renderEvent = function(){
+	return false;
+};
+scheduler.locate_holder = function(day) {
+	if (this._mode == "day") return this._els["dhx_cal_data"][0].firstChild; //dirty
+	return this._els["dhx_cal_data"][0].childNodes[day];
+};
+scheduler.locate_holder_day = function(date, past) {
+	var day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));
+	//when locating end data of event , we need to use next day if time part was defined
+	if (past && this.date.time_part(date)) day++;
+	return day;
+};
+
+
+
+scheduler._get_dnd_order = function(order, ev_height, max_height){
+	if(!this._drag_event)
+		return order;
+	if(!this._drag_event._orig_sorder)
+		this._drag_event._orig_sorder = order;
+	else
+		order = this._drag_event._orig_sorder;
+
+	var evTop = ev_height * order;
+	while((evTop + ev_height) > max_height){
+		order--;
+		evTop -= ev_height;
+	}
+	order = Math.max(order, 0);
+	return order;
+};
+//scheduler._get_event_bar_pos = function(sday, eday, week, drag){
+scheduler._get_event_bar_pos = function(ev){
+	var x = this._colsS[ev._sday];
+	var x2 = this._colsS[ev._eday];
+	if (x2 == x) x2 = this._colsS[ev._eday + 1];
+	var hb = this.xy.bar_height;
+
+	var order = ev._sorder;
+	if(ev.id == this._drag_id){
+		var cellHeight = this._colsS.heights[ev._sweek + 1] - this._colsS.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height
+		order = scheduler._get_dnd_order(order, hb, cellHeight);
+	}
+	var y_event_offset =  order * hb;
+	var y = this._colsS.heights[ev._sweek] + (this._colsS.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;
+	return {x:x, x2:x2, y:y};
+};
+
+scheduler.render_event_bar = function (ev) {
+	var parent = this._rendered_location;
+	var pos = this._get_event_bar_pos(ev);
+
+	var y = pos.y;
+	var x = pos.x;
+	var x2 = pos.x2;
+	
+	// resize for month mutliday events
+	var resize_handle = "";
+
+	//events in ignored dates
+
+	if (!x2) return;
+
+	var resizable = scheduler.config.resize_month_events && this._mode == "month" &&
+		(!ev._timed || scheduler.config.resize_month_timed);
+
+	var d = document.createElement("DIV");
+	var left_chunk = (ev.hasOwnProperty("_first_chunk") && ev._first_chunk),
+		right_chunk = (ev.hasOwnProperty("_last_chunk") && ev._last_chunk);
+
+	var resize_left = resizable && (ev._timed || left_chunk);
+	var resize_right = resizable && (ev._timed || right_chunk);
+
+	var cs = "dhx_cal_event_clear";
+	if (!ev._timed || resizable) {
+		cs = "dhx_cal_event_line";
+	}
+	if(left_chunk){
+		cs += " dhx_cal_event_line_start";
+	}
+	if(right_chunk){
+		cs += " dhx_cal_event_line_end";
+	}
+	if(resize_left){
+		resize_handle += "<div class='dhx_event_resize dhx_event_resize_start'></div>";
+	}
+	if(resize_right){
+		resize_handle += "<div class='dhx_event_resize dhx_event_resize_end'></div>";
+	}
+
+	var cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);
+	if (cse){
+		cs += " " + cse;
+	}
+
+	var bg_color = (ev.color ? ("background:" + ev.color + ";") : "");
+	var color = (ev.textColor ? ("color:" + ev.textColor + ";") : "");
+
+	var style_text = [
+		"position:absolute",
+		"top:" + y + "px",
+		"left:" + x + "px",
+		"width:" + (x2 - x - 15) + "px",
+		color,
+		bg_color,
+		(ev._text_style || "")
+	].join(";");
+
+	var html = '<div event_id="' + ev.id + '" class="' + cs + '" style="'+style_text+'">';
+	if (resizable) {
+		html += resize_handle;
+	}
+	if(scheduler.getState().mode == "month"){
+		ev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event
+	}
+
+	if (ev._timed)
+		html += scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev);
+	html += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '</div>';
+	html += '</div>';
+
+	d.innerHTML = html;
+
+	this._rendered.push(d.firstChild);
+	parent.appendChild(d.firstChild);
+};
+
+scheduler._locate_event = function(node) {
+	var id = null;
+	while (node && !id && node.getAttribute) {
+		id = node.getAttribute("event_id");
+		node = node.parentNode;
+	}
+	return id;
+};
+
+scheduler.edit = function(id) {
+	if (this._edit_id == id) return;
+	this.editStop(false, id);
+	this._edit_id = id;
+	this.updateEvent(id);
+};
+scheduler.editStop = function(mode, id) {
+	if (id && this._edit_id == id) return;
+	var ev = this.getEvent(this._edit_id);
+	if (ev) {
+		if (mode) ev.text = this._editor.value;
+		this._edit_id = null;
+		this._editor = null;
+		this.updateEvent(ev.id);
+		this._edit_stop_event(ev, mode);
+	}
+};
+scheduler._edit_stop_event = function(ev, mode) {
+	if (this._new_event) {
+		if (!mode) {
+			if (ev) // in case of custom lightbox user can already delete event
+				this.deleteEvent(ev.id, true);
+		} else {
+			this.callEvent("onEventAdded", [ev.id, ev]);
+		}
+		this._new_event = null;
+	} else {
+		if (mode){
+			this.callEvent("onEventChanged", [ev.id, ev]);
+		}
+	}
+};
+
+scheduler.getEvents = function(from, to) {
+	var result = [];
+	for (var a in this._events) {
+		var ev = this._events[a];
+		if (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))
+			result.push(ev);
+	}
+	return result;
+};
+scheduler.getRenderedEvent = function(id) {
+	if (!id)
+		return;
+	var rendered_events = scheduler._rendered;
+	for (var i=0; i<rendered_events.length; i++) {
+		var rendered_event = rendered_events[i];
+		if (rendered_event.getAttribute("event_id") == id) {
+			return rendered_event;
+		}
+	}
+	return null;
+};
+scheduler.showEvent = function(id, mode) {
+	var ev = (typeof id == "number" || typeof id == "string") ? scheduler.getEvent(id) : id;
+	mode = mode||scheduler._mode;
+
+	if (!ev || (this.checkEvent("onBeforeEventDisplay") && !this.callEvent("onBeforeEventDisplay", [ev, mode])))
+		return;
+
+	var scroll_hour = scheduler.config.scroll_hour;
+	scheduler.config.scroll_hour = ev.start_date.getHours();
+	var preserve_scroll = scheduler.config.preserve_scroll;
+	scheduler.config.preserve_scroll = false;
+
+	var original_color = ev.color;
+	var original_text_color = ev.textColor;
+	if (scheduler.config.highlight_displayed_event) {
+		ev.color = scheduler.config.displayed_event_color;
+		ev.textColor = scheduler.config.displayed_event_text_color;
+	}
+
+	scheduler.setCurrentView(new Date(ev.start_date), mode);
+
+	ev.color = original_color;
+	ev.textColor = original_text_color;
+	scheduler.config.scroll_hour = scroll_hour;
+	scheduler.config.preserve_scroll = preserve_scroll;
+
+	if (scheduler.matrix && scheduler.matrix[mode]) {
+		scheduler._els.dhx_cal_data[0].scrollTop = getAbsoluteTop(scheduler.getRenderedEvent(ev.id)) - getAbsoluteTop(scheduler._els.dhx_cal_data[0]) - 20;
+	}
+
+	scheduler.callEvent("onAfterEventDisplay", [ev, mode]);
+};
+
+scheduler._append_drag_marker = function(m){
+	if(m.parentNode) return;
+	var zone = scheduler._els["dhx_cal_data"][0];
+
+	var scale = zone.lastChild;
+	if(scale.className && scale.className.indexOf("dhx_scale_holder") < 0 && scale.previousSibling){
+		scale = scale.previousSibling;
+	}
+	if (scale && scale.className.indexOf("dhx_scale_holder") === 0) {
+		scale.appendChild(m);
+	}
+};
+
+scheduler._update_marker_position = function(m, event){
+	var size = scheduler._calc_event_y(event, 0);
+	m.style.top = size.top + "px";
+	m.style.height = size.height + "px";
+};
+
+scheduler.highlightEventPosition = function(event){
+	var m = document.createElement("div");
+
+	m.setAttribute("event_id", event.id);
+	this._rendered.push(m);
+	this._update_marker_position(m, event);
+
+	var css = this.templates.drag_marker_class(event.start_date, event.end_date, event);
+	var html = this.templates.drag_marker_content(event.start_date, event.end_date, event);
+	m.className = "dhx_drag_marker";
+	if(css)
+		m.className += " " + css;
+	if(html)
+		m.innerHTML = html;
+	this._append_drag_marker(m);
+};
+scheduler._loaded = {};
+scheduler._load = function(url, from) {
+	url = url || this._load_url;
+
+	if(!url){
+		//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined
+		return;
+	}
+
+	url += (url.indexOf("?") == -1 ? "?" : "&") + "timeshift=" + (new Date()).getTimezoneOffset();
+	if (this.config.prevent_cache)    url += "&uid=" + this.uid();
+	var to;
+	from = from || this._date;
+
+	if (this._load_mode) {
+		var lf = this.templates.load_format;
+
+		from = this.date[this._load_mode + "_start"](new Date(from.valueOf()));
+		while (from > this._min_date) from = this.date.add(from, -1, this._load_mode);
+		to = from;
+
+		var cache_line = true;
+		while (to < this._max_date) {
+			to = this.date.add(to, 1, this._load_mode);
+			if (this._loaded[lf(from)] && cache_line)
+				from = this.date.add(from, 1, this._load_mode); else cache_line = false;
+		}
+
+		var temp_to = to;
+		do {
+			to = temp_to;
+			temp_to = this.date.add(to, -1, this._load_mode);
+		} while (temp_to > from && this._loaded[lf(temp_to)]);
+
+		if (to <= from)
+			return false; //already loaded
+		dhtmlxAjax.get(url + "&from=" + lf(from) + "&to=" + lf(to), function(l) {scheduler.on_load(l);});
+		while (from < to) {
+			this._loaded[lf(from)] = true;
+			from = this.date.add(from, 1, this._load_mode);
+		}
+	} else
+		dhtmlxAjax.get(url, function(l) {scheduler.on_load(l);});
+	this.callEvent("onXLS", []);
+	return true;
+};
+scheduler.on_load = function(loader) {
+	var evs;
+	var error = false;
+	if (this._process && this._process != "xml") {
+		try{
+			evs = this[this._process].parse(loader.xmlDoc.responseText);
+		}catch (e){
+			error = true;
+		}
+	} else {
+		evs = this._magic_parser(loader);
+		if(!evs){
+			error = true;
+		}
+	}
+
+	if(error){
+		this.callEvent("onLoadError", [loader.xmlDoc]);
+		evs = [];
+	}
+	
+	scheduler._process_loading(evs);
+
+	this.callEvent("onXLE", []);
+};
+scheduler._process_loading = function(evs) {
+	this._loading = true;
+	this._not_render = true;
+	for (var i = 0; i < evs.length; i++) {
+		if (!this.callEvent("onEventLoading", [evs[i]])) continue;
+		this.addEvent(evs[i]);
+	}
+	this._not_render = false;
+	if (this._render_wait) this.render_view_data();
+
+	this._loading = false;
+	if (this._after_call) this._after_call();
+	this._after_call = null;
+};
+scheduler._init_event = function(event) {
+	event.text = (event.text || event._tagvalue) || "";
+	event.start_date = scheduler._init_date(event.start_date);
+	event.end_date = scheduler._init_date(event.end_date);
+};
+
+scheduler._init_date = function(date){
+	if(!date)
+		return null;
+	if(typeof date == "string")
+		return scheduler.templates.xml_date(date);
+	else return new Date(date);
+};
+
+scheduler.json = {};
+scheduler.json.parse = function(data) {
+	if (typeof data == "string") {
+		scheduler._temp = eval("(" + data + ")");
+		data = (scheduler._temp) ? scheduler._temp.data || scheduler._temp.d || scheduler._temp : [];
+	}
+
+	if (data.dhx_security)
+		dhtmlx.security_key = data.dhx_security;
+
+	var collections = (scheduler._temp && scheduler._temp.collections) ? scheduler._temp.collections : {};
+	var collections_loaded = false;
+	for (var key in collections) {
+		if (collections.hasOwnProperty(key)) {
+			collections_loaded = true;
+			var collection = collections[key];
+			var arr = scheduler.serverList[key];
+			if (!arr) continue;
+			arr.splice(0, arr.length); //clear old options
+			for (var j = 0; j < collection.length; j++) {
+				var option = collection[j];
+				var obj = { key: option.value, label: option.label }; // resulting option object
+				for (var option_key in option) {
+					if (option.hasOwnProperty(option_key)) {
+						if (option_key == "value" || option_key == "label")
+							continue;
+						obj[option_key] = option[option_key]; // obj['value'] = option['value']
+					}
+				}
+				arr.push(obj);
+			}
+		}
+	}
+	if (collections_loaded)
+		scheduler.callEvent("onOptionsLoad", []);
+
+	var evs = [];
+	for (var i = 0; i < data.length; i++) {
+		var event = data[i];
+		scheduler._init_event(event);
+		evs.push(event);
+	}
+	return evs;
+};
+scheduler.parse = function(data, type) {
+	this._process = type;
+	this.on_load({xmlDoc: {responseText: data}});
+};
+scheduler.load = function(url, call) {
+	if (typeof call == "string") {
+		this._process = call;
+		call = arguments[2];
+	}
+
+	this._load_url = url;
+	this._after_call = call;
+	this._load(url, this._date);
+};
+//possible values - day,week,month,year,all
+scheduler.setLoadMode = function(mode) {
+	if (mode == "all") mode = "";
+	this._load_mode = mode;
+};
+
+scheduler.serverList = function(name, array) {
+	if (array) {
+		this.serverList[name] = array.slice(0);
+		return this.serverList[name];
+	}
+	this.serverList[name] = (this.serverList[name] || []);
+	return this.serverList[name];
+};
+scheduler._userdata = {};
+scheduler._magic_parser = function(loader) {
+	var xml;
+	if (!loader.getXMLTopNode) { //from a string
+		var xml_string = loader.xmlDoc.responseText;
+		loader = new dtmlXMLLoaderObject(function() {});
+		loader.loadXMLString(xml_string);
+	}
+
+	xml = loader.getXMLTopNode("data");
+	if (xml.tagName != "data") return null;//not an xml
+	var skey = xml.getAttribute("dhx_security");
+	if (skey)
+		dhtmlx.security_key = skey;
+
+	var opts = loader.doXPath("//coll_options");
+	for (var i = 0; i < opts.length; i++) {
+		var bind = opts[i].getAttribute("for");
+		var arr = this.serverList[bind];
+		if (!arr) continue;
+		arr.splice(0, arr.length);	//clear old options
+		var itms = loader.doXPath(".//item", opts[i]);
+		for (var j = 0; j < itms.length; j++) {
+			var itm = itms[j];
+			var attrs = itm.attributes;
+			var obj = { key: itms[j].getAttribute("value"), label: itms[j].getAttribute("label")};
+			for (var k = 0; k < attrs.length; k++) {
+				var attr = attrs[k];
+				if (attr.nodeName == "value" || attr.nodeName == "label")
+					continue;
+				obj[attr.nodeName] = attr.nodeValue;
+			}
+			arr.push(obj);
+		}
+	}
+	if (opts.length)
+		scheduler.callEvent("onOptionsLoad", []);
+
+	var ud = loader.doXPath("//userdata");
+	for (var i = 0; i < ud.length; i++) {
+		var udx = this._xmlNodeToJSON(ud[i]);
+		this._userdata[udx.name] = udx.text;
+	}
+
+	var evs = [];
+	xml = loader.doXPath("//event");
+
+	for (var i = 0; i < xml.length; i++) {
+		var ev = evs[i] = this._xmlNodeToJSON(xml[i]);
+		scheduler._init_event(ev);
+	}
+	return evs;
+};
+scheduler._xmlNodeToJSON = function(node) {
+	var t = {};
+	for (var i = 0; i < node.attributes.length; i++)
+		t[node.attributes[i].name] = node.attributes[i].value;
+
+	for (var i = 0; i < node.childNodes.length; i++) {
+		var child = node.childNodes[i];
+		if (child.nodeType == 1)
+			t[child.tagName] = child.firstChild ? child.firstChild.nodeValue : "";
+	}
+
+	if (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : "";
+
+	return t;
+};
+scheduler.attachEvent("onXLS", function() {
+	if (this.config.show_loading === true) {
+		var t;
+		t = this.config.show_loading = document.createElement("DIV");
+		t.className = 'dhx_loading';
+		t.style.left = Math.round((this._x - 128) / 2) + "px";
+		t.style.top = Math.round((this._y - 15) / 2) + "px";
+		this._obj.appendChild(t);
+	}
+});
+scheduler.attachEvent("onXLE", function() {
+	var t = this.config.show_loading;
+	if (t && typeof t == "object") {
+			this._obj.removeChild(t);
+			this.config.show_loading = true;
+		}
+});
+
+scheduler.ical={
+	parse:function(str){
+		var data = str.match(RegExp(this.c_start+"[^\f]*"+this.c_end,""));
+		if (!data.length) return;
+		
+		//unfolding 
+		data[0]=data[0].replace(/[\r\n]+(?=[a-z \t])/g," ");
+		//drop property
+		data[0]=data[0].replace(/\;[^:\r\n]*:/g,":");
+		
+		
+		var incoming=[];
+		var match;
+		var event_r = RegExp("(?:"+this.e_start+")([^\f]*?)(?:"+this.e_end+")","g");
+		while ((match=event_r.exec(data)) !== null){
+			var e={};
+			var param;
+			var param_r = /[^\r\n]+[\r\n]+/g;
+			while ((param=param_r.exec(match[1])) !== null)
+				this.parse_param(param.toString(),e);
+			if (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined
+			incoming.push(e);	
+		}
+		return incoming;
+	},
+	parse_param:function(str,obj){
+		var d = str.indexOf(":"); 
+			if (d==-1) return;
+		
+		var name = str.substr(0,d).toLowerCase();
+		var value = str.substr(d+1).replace(/\\\,/g,",").replace(/[\r\n]+$/,"");
+		if (name=="summary")
+			name="text";
+		else if (name=="dtstart"){
+			name = "start_date";
+			value = this.parse_date(value,0,0);
+		}
+		else if (name=="dtend"){
+			name = "end_date";
+			value = this.parse_date(value,0,0);
+		}
+		obj[name]=value;
+	},
+	parse_date:function(value,dh,dm){
+		var t = value.split("T");	
+		if (t[1]){
+			dh=t[1].substr(0,2);
+			dm=t[1].substr(2,2);
+		}
+		var dy = t[0].substr(0,4);
+		var dn = parseInt(t[0].substr(4,2),10)-1;
+		var dd = t[0].substr(6,2);
+		if (scheduler.config.server_utc && !t[1]) { // if no hours/minutes were specified == full day event
+			return new Date(Date.UTC(dy,dn,dd,dh,dm)) ;
+		}
+		return new Date(dy,dn,dd,dh,dm);
+	},
+	c_start:"BEGIN:VCALENDAR",
+	e_start:"BEGIN:VEVENT",
+	e_end:"END:VEVENT",
+	c_end:"END:VCALENDAR"	
+};
+scheduler._lightbox_controls = {};
+scheduler.formSection = function(name){
+	var config = this.config.lightbox.sections;
+	var i =0;
+	for (i; i < config.length; i++)
+		if (config[i].name == name)
+			break;
+	var section = config[i];
+	if (!scheduler._lightbox)
+		scheduler.getLightbox();
+	var header = document.getElementById(section.id);
+	var node = header.nextSibling;
+
+	var result = {
+		section: section,
+		header: header,
+		node: node,
+		getValue:function(ev){
+			return scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);
+		},
+		setValue:function(value, ev){
+			return scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);
+		}
+	};
+
+	var handler = scheduler._lightbox_controls["get_"+section.type+"_control"];
+	return handler?handler(result):result;
+};
+scheduler._lightbox_controls.get_template_control = function(result) {
+	result.control = result.node;
+	return result;
+};
+scheduler._lightbox_controls.get_select_control = function(result) {
+	result.control = result.node.getElementsByTagName('select')[0];
+	return result;
+};
+scheduler._lightbox_controls.get_textarea_control = function(result) {
+	result.control = result.node.getElementsByTagName('textarea')[0];
+	return result;
+};
+scheduler._lightbox_controls.get_time_control = function(result) {
+	result.control = result.node.getElementsByTagName('select'); // array
+	return result;
+};
+scheduler.form_blocks={
+	template:{
+			render: function(sns){
+			var height=(sns.height||"30")+"px";
+			return "<div class='dhx_cal_ltext dhx_cal_template' style='height:"+height+";'></div>";
+		},
+		set_value:function(node,value,ev,config){
+			node.innerHTML = value||"";
+		},
+		get_value:function(node,ev,config){
+			return node.innerHTML||"";
+		},
+		focus: function(node){
+		}
+	},
+	textarea:{
+		render:function(sns){
+			var height=(sns.height||"130")+"px";
+			return "<div class='dhx_cal_ltext' style='height:"+height+";'><textarea></textarea></div>";
+		},
+		set_value:function(node,value,ev){
+			node.firstChild.value=value||"";
+		},
+		get_value:function(node,ev){
+			return node.firstChild.value;
+		},
+		focus:function(node){
+			var a=node.firstChild; scheduler._focus(a, true);
+		}
+	},
+	select:{
+		render:function(sns){
+			var height=(sns.height||"23")+"px";
+			var html="<div class='dhx_cal_ltext' style='height:"+height+";'><select style='width:100%;'>";
+			for (var i=0; i < sns.options.length; i++)
+				html+="<option value='"+sns.options[i].key+"'>"+sns.options[i].label+"</option>";
+			html+="</select></div>";
+			return html;
+		},
+		set_value:function(node,value,ev,sns){
+			var select = node.firstChild;
+			if (!select._dhx_onchange && sns.onchange) {
+				select.onchange = sns.onchange;
+				select._dhx_onchange = true;
+			}
+			if (typeof value == "undefined")
+				value = (select.options[0]||{}).value;
+			select.value=value||"";
+		},
+		get_value:function(node,ev){
+			return node.firstChild.value;
+		},
+		focus:function(node){
+			var a=node.firstChild; scheduler._focus(a, true); 
+		}
+	},
+	time:{
+		render:function(sns) {
+			if (!sns.time_format) {
+				// default order
+				sns.time_format = ["%H:%i", "%d", "%m", "%Y"];
+			}
+			// map: default order => real one
+			sns._time_format_order = {};
+			var time_format = sns.time_format;
+
+			var cfg = scheduler.config;
+			var dt = this.date.date_part(scheduler._currentDate());
+			var last = 24*60, first = 0;
+			if(scheduler.config.limit_time_select){
+				last = 60*cfg.last_hour+1;
+				first = 60*cfg.first_hour;
+				dt.setHours(cfg.first_hour);
+			}
+			var html = "";
+
+			for (var p = 0; p < time_format.length; p++) {
+				var time_option = time_format[p];
+
+				// adding spaces between selects
+				if (p > 0) {
+					html += " ";
+				}
+
+				switch (time_option) {
+					case "%Y":
+						sns._time_format_order[3] = p;
+						//year
+						html+="<select>";
+						var year = dt.getFullYear()-5; //maybe take from config?
+						for (var i=0; i < 10; i++)
+							html+="<option value='"+(year+i)+"'>"+(year+i)+"</option>";
+						html+="</select> ";
+						break;
+					case "%m":
+						sns._time_format_order[2] = p;
+						//month
+						html+="<select>";
+						for (var i=0; i < 12; i++)
+							html+="<option value='"+i+"'>"+this.locale.date.month_full[i]+"</option>";
+						html += "</select>";
+						break;
+					case "%d":
+						sns._time_format_order[1] = p;
+						//days
+						html+="<select>";
+						for (var i=1; i < 32; i++)
+							html+="<option value='"+i+"'>"+i+"</option>";
+						html += "</select>";
+						break;
+					case "%H:%i":
+						sns._time_format_order[0] = p;
+						//hours
+						html += "<select>";
+						var i = first;
+						var tdate = dt.getDate();
+						sns._time_values = [];
+
+						while(i<last){
+							var time=this.templates.time_picker(dt);
+							html+="<option value='"+i+"'>"+time+"</option>";
+							sns._time_values.push(i);
+							dt.setTime(dt.valueOf()+this.config.time_step*60*1000);
+							var diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day
+							i=diff*24*60+dt.getHours()*60+dt.getMinutes();
+						}
+						html += "</select>";
+						break;
+				}
+			}
+
+			return "<div style='height:30px;padding-top:0px;font-size:inherit;' class='dhx_section_time'>"+html+"<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>"+html+"</div>";
+		},
+		set_value:function(node,value,ev,config){
+			var cfg = scheduler.config;
+			var s=node.getElementsByTagName("select");
+			var map = config._time_format_order;
+			var start_date, end_date;
+
+			if(cfg.full_day) {
+				if (!node._full_day){
+					var html = "<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> "+scheduler.locale.labels.full_day+"&nbsp;</label></input>";
+					if (!scheduler.config.wide_form)
+						html = node.previousSibling.innerHTML+html;
+					node.previousSibling.innerHTML=html;
+					node._full_day=true;
+				}
+				var input=node.previousSibling.getElementsByTagName("input")[0];
+				input.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);
+
+				s[map[0]].disabled=input.checked;
+				s[ map[0] + s.length/2 ].disabled=input.checked;
+
+				input.onclick = function(){ 
+					if(input.checked) {
+						var obj = {};
+						scheduler.form_blocks.time.get_value(node,obj,config);
+
+						start_date = scheduler.date.date_part(obj.start_date);
+						end_date = scheduler.date.date_part(obj.end_date);
+
+						if (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))
+							end_date = scheduler.date.add(end_date, 1, "day");
+					}else{
+						start_date = null;
+						end_date = null;
+					}
+
+					s[map[0]].disabled=input.checked;
+					s[ map[0] + s.length/2 ].disabled=input.checked;
+					
+					_fill_lightbox_select(s,0,start_date||ev.start_date);
+					_fill_lightbox_select(s,4,end_date||ev.end_date);
+				};
+			}
+			
+			if(cfg.auto_end_date && cfg.event_duration) {
+				var _update_lightbox_select = function () {
+					start_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);
+					end_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));
+					_fill_lightbox_select(s, 4, end_date);
+				};
+				for(var i=0; i<4; i++) {
+					s[i].onchange = _update_lightbox_select;
+				}
+			}
+			
+			function _fill_lightbox_select(s,i,d) {
+				var time_values = config._time_values;
+				var direct_value = d.getHours()*60+d.getMinutes();
+				var fixed_value = direct_value;
+				var value_found = false;
+				for (var k=0; k<time_values.length; k++) {
+					var t_v = time_values[k];
+					if (t_v === direct_value) {
+						value_found = true;
+						break;
+					}
+					if (t_v < direct_value)
+						fixed_value = t_v;
+				}
+
+				s[i+map[0]].value=(value_found)?direct_value:fixed_value;
+				if(!(value_found || fixed_value)){
+					s[i+map[0]].selectedIndex = -1;//show empty select in FF
+				}
+				s[i+map[1]].value=d.getDate();
+				s[i+map[2]].value=d.getMonth();
+				s[i+map[3]].value=d.getFullYear();
+			}
+
+			_fill_lightbox_select(s,0,ev.start_date);
+			_fill_lightbox_select(s,4,ev.end_date);
+		},
+		get_value:function(node, ev, config) {
+			var s = node.getElementsByTagName("select");
+			var map = config._time_format_order;
+
+			ev.start_date=new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);
+			ev.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);
+
+			if(!(s[map[3]].value && s[map[3]+4].value)){
+				// use the previous date if start/end years are empty (outside lightbox range)
+				var original = this.getEvent(this._lightbox_id);
+				if(original){
+					ev.start_date = original.start_date;
+					ev.end_date = original.end_date;
+				}
+			}
+
+			if (ev.end_date<=ev.start_date) 
+				ev.end_date=scheduler.date.add(ev.start_date,scheduler.config.time_step,"minute");
+			return {
+				start_date: new Date(ev.start_date),
+				end_date: new Date(ev.end_date)
+			};
+		},
+		focus:function(node){
+			scheduler._focus(node.getElementsByTagName("select")[0]); 
+		}
+	}
+};
+scheduler.showCover=function(box){
+	if (box){
+		box.style.display="block";
+
+		var scroll_top = window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;
+		var scroll_left = window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft;
+
+		var view_height = window.innerHeight||document.documentElement.clientHeight;
+
+		if(scroll_top) // if vertical scroll on window
+			box.style.top=Math.round(scroll_top+Math.max((view_height-box.offsetHeight)/2, 0))+"px";
+		else // vertical scroll on body
+			box.style.top=Math.round(Math.max(((view_height-box.offsetHeight)/2), 0) + 9)+"px"; // +9 for compatibility with auto tests
+
+		// not quite accurate but used for compatibility reasons
+		if(document.documentElement.scrollWidth > document.body.offsetWidth) // if horizontal scroll on the window
+			box.style.left=Math.round(scroll_left+(document.body.offsetWidth-box.offsetWidth)/2)+"px";
+		else // horizontal scroll on the body
+			box.style.left=Math.round((document.body.offsetWidth-box.offsetWidth)/2)+"px";
+	}
+    this.show_cover();
+};
+scheduler.showLightbox=function(id){
+	if (!id) return;
+	if (!this.callEvent("onBeforeLightbox",[id])) {
+		if (this._new_event)
+			this._new_event = null;
+		return;
+	}
+	var box = this.getLightbox();
+	this.showCover(box);
+	this._fill_lightbox(id,box);
+	this.callEvent("onLightbox",[id]);
+};
+scheduler._fill_lightbox = function(id, box) {
+	var ev = this.getEvent(id);
+	var s = box.getElementsByTagName("span");
+	if (scheduler.templates.lightbox_header) {
+		s[1].innerHTML = "";
+		s[2].innerHTML = scheduler.templates.lightbox_header(ev.start_date, ev.end_date, ev);
+	} else {
+		s[1].innerHTML = this.templates.event_header(ev.start_date, ev.end_date, ev);
+		s[2].innerHTML = (this.templates.event_bar_text(ev.start_date, ev.end_date, ev) || "").substr(0, 70); //IE6 fix
+	}
+
+	var sns = this.config.lightbox.sections;
+	for (var i = 0; i < sns.length; i++) {
+		var current_sns = sns[i];
+		var node = document.getElementById(current_sns.id).nextSibling;
+		var block = this.form_blocks[current_sns.type];
+		var value = (ev[current_sns.map_to] !== undefined) ? ev[current_sns.map_to] : current_sns.default_value;
+		block.set_value.call(this, node, value, ev, current_sns);
+		if (sns[i].focus)
+			block.focus.call(this, node);
+	}
+
+	scheduler._lightbox_id = id;
+};
+scheduler._lightbox_out=function(ev){
+	var sns = this.config.lightbox.sections;
+	for (var i=0; i < sns.length; i++) {
+		var node = document.getElementById(sns[i].id);
+		node=(node?node.nextSibling:node);
+		var block=this.form_blocks[sns[i].type];
+		var res=block.get_value.call(this,node,ev, sns[i]);
+		if (sns[i].map_to!="auto")
+			ev[sns[i].map_to]=res;
+	}
+	return ev;
+};
+scheduler._empty_lightbox=function(data){
+	var id=scheduler._lightbox_id;
+	var ev=this.getEvent(id);
+	var box=this.getLightbox();
+
+	this._lame_copy(ev, data);
+
+	this.setEvent(ev.id,ev);
+	this._edit_stop_event(ev,true);
+	this.render_view_data();
+};
+scheduler.hide_lightbox=function(id){
+	this.hideCover(this.getLightbox());
+	this._lightbox_id = null;
+	this.callEvent("onAfterLightbox",[]);
+};
+scheduler.hideCover=function(box){
+	if (box) box.style.display="none";
+	this.hide_cover();
+};
+scheduler.hide_cover=function(){
+	if (this._cover) 
+		this._cover.parentNode.removeChild(this._cover);
+	this._cover=null;
+};
+scheduler.show_cover=function(){
+	if(this._cover)
+		return;
+
+	this._cover=document.createElement("DIV");
+	this._cover.className="dhx_cal_cover";
+	var _document_height = ((document.height !== undefined) ? document.height : document.body.offsetHeight);
+	var _scroll_height = ((document.documentElement) ? document.documentElement.scrollHeight : 0);
+	this._cover.style.height = Math.max(_document_height, _scroll_height) + 'px';
+	document.body.appendChild(this._cover);
+};
+scheduler.save_lightbox=function(){
+	var data = this._lightbox_out({}, this._lame_copy(this.getEvent(this._lightbox_id)));
+	if (this.checkEvent("onEventSave") && !this.callEvent("onEventSave",[this._lightbox_id, data, this._new_event]))
+		return;
+	this._empty_lightbox(data);
+	this.hide_lightbox();
+};
+scheduler.startLightbox = function(id, box){
+	this._lightbox_id = id;
+	this._custom_lightbox = true;
+
+	this._temp_lightbox = this._lightbox;
+	this._lightbox = box;
+	this.showCover(box);
+};
+scheduler.endLightbox = function(mode, box){
+	this._edit_stop_event(scheduler.getEvent(this._lightbox_id),mode);
+	if (mode)
+		scheduler.render_view_data();
+	this.hideCover(box);
+
+	if (this._custom_lightbox){
+		this._lightbox = this._temp_lightbox;
+		this._custom_lightbox = false;
+	}
+	this._temp_lightbox = this._lightbox_id = null; // in case of custom lightbox user only calls endLightbox so we need to reset _lightbox_id
+};
+scheduler.resetLightbox = function(){
+	if (scheduler._lightbox && !scheduler._custom_lightbox)
+		scheduler._lightbox.parentNode.removeChild(scheduler._lightbox);
+	scheduler._lightbox = null;
+};
+scheduler.cancel_lightbox=function(){
+	this.callEvent("onEventCancel",[this._lightbox_id, this._new_event]);
+	this.endLightbox(false);
+	this.hide_lightbox();
+};
+scheduler._init_lightbox_events=function(){
+	this.getLightbox().onclick=function(e){
+		var src=e?e.target:event.srcElement;
+		if (!src.className) src=src.previousSibling;
+		if (src && src.className)
+			switch(src.className){
+				case "dhx_save_btn":
+					scheduler.save_lightbox();
+					break;
+				case "dhx_delete_btn":
+					var c=scheduler.locale.labels.confirm_deleting;
+
+					scheduler._dhtmlx_confirm(c, scheduler.locale.labels.title_confirm_deleting, function(){
+						scheduler.deleteEvent(scheduler._lightbox_id);
+						scheduler._new_event = null; //clear flag, if it was unsaved event
+						scheduler.hide_lightbox();
+					});
+
+					break;
+				case "dhx_cancel_btn":
+					scheduler.cancel_lightbox();
+					break;
+
+				default:
+					if (src.getAttribute("dhx_button")) {
+						scheduler.callEvent("onLightboxButton", [src.className, src, e]);
+					} else {
+						var index, block, sec;
+						if (src.className.indexOf("dhx_custom_button") != -1) {
+							if (src.className.indexOf("dhx_custom_button_") != -1) {
+								index = src.parentNode.getAttribute("index");
+								sec = src.parentNode.parentNode;
+							} else {
+								index = src.getAttribute("index");
+								sec = src.parentNode;
+								src = src.firstChild;
+							}
+						}
+						if (index) {
+							block = scheduler.form_blocks[scheduler.config.lightbox.sections[index].type];
+							block.button_click(index, src, sec, sec.nextSibling);
+						}
+					}
+					break;
+			}
+	};
+	this.getLightbox().onkeydown=function(e){
+		switch((e||event).keyCode){
+			case scheduler.keys.edit_save:
+				if ((e||event).shiftKey) return;
+				scheduler.save_lightbox();
+				break;
+			case scheduler.keys.edit_cancel:
+				scheduler.cancel_lightbox();
+				break;
+			default:
+				break;
+		}
+	};
+};
+scheduler.setLightboxSize=function(){
+	var d = this._lightbox;
+	if (!d) return;
+
+	var con = d.childNodes[1];
+	con.style.height="0px";
+	con.style.height=con.scrollHeight+"px";
+	d.style.height=con.scrollHeight+scheduler.xy.lightbox_additional_height+"px";
+	con.style.height=con.scrollHeight+"px"; //it is incredible , how ugly IE can be
+};
+
+scheduler._init_dnd_events = function(){
+	dhtmlxEvent(document.body, "mousemove", scheduler._move_while_dnd);
+	dhtmlxEvent(document.body, "mouseup", scheduler._finish_dnd);
+	scheduler._init_dnd_events = function(){};
+};
+scheduler._move_while_dnd = function(e){
+	if (scheduler._dnd_start_lb){
+		if (!document.dhx_unselectable){
+			document.body.className += " dhx_unselectable";
+			document.dhx_unselectable = true;
+		}
+		var lb = scheduler.getLightbox();
+		var now = (e&&e.target)?[e.pageX, e.pageY]:[event.clientX, event.clientY];
+		lb.style.top = scheduler._lb_start[1]+now[1]-scheduler._dnd_start_lb[1]+"px";
+		lb.style.left = scheduler._lb_start[0]+now[0]-scheduler._dnd_start_lb[0]+"px";
+	}
+};
+scheduler._ready_to_dnd = function(e){
+	var lb = scheduler.getLightbox();
+	scheduler._lb_start = [parseInt(lb.style.left,10), parseInt(lb.style.top,10)];
+	scheduler._dnd_start_lb = (e&&e.target)?[e.pageX, e.pageY]:[event.clientX, event.clientY];
+};
+scheduler._finish_dnd = function(){
+	if (scheduler._lb_start){
+		scheduler._lb_start = scheduler._dnd_start_lb = false;
+		document.body.className = document.body.className.replace(" dhx_unselectable","");
+		document.dhx_unselectable = false;
+	}
+};
+scheduler.getLightbox=function(){ //scheduler.config.wide_form=true;
+	if (!this._lightbox){
+		var d=document.createElement("DIV");
+		d.className="dhx_cal_light";
+		if (scheduler.config.wide_form)
+			d.className+=" dhx_cal_light_wide";
+		if (scheduler.form_blocks.recurring)
+			d.className+=" dhx_cal_light_rec";
+			
+		if (/msie|MSIE 6/.test(navigator.userAgent))
+			d.className+=" dhx_ie6";
+		d.style.visibility="hidden";
+		var html = this._lightbox_template;
+
+		var buttons = this.config.buttons_left;
+		for (var i = 0; i < buttons.length; i++)
+			html+="<div class='dhx_btn_set dhx_left_btn_set "+buttons[i]+"_set'><div dhx_button='1' class='"+buttons[i]+"'></div><div>"+scheduler.locale.labels[buttons[i]]+"</div></div>";
+
+		buttons = this.config.buttons_right;
+		for (var i = 0; i < buttons.length; i++)
+			html+="<div class='dhx_btn_set dhx_right_btn_set "+buttons[i]+"_set' style='float:right;'><div dhx_button='1' class='"+buttons[i]+"'></div><div>"+scheduler.locale.labels[buttons[i]]+"</div></div>";
+
+		html+="</div>";
+		d.innerHTML=html;
+		if (scheduler.config.drag_lightbox){
+			d.firstChild.onmousedown = scheduler._ready_to_dnd;
+			d.firstChild.onselectstart = function(){ return false; };
+			d.firstChild.style.cursor = "pointer";
+			scheduler._init_dnd_events();
+
+		}
+		document.body.insertBefore(d,document.body.firstChild);
+		this._lightbox=d;
+		
+		var sns=this.config.lightbox.sections;
+		html="";
+		for (var i=0; i < sns.length; i++) {
+			var block=this.form_blocks[sns[i].type];
+			if (!block) continue; //ignore incorrect blocks
+			sns[i].id="area_"+this.uid();
+			var button = "";
+			if (sns[i].button){
+			 	button = "<div class='dhx_custom_button' index='"+i+"'><div class='dhx_custom_button_"+sns[i].button+"'></div><div>"+this.locale.labels["button_"+sns[i].button]+"</div></div>";
+			 }
+			
+			if (this.config.wide_form){
+				html+="<div class='dhx_wrap_section'>";
+			}
+			
+			var label_name = this.locale.labels["section_"+sns[i].name];
+			if(typeof label_name !== "string"){
+				label_name = sns[i].name;
+			}
+			html+="<div id='"+sns[i].id+"' class='dhx_cal_lsection'>"+button+label_name+"</div>"+block.render.call(this,sns[i]);
+			html+="</div>";
+		}
+
+		var ds=d.getElementsByTagName("div");
+		for (var i=0; i<ds.length; i++) {
+			var t_ds = ds[i];
+			if (t_ds.className == "dhx_cal_larea") {
+				t_ds.innerHTML = html;
+				break;
+			}
+		}
+
+		//sizes
+		this.setLightboxSize();
+
+		this._init_lightbox_events(this);
+		d.style.display="none";
+		d.style.visibility="visible";
+	}
+	return this._lightbox;
+};
+
+scheduler.attachEvent("onEventIdChange", function(old_id, new_id){
+	if(this._lightbox_id == old_id)
+		this._lightbox_id = new_id;
+});
+
+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><div class='dhx_cal_larea'></div>";
+
+scheduler._init_touch_events = function(){
+	if (this.config.touch != "force")
+		this.config.touch = this.config.touch  &&
+			    ( (navigator.userAgent.indexOf("Mobile")!=-1)   ||
+				(navigator.userAgent.indexOf("iPad")!=-1)       ||
+				(navigator.userAgent.indexOf("Android")!=-1)    ||
+				(navigator.userAgent.indexOf("Touch")!=-1));
+
+	if (this.config.touch){
+		this.xy.scroll_width = 0;
+		if (window.navigator.msPointerEnabled){
+			this._touch_events(["MSPointerMove", "MSPointerDown", "MSPointerUp"], function(ev){
+				if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE ) return null;
+				return ev;
+			}, function(ev){
+				return (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);
+			});
+			this._obj.ondblclick = function(){};
+		} else
+			this._touch_events(["touchmove", "touchstart", "touchend"], function(ev){
+				if (ev.touches && ev.touches.length > 1) return null;
+				if (ev.touches[0])
+					return { target:ev.target, pageX:ev.touches[0].pageX, pageY:ev.touches[0].pageY };
+				else 
+					return ev;
+			}, function(){ return false; });
+	}
+};
+
+scheduler._touch_events = function(names, accessor, ignore){
+	//webkit on android need to be handled separately
+	var a_webkit = (navigator.userAgent.indexOf("Android")!=-1) && (navigator.userAgent.indexOf("WebKit")!=-1);
+	var source, tracker, timer, drag_mode, scroll_mode, action_mode;
+	var dblclicktime = 0;
+
+	function attachTouchEvent(element, name, callback){
+		//touch gestures must be disabled when ligthbox is opened
+		dhtmlxEvent(element, name, function(e){
+			if(scheduler._is_lightbox_open()){
+				return true;
+			}else{
+				return callback(e);
+			}
+		});
+	}
+
+	function check_direction_swipe(s_ev, e_ev, step, max_dy){
+		if (!s_ev || !e_ev) return;
+
+		var t = s_ev.target;
+		while(t && t != scheduler._obj){
+			t = t.parentNode;
+		}
+		if(t != scheduler._obj){
+			//swipe outside scheduler
+			return;
+		}
+
+		var dy = Math.abs(s_ev.pageY - e_ev.pageY);
+		var dx = Math.abs(s_ev.pageX - e_ev.pageX);
+		if (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){
+			if (s_ev.pageX > e_ev.pageX)
+				scheduler._click.dhx_cal_next_button();
+			else
+				scheduler._click.dhx_cal_prev_button();
+		}
+	}
+
+	function doMouseMove(e){
+		var dnd = scheduler.getState().drag_mode,
+			timeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;
+
+		var original_render = scheduler.render_view_data;
+		if(dnd == 'create' && timeline){
+			//suppress full redraw of timeline on creating event
+			scheduler.render_view_data = function() {
+				var id = scheduler.getState().drag_id;
+				var ev = scheduler.getEvent(id);
+				var property = timeline.y_property;
+
+				var evs = scheduler.getEvents(ev.start_date, ev.end_date);
+				for(var i = 0; i < evs.length; i++){
+					if(evs[i][property] != ev[property]){
+						evs.splice(i, 1);
+						i--;
+					}
+				}
+				ev._sorder = evs.length - 1;
+				ev._count = evs.length;
+
+				this.render_data([ev], scheduler.getState().mode);
+
+			};
+		}
+
+		scheduler._on_mouse_move(e);
+
+		if(dnd == 'create' && timeline){
+			scheduler.render_view_data = original_render;
+		}
+	}
+	attachTouchEvent(document.body, names[0], function(e){
+		if (ignore(e)) return;
+
+		if (drag_mode){
+			doMouseMove(accessor(e));
+			scheduler._update_global_tip();
+			if (e.preventDefault)
+				e.preventDefault();
+			e.cancelBubble = true;
+			return false;
+		}
+
+		//if (tracker && a_webkit){
+		//	check_direction_swipe(tracker, accessor(e), 0);
+		//}
+
+		tracker = accessor(e);
+		//ignore common and scrolling moves
+		if (!action_mode) return;
+
+		//multitouch		
+		if (!tracker){
+			scroll_mode = true;
+			return;
+		}
+
+		//target changed - probably in scroll mode
+
+		if (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){
+			scroll_mode = true;
+			clearTimeout(timer);
+		}
+
+	});
+
+	attachTouchEvent(this._els["dhx_cal_data"][0], "scroll", drag_cancel);
+	attachTouchEvent(this._els["dhx_cal_data"][0], "touchcancel", drag_cancel);
+	attachTouchEvent(this._els["dhx_cal_data"][0], "contextmenu", function(e){
+		if (action_mode){
+			if (e && e.preventDefault)
+				e.preventDefault();
+			(e||event).cancelBubble = true;
+			return false;
+		}
+	});
+	attachTouchEvent(this._els["dhx_cal_data"][0], names[1], function(e){
+		if (ignore(e)) return;
+		
+		var fake_event;
+		drag_mode = scroll_mode = false;
+		action_mode = true;
+		scheduler._temp_touch_block = true;
+		fake_event = tracker = accessor(e);
+
+		if (!fake_event){
+			scroll_mode = true;
+			return;
+		}
+
+		//dbl click
+		var now = new Date();
+
+		if (!scroll_mode && !drag_mode && now - dblclicktime < 250){
+			scheduler._click.dhx_cal_data(fake_event);
+			window.setTimeout(function(){
+				scheduler._on_dbl_click(fake_event);
+			}, 50);
+			
+			if (e.preventDefault)
+				e.preventDefault();
+			e.cancelBubble = true;
+			scheduler._block_next_stop = true;
+			return false;
+		}
+		dblclicktime = now;
+
+		//drag
+		
+		if (scroll_mode || drag_mode || !scheduler.config.touch_drag)
+			return;
+
+		var actTask = scheduler._locate_event(document.activeElement);
+		var fakeTask = scheduler._locate_event(fake_event.target);
+		var sourceTask = source? scheduler._locate_event(source.target) : null;
+
+		if(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)
+		{
+			if(e.preventDefault) {
+				e.preventDefault();
+			}
+			e.cancelBubble = true;
+			scheduler._ignore_next_click = false;
+			scheduler._click.dhx_cal_data(fake_event);
+			source = fake_event;
+			return false;
+		}
+		
+		//there is no target
+		timer = setTimeout(function(){
+
+			drag_mode = true;
+			var target = source.target;
+			if (target && target.className && target.className.indexOf("dhx_body") != -1)
+				target = target.previousSibling;
+
+			scheduler._on_mouse_down(source, target);
+			if (scheduler._drag_mode && scheduler._drag_mode != "create"){
+				//var pos = -1;
+				scheduler.for_rendered(scheduler._drag_id, function(node, i) {
+				//	pos = node.getBoundingClientRect().top;
+					node.style.display='none';
+					scheduler._rendered.splice(i, 1);
+				});
+				/*if (pos>=0){
+					var step = scheduler.config.time_step;
+					scheduler._move_pos_shift = step* Math.round((fake_event.pageY - pos)*60/(scheduler.config.hour_size_px*step));
+				}*/
+			}
+
+			if (scheduler.config.touch_tip)
+				scheduler._show_global_tip();
+			scheduler._on_mouse_move(source);
+		},scheduler.config.touch_drag);
+
+		source = fake_event;
+	});
+	function drag_cancel(e){
+		scheduler._hide_global_tip();
+		if (drag_mode){
+			scheduler._on_mouse_up( accessor(e||event) );
+			scheduler._temp_touch_block = false;
+		}
+		scheduler._drag_id = null;
+		scheduler._drag_mode=null;
+		scheduler._drag_pos=null;
+		
+		clearTimeout(timer);
+		drag_mode = action_mode = false;
+		scroll_mode = true;
+	}
+	attachTouchEvent(this._els["dhx_cal_data"][0], names[2], function(e){
+		if (ignore(e)) return;
+
+		if (!drag_mode)
+			check_direction_swipe(source, tracker, 200, 100);
+		
+		if (drag_mode)
+			scheduler._ignore_next_click = true;
+
+		drag_cancel(e);
+		if (scheduler._block_next_stop){
+			scheduler._block_next_stop = false;
+			if (e.preventDefault)
+				e.preventDefault();
+			e.cancelBubble = true;
+			return false;	
+		}
+	});	
+
+	dhtmlxEvent(document.body, names[2], drag_cancel);
+};
+
+scheduler._show_global_tip = function(){
+	scheduler._hide_global_tip();
+
+	var toptip = scheduler._global_tip = document.createElement("DIV");
+	toptip.className='dhx_global_tip';
+
+	scheduler._update_global_tip(1);
+
+	document.body.appendChild(toptip);
+};
+scheduler._update_global_tip = function(init){
+	var toptip = scheduler._global_tip;
+	if (toptip){
+		var time = "";
+		if (scheduler._drag_id && !init){
+			var ev = scheduler.getEvent(scheduler._drag_id);
+			if (ev)
+				time = "<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>";
+		}
+
+		if (scheduler._drag_mode == "create" || scheduler._drag_mode == "new-size")
+			toptip.innerHTML = (scheduler.locale.drag_to_create || "Drag to create")+time;
+		else
+			toptip.innerHTML = (scheduler.locale.drag_to_move || "Drag to move")+time;
+	}
+};
+scheduler._hide_global_tip = function(){
+	var toptip = scheduler._global_tip;
+	if (toptip && toptip.parentNode){
+		toptip.parentNode.removeChild(toptip);
+		scheduler._global_tip = 0;
+	}
+};
+
+scheduler._dp_init=function(dp){
+	dp._methods=["_set_event_text_style","","changeEventId","_dp_hook_delete"];
+	
+	this._dp_hook_delete = function(id){
+		return this.deleteEvent(id, true);
+	};
+	this.attachEvent("onEventAdded",function(id){
+		if (!this._loading && this._validId(id))
+			dp.setUpdated(id,true,"inserted");
+	});
+	this.attachEvent("onConfirmedBeforeEventDelete", function(id){
+		if (!this._validId(id)) return;
+		var z=dp.getState(id);
+        
+		if (z=="inserted" || this._new_event) {  dp.setUpdated(id,false);		return true; }
+		if (z=="deleted")  return false;
+    	if (z=="true_deleted")  return true;
+    	
+		dp.setUpdated(id,true,"deleted");
+      	return false;
+	});
+	this.attachEvent("onEventChanged",function(id){
+		if (!this._loading && this._validId(id))
+			dp.setUpdated(id,true,"updated");
+	});
+	
+	dp._getRowData=function(id,pref){
+		var ev=this.obj.getEvent(id);
+		var data = {};
+		
+		for (var a in ev){
+			if (a.indexOf("_") === 0) continue;
+			if (ev[a] && ev[a].getUTCFullYear) //not very good, but will work
+				data[a] = this.obj.templates.xml_format(ev[a]);
+			else
+				data[a] = ev[a];
+		}
+		
+		return data;
+	};
+	dp._clearUpdateFlag=function(){};
+	
+	dp.attachEvent("insertCallback", scheduler._update_callback);
+	dp.attachEvent("updateCallback", scheduler._update_callback);
+	dp.attachEvent("deleteCallback", function(upd, id) {
+		this.obj.setUserData(id, this.action_param, "true_deleted");
+		this.obj.deleteEvent(id);
+	});
+		
+};
+
+scheduler._validId=function(id){
+	return true;
+};
+
+scheduler.setUserData=function(id,name,value){
+	if (id)
+		this.getEvent(id)[name]=value;
+	else
+		this._userdata[name]=value;
+};
+scheduler.getUserData=function(id,name){
+	return id?this.getEvent(id)[name]:this._userdata[name];
+};
+scheduler._set_event_text_style=function(id,style){
+	this.for_rendered(id,function(r){
+		r.style.cssText+=";"+style;
+	});
+	var ev = this.getEvent(id);
+	ev["_text_style"]=style;
+	this.event_updated(ev);
+};
+
+scheduler._update_callback = function(upd,id){
+	var data		=	scheduler._xmlNodeToJSON(upd.firstChild);
+	data.text		=	data.text||data._tagvalue;
+	data.start_date	=	scheduler.templates.xml_date(data.start_date);
+	data.end_date	=	scheduler.templates.xml_date(data.end_date);
+	
+	scheduler.addEvent(data);
+};
+scheduler._skin_settings = {
+	fix_tab_position: [1,0],
+	use_select_menu_space: [1,0],
+	wide_form: [1,0],
+
+	hour_size_px: [44,42],
+	displayed_event_color: ["#ff4a4a", "ffc5ab"],
+	displayed_event_text_color: ["#ffef80", "7e2727"]
+};
+
+scheduler._skin_xy = {
+	lightbox_additional_height: [90,50],
+	nav_height: [59,22],
+	bar_height: [24,20]
+};
+
+scheduler._configure = function(col, data, skin){
+	for (var key in data)
+		if (typeof col[key] == "undefined")
+			col[key] = data[key][skin];
+};
+scheduler._skin_init = function(){
+	if (!scheduler.skin){
+		var links = document.getElementsByTagName("link");
+		for (var i = 0; i < links.length; i++) {
+			var res = links[i].href.match("dhtmlxscheduler_([a-z]+).css");
+			if (res){
+				scheduler.skin = res[1];
+				break;
+			}
+		}
+	}
+
+	
+	
+	var set = 0;
+	if (scheduler.skin && (scheduler.skin === "classic" || scheduler.skin === "glossy")) set = 1;
+
+	//apply skin related settings
+	this._configure(scheduler.config, scheduler._skin_settings, set);
+	this._configure(scheduler.xy, scheduler._skin_xy, set);
+
+	if (scheduler.skin === "flat"){
+		scheduler.xy.scale_height = 35;
+		scheduler.templates.hour_scale = function(date){
+			var min = date.getMinutes();
+			min = min < 10 ? "0"+min : min;
+			var html = "<span class='dhx_scale_h'>"+ date.getHours() +"</span>"+
+				"<span class='dhx_scale_m'>&nbsp;"+ min +"</span>";
+			return html;
+		};
+	}
+
+	//classic skin need not any further customization
+	if (set) return;
+	
+	
+	var minic = scheduler.config.minicalendar;
+	if (minic) minic.padding = 14;
+
+	scheduler.templates.event_bar_date = function(start,end,ev) {
+		return "• <b>"+scheduler.templates.event_date(start)+"</b> ";
+	};
+
+	//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>";
+	scheduler.attachEvent("onTemplatesReady", function() {
+
+		var date_to_str = scheduler.date.date_to_str("%d");
+		if(!scheduler.templates._old_month_day){
+			scheduler.templates._old_month_day = scheduler.templates.month_day;
+		}
+		var old_month_day = scheduler.templates._old_month_day;
+		scheduler.templates.month_day = function(date) {
+			if (this._mode == "month") {
+				var label = date_to_str(date);
+				if (date.getDate() == 1) {
+					label = scheduler.locale.date.month_full[date.getMonth()] + " " + label;
+				}
+				if (+date == +scheduler.date.date_part(new Date())) {
+					label = scheduler.locale.labels.dhx_cal_today_button + " " + label;
+				}
+				return label;
+			} else {
+				return old_month_day.call(this, date);
+			}
+		};
+
+
+		if (scheduler.config.fix_tab_position){
+			var navline_divs = scheduler._els["dhx_cal_navline"][0].getElementsByTagName('div');
+			var minical = null;
+			var tabs = [];
+			var last = 211;
+			for (var i=0; i<navline_divs.length; i++) {
+				var div = navline_divs[i];
+				var name = div.getAttribute("name");
+				if (name) { // mode tab
+					div.style.right = "auto";
+					switch (name) {
+						case "day_tab":
+							div.style.left = "14px";
+							div.className += " dhx_cal_tab_first";
+							break;
+						case "week_tab":
+							div.style.left = "75px";
+							break;
+						case "month_tab":
+							div.style.left = "136px";
+							div.className += " dhx_cal_tab_last";
+							break;
+						default:
+							div.style.left = last+"px";
+							div.className += " dhx_cal_tab_standalone";
+							last = last + 14 + div.offsetWidth;
+							break;
+					}
+				}else{
+					if((div.className || "").indexOf("dhx_minical_icon") === 0 &&
+						div.parentNode == scheduler._els["dhx_cal_navline"][0]){
+						// if default minicalendar icon
+						minical = div;
+					}
+				}
+
+			}
+
+			if(minical){
+				minical.style.left = last+"px";
+			}
+		}
+
+	});
+	scheduler._skin_init = function(){};
+};
+
+
+if (window.jQuery){
+
+(function( $ ){
+
+	var methods = [];
+	$.fn.dhx_scheduler = function(config){
+		if (typeof(config) === 'string') {
+			if (methods[config] ) {
+				return methods[config].apply(this, []);
+			}else {
+				$.error('Method ' +  config + ' does not exist on jQuery.dhx_scheduler');
+			}
+		} else {
+			var views = [];
+			this.each(function() {
+				if (this && this.getAttribute){
+					if (!this.getAttribute("dhxscheduler")){
+						for (var key in config)
+							if (key!="data")
+								scheduler.config[key] = config[key];
+
+						if (!this.getElementsByTagName("div").length){
+							this.innerHTML = '<div class="dhx_cal_navline"><div class="dhx_cal_prev_button">&nbsp;</div><div class="dhx_cal_next_button">&nbsp;</div><div class="dhx_cal_today_button"></div><div class="dhx_cal_date"></div><div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div><div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div><div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div></div><div class="dhx_cal_header"></div><div class="dhx_cal_data"></div>';
+							this.className += " dhx_cal_container";
+						}
+						scheduler.init(this, scheduler.config.date, scheduler.config.mode);
+						if (config.data)
+							scheduler.parse(config.data);
+
+						views.push(scheduler);
+					}
+				}
+			});
+
+			if (views.length === 1) return views[0];
+			return views;
+		}
+	};
+	
+
+	
+
+})(jQuery);
+
+}
+(function(){
+
+	var setCurrentView = scheduler.setCurrentView,
+		updateView = scheduler.updateView;
+	var update_view_timer = null,
+		curr_view_timer = null;
+
+	var lazy_setCurrentView = function(date, mode){
+		var self = this;
+		window.clearTimeout(curr_view_timer);
+		window.clearTimeout(update_view_timer);
+
+		updateFlags(this, date, mode);
+
+		curr_view_timer = setTimeout(function(){
+
+			if (!self.callEvent("onBeforeViewChange", [self._mode, self._date, mode || self._mode, date || self._date])) return;
+			updateView.call(self, date, mode);
+			self.callEvent("onViewChange", [self._mode, self._date]);
+
+			window.clearTimeout(update_view_timer);
+			curr_view_timer = 0;
+		}, scheduler.config.delay_render);
+	};
+	var lazy_updateView = function(date, mode){
+		var self = this,
+			ars = arguments;
+
+		updateFlags(this, date, mode);
+
+		window.clearTimeout(update_view_timer);
+		update_view_timer = setTimeout(function(){
+			if(curr_view_timer)
+				return;
+
+			updateView.apply(self, ars);
+		}, scheduler.config.delay_render);
+	};
+	function updateFlags(scheduler, date, mode){
+		if(date)
+			scheduler._date = date;
+		if(mode)
+			scheduler._mode = mode;
+
+	}
+	scheduler.attachEvent("onSchedulerReady", function(){
+		if(scheduler.config.delay_render){
+			scheduler.setCurrentView = lazy_setCurrentView;
+			scheduler.updateView = lazy_updateView;
+		}else{
+			scheduler.setCurrentView = setCurrentView;
+			scheduler.updateView = updateView;
+		}
+	});
+
+})();
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.txt
new file mode 100644
index 0000000000..eeefa6dd2e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler.js","sources":["dhtmlxscheduler.js"],"names":["dtmlXMLLoaderObject","funcObject","dhtmlObject","async","rSeed","this","xmlDoc","onloadAction","mainObject","waitCall","callerFunction","handler","e","window","event","getAbsoluteLeft","htmlObject","getOffset","left","getAbsoluteTop","top","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","body","document","docElem","documentElement","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","Math","round","convertStringToBoolean","inputString","toLowerCase","getUrlSymbol","str","indexOf","dhtmlDragAndDropObject","dhtmlDragAndDrop","lastLanding","dragNode","dragStartNode","dragStartObject","tempDOMU","tempDOMM","waitDrag","_dhtmlxError","type","name","params","catches","dhtmlXHeir","a","b","c","dataProcessor","serverProcessorURL","serverProcessor","action_param","object","updatedRows","autoUpdate","updateMode","_tMode","post_delim","_waitMode","_in_progress","_invalid","mandatoryFields","messages","styles","updated","inserted","deleted","invalid","invalid_cell","error","clear","enableUTFencoding","dhtmlxEventable","dhtmlXScheduler","scheduler","version","dhtmlx","obj","extend_api","map","ext","t","that","tagName","apply","_init","arguments","attachEvent","_patch","prototype","dhtmlxAjax","get","url","callback","length","loadXML","post","getSync","postSync","count","waitLoadFunction","once","check","readyState","call","getXMLTopNode","oldObj","z","responseXML","temp","getElementsByTagName","split","_retry","_isIE","loadXMLString","responseText","replace","dhtmlxError","throwError","createElement","xmlString","silent","ActiveXObject","onreadystatechange","parser","DOMParser","parseFromString","filePath","postMode","postVars","rpc","Date","valueOf","XMLHttpRequest","open","setRequestHeader","navigator","userAgent","send","destructor","_filterXPath","_getAllNamedChilds","doXPath","doXPathOpera","doXSLTransToObject","doXSLTransToString","doSerialization","xmlNodeToJSON","setXSLParamValue","node","i","attributes","value","firstChild","nodeValue","childNodes","push","removeDraggableItem","htmlNode","onmousedown","dragStarter","dragLanding","addDraggableItem","preCreateDragCopy","addDragLanding","button","onmouseup","onmousemove","stopDrag","callDrag","downtime","preventDefault","dragger","_createDragNode","onselectstart","gldragNode","appendChild","pWindow","initFrameRoute","parentNode","grd","old","removeChild","oldBody","_dragOut","div","innerHTML","outerHTML","cloneNode","style","clientX","fx","clientY","fy","srcElement","target","checkLanding","calculateFramePosition","n","el","parent","frames","frameElement","ls","_dragIn","lastLanding_scr","_onNotFound","mode","stopFrameRoute","_drag","win","_isFF","_FFrv","_isOpera","_isKHTML","_isMacOS","_isChrome","_KHTMLrv","_OperaRv","parseFloat","substr","appName","appVersion","compatMode","xpathExp","docObj","namespace","result_type","XPathResult","nodeName","setProperty","selectSingleNode","selectNodes","Array","nodeObj","ownerDocument","retType","ANY_TYPE","FIRST_ORDERED_NODE_TYPE","rowsCol","col","evaluate","pref","singleNodeValue","thisColMemb","iterateNext","catchError","func_name","alert","getAttribute","toUpperCase","j","dhtmlxEvent","addEventListener","xslDoc","paramName","paramValue","item","result","transformNodeToObject","transformNode","XSLProcessor","XSLTProcessor","importStylesheet","transformToDocument","res","xml","xmlSerializer","XMLSerializer","serializeToString","catcher","callObj","eventCatcher","addEvent","callEvent","arg0","checkEvent","dhx_catch","zr","ev","eval","removeEvent","id","detachEvent","list","detachAllEvents","config","usercall","modality","_dhx_msg_cfg","modal_key","code","which","keyCode","message","keyboard","cancelBubble","cover","onkeydown","className","scrollHeight","display","text","css","button_css","info","area","position","hide","onclick","insertBefore","expire","timers","setTimeout","pull","_boxStructure","ok","cancel","setAttribute","inner","width","height","title","content","ok_text","locale","labels","message_ok","undefined","cancel_text","message_cancel","buttons","getElementById","source","_createBox","hidden","x","abs","floor","innerWidth","offsetWidth","y","innerHeight","offsetHeight","focus","modalbox","alertPopup","confirmPopup","boxPopup","box_params","uid","confirm","subtype","seed","hideAll","key","clearTimeout","setTransactionMode","total","_tSend","_endnm","escape","data","_utf","encodeURIComponent","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","setUpdateMode","dnd","ignore","master","_silent_mode","setUpdated","rowId","state","ind","findRow","existing","getUserData","set_invalid","setUserData","is_invalid","splice","_clearUpdateFlag","markRow","sendData","_methods","details","getState","toString","checkBeforeUpdate","mytype","_h2","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","serialize","serialize_one","stack","keys","hasOwnProperty","join","security_key","a1","a2","d","ids","afterUpdate","a3","_user","valid","_getAllData","out","has_one","setVerificator","verifFunction","clearVerificator","pattern","defineAction","_uActions","afterUpdateCallback","sid","tid","action","btag","marker","correct","soid","JSON","tag","parse","finalizeUpdate","cleanUpdate","atag","init","anObj","_dp_init","setOnAfterUpdate","enableDebug","setOnBeforeUpdateHandler","func","setAutoUpdate","interval","user","_need_update","_loader","_update_busy","xml_node","afterAutoUpdate","fullSync","self","setInterval","loadUpdate","getUpdates","_v","_a","arr","vers","upds","status","init_original","_dataprocessor","ajax_error","console","log","_detachDomEvent","removeEventListener","_init_once","getWindowSize","w","clientWidth","h","clientHeight","equals","oldSize","newSize","_resize_timer","update_view","date","_currentDate","_obj","unset_actions","_skin_init","_els","_scroll","_quirks","_quirks7","get_elements","init_templates","set_actions","_init_touch_events","set_sizes","setCurrentView","xy","min_event_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","edit_save","edit_cancel","_x","_y","scale_x","_table_view","scale_s","set_xy","nav_height","actual_height","data_y","max","els","class_name","attr_value","label","_click","ondblclick","oncontextmenu","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","src","returnValue","_locate_event","select","_select_id","_close_not_saved","unselect","updateEvent","getEvent","_mode","_date","min_date","_min_date","max_date","_max_date","editor_id","_edit_id","lightbox_id","_lightbox_id","new_event","_new_event","select_id","expanded","drag_id","_drag_id","drag_mode","_drag_mode","dhx_cal_data","trg","readonly","getActionData","mask","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","add","dhx_cal_today_button","dhx_cal_tab","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title_confirm_deleting","deleteEvent","edit","save","showLightbox","opts","addEventNow","start","end","base","constructor","match","event_duration","time_step","start_date","start_hour","first_hour","getHours","setHours","end_date","setTime","_loading","_drag_event","dblclick_create","details_on_dblclick","_timed","_get_column_index","x_pos","column","_cols","_ignores","_week_indexes_from_pos","pos","min","ceil","hour_size_px","_mouse_coords","pageX","pageY","_dy_shift","_colsS","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","delay","d_pos","force_redraw","has_moved","_get_date_from_pos","_drag_start","getMinutes","fields","_move_pos_shift","custom","time_part","matrix","_get_fictional_event_length","resize_date","_drag_from_start","day","date_part","resize_from_start","cursor","shift","new_end","new_start","limit_drag_out","duration","all_timed","_get_section_view","_get_event_sday","last_hour","getDate","_allow_dnd","update_render","sx","for_rendered","r","classname","_lame_clone","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","touch","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_lame_copy","render_view_data","_trigger_dyn_loading","_load_mode","_load","_render_wait","view","_reset_scale","isViewExists","templates","updateView","prev_scroll","preserve_scroll","dhx_multi_day","tabs","_render_x_header","offset_top","head","left_border","_get_columns_num","from","to","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","header","data_area","sd","today","scales","cls","week_date_class","day_start","drag_resize","drag_move","_scales","week_start","_reset_month_scale","_reset_hours_scale","multi_day","navline","c1","visibility","col_length","c2","cc","hour_scale","scroll_hour","now_date","preserve","ign_date","_render_month_scale","getCellHeight","row","view_start","cd","rows","tdcss","cell_width","cellheight","html","rendered_dates","row_height","month_date_class","body_class","head_class","month_day","bf1","getFullYear","getMonth","divs","getLabel","property","sections","lightbox","map_to","options","updateCollection","list_name","collection","serverList","resetLightbox","cache","Number","String","Boolean","Object","n_ev","section","_focus","fd","end_slot","ev_length","hours","_start_correction","_end_correction","start_slot","render","_get_date_index","dir","per_day","days","_props","_get_section_property","y_property","_is_initialized","_is_lightbox_open","s","month_short","month_short_hash","month_full","month_full_hash","setMinutes","setSeconds","setMilliseconds","getTime","getDay","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","setYear","to_fixed","num","copy","date_to_str","format","utc","Function","str_to_date","splt","getISOWeek","nday","first_thursday","year_number","ordinal_date","week_number","getUTCISOWeek","convert_to_utc","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","day_full","day_short","day_tab","week_tab","month_tab","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","default_date","month_date","load_date","week_date","day_date","hour_date","xml_date","api_date","drag_create","resize_month_events","resize_month_timed","cascade_event_display","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch_tip","touch_drag","quick_info_detached","drag_highlight","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","f","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","xml_format","event_header","event_text","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","_seed","_events","clearAll","_loaded","clear_view","extra_data","isOneDayEvent","event_updated","setEvent","hash","method","_rendered","changeEventId","new_id","attrs","create_getter","create_setter","force","is_visible_events","clear_event","in_visible_range","end_dates_visible","hidden_duration","delta","get_visible_events","only_timed","filter_event","filter","_is_main_area_event","evs","hold","_not_render","len","_recalculate_timed","tvs","tvd","_rendered_location","render_data","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","_sorder","render_event","_get_first_visible_cell","cells","hb","bar_height","h_old","_pre_render_events_table","_pre_render_events_line","evl","cellHeight","cHeight","unshift","scroll_fix","scale_settings","sum_width","row_heights","slice","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","_get_event_mapped_end_date","separate_short_events","ev_duration","_min_mapped_duration","sort","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","k","_max_sorder","max_count","_count","_copy_event","_time_order","weeks","cols","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_holder_day","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","menu","menu_offset","locate_holder","pos_y","ev_count","ev_sorder","limit","margin","right","_render_v_bar","_text_style","zIndex","tplClass","cssText","_editor","shiftKey","icons","icons_str","bg_color","color","textColor","highlightEventPosition","contentA","contentB","bottom","cs","cse","container","renderEvent","inner_html","footer_class","past","_get_dnd_order","order","ev_height","max_height","_orig_sorder","evTop","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","displayed_event_color","displayed_event_text_color","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","size","_load_url","prevent_cache","lf","cache_line","temp_to","l","on_load","loader","_process","_magic_parser","_process_loading","_after_call","_init_event","_tagvalue","_init_date","json","_temp","dhx_security","collections","collections_loaded","option","option_key","load","setLoadMode","array","_userdata","xml_string","skey","bind","itms","itm","attr","ud","udx","_xmlNodeToJSON","child","nodeType","show_loading","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","parse_date","dh","dm","dn","UTC","_lightbox_controls","formSection","_lightbox","getLightbox","nextSibling","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","template","sns","textarea","_dhx_onchange","onchange","time","time_format","_time_format_order","cfg","dt","last","first","limit_time_select","p","time_option","year","tdate","_time_values","_fill_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","_full_day","wide_form","input","checked","disabled","auto_end_date","_update_lightbox_select","original","showCover","scroll_top","scroll_left","view_height","scrollWidth","show_cover","_fill_lightbox","lightbox_header","current_sns","block","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","hideCover","hide_cover","_cover","_document_height","_scroll_height","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","endLightbox","cancel_lightbox","_init_lightbox_events","index","sec","button_click","setLightboxSize","con","lightbox_additional_height","_init_dnd_events","_move_while_dnd","_finish_dnd","_dnd_start_lb","dhx_unselectable","lb","now","_lb_start","_ready_to_dnd","recurring","test","_lightbox_template","label_name","ds","t_ds","old_id","msPointerEnabled","_touch_events","pointerType","MSPOINTER_TYPE_MOUSE","touches","names","accessor","attachTouchEvent","element","check_direction_swipe","s_ev","e_ev","max_dy","dx","doMouseMove","timeline","original_render","drag_cancel","_hide_global_tip","timer","action_mode","scroll_mode","tracker","dblclicktime","_update_global_tip","fake_event","_block_next_stop","actTask","activeElement","fakeTask","sourceTask","_show_global_tip","toptip","_global_tip","dp","_dp_hook_delete","_validId","_update_callback","upd","_set_event_text_style","_skin_settings","fix_tab_position","use_select_menu_space","_skin_xy","_configure","skin","links","href","set","minic","minicalendar","padding","_old_month_day","old_month_day","navline_divs","minical","jQuery","$","methods","fn","dhx_scheduler","views","each","updateFlags","update_view_timer","curr_view_timer","lazy_setCurrentView","lazy_updateView","ars"],"mappings":";;;;;;;;AA4EA,QAASA,qBAAoBC,EAAYC,EAAaC,EAAOC,GAYzD,MAXAC,MAAKC,OAAO,GAEU,mBAAX,GACPD,KAAKF,MAAMA,EAEXE,KAAKF,OAAM,EAEfE,KAAKE,aAAaN,GAAY,KAC9BI,KAAKG,WAAWN,GAAa,KAC7BG,KAAKI,SAAS,KACdJ,KAAKD,MAAMA,IAAO,EACXC,KAiMX,QAASK,gBAAeT,EAAYC,GAOhC,MANAG,MAAKM,QAAQ,SAASC,GAIlB,MAHKA,KACDA,EAAEC,OAAOC,OACbb,EAAWW,EAAGV,IACP,GAEJG,KAAKM,QAShB,QAASI,iBAAgBC,GACrB,MAAOC,WAAUD,GAAYE,KAQjC,QAASC,gBAAeH,GACpB,MAAOC,WAAUD,GAAYI,IAGjC,QAASC,cAAaC,GAElB,IADA,GAAIF,GAAI,EAAGF,EAAK,EACVI,GACFF,GAAYG,SAASD,EAAKE,WAC1BN,GAAcK,SAASD,EAAKG;AAC5BH,EAAOA,EAAKI,YAEhB,QAAQN,IAAKA,EAAKF,KAAMA,GAE5B,QAASS,eAAcL,GACnB,GAAIM,GAAMN,EAAKO,wBACXC,EAAOC,SAASD,KAChBE,EAAUD,SAASE,gBACnBC,EAAYrB,OAAOsB,aAAeH,EAAQE,WAAaJ,EAAKI,UAC5DE,EAAavB,OAAOwB,aAAeL,EAAQI,YAAcN,EAAKM,WAC9DE,EAAYN,EAAQM,WAAaR,EAAKQ,WAAa,EACnDC,EAAaP,EAAQO,YAAcT,EAAKS,YAAc,EACtDnB,EAAOQ,EAAIR,IAAOc,EAAYI,EAC9BpB,EAAOU,EAAIV,KAAOkB,EAAaG,CACnC,QAASnB,IAAKoB,KAAKC,MAAMrB,GAAMF,KAAMsB,KAAKC,MAAMvB,IAEpD,QAASD,WAAUK,GACf,MAAIA,GAAKO,sBACEF,cAAcL,GAEdD,aAAaC,GAU5B,QAASoB,wBAAuBC,GAI5B,OAH4B,gBAAjB,KACPA,EAAYA,EAAYC;AAEpBD,GACJ,IAAK,IACL,IAAK,OACL,IAAK,MACL,IAAK,IACL,IAAK,GACL,KAAK,EACD,OAAO,CACX,SACI,OAAO,GAUnB,QAASE,cAAaC,GAClB,MAAwB,IAApBA,EAAIC,QAAQ,KACL,IAEA,IAGf,QAASC,0BACL,MAAInC,QAAOoC,iBACApC,OAAOoC,kBAElB5C,KAAK6C,YAAY,EACjB7C,KAAK8C,SAAS,EACd9C,KAAK+C,cAAc,EACnB/C,KAAKgD,gBAAgB,EACrBhD,KAAKiD,SAAS,KACdjD,KAAKkD,SAAS,KACdlD,KAAKmD,SAAS,EACd3C,OAAOoC,iBAAiB5C,KAEjBA,MA0WX,QAASoD,cAAaC,EAAMC,EAAMC,GAI9B,MAHKvD,MAAKwD,UACNxD,KAAKwD,YAEFxD,KA4EX,QAASyD,YAAWC,EAAGC,GACnB,IAAK,GAAIC,KAAKD,GACW,kBAATA,GAAEC,KACVF,EAAEE,GAAGD,EAAEC;;AACf,MAAOF,GAqZX,QAASG,eAAcC,GA+BnB,MA9BA9D,MAAK+D,gBAAkBD,EACvB9D,KAAKgE,aAAa,uBAErBhE,KAAKiE,OAAS,KACdjE,KAAKkE,eAELlE,KAAKmE,YAAa,EAClBnE,KAAKoE,WAAa,OAClBpE,KAAKqE,OAAO,MACZrE,KAAKsE,WAAa,IAEftE,KAAKuE,UAAU,EACfvE,KAAKwE,gBACLxE,KAAKyE,YACLzE,KAAK0E,mBACL1E,KAAK2E,YAEL3E,KAAK4E,QACJC,QAAQ,oBACRC,SAAS,oBACTC,QAAQ,kCACRC,QAAQ,2BACRC,aAAa;AACbC,MAAM,aACNC,MAAM,4CAGPnF,KAAKoF,mBAAkB,GACvBC,gBAAgBrF,MAETA,KA9uCXQ,OAAO8E,gBAAkB9E,OAAO+E,WAAcC,QAAS,SAElDhF,OAAOiF,SACXA,OAAS,SAASC,GACjB,IAAK,GAAIhC,KAAKgC,GAAKD,OAAO/B,GAAGgC,EAAIhC,EACjC,OAAO+B,UAGTA,OAAOE,WAAW,SAASrC,EAAKsC,EAAIC,GAChC,GAAIC,GAAItF,OAAO8C,EACVwC,KACLtF,OAAO8C,GAAM,SAASoC,GAClB,GAAIK,EAEJ,IAAIL,GAAqB,gBAAPA,KAAoBA,EAAIM,QAAQ,CAC9CD,EAAOD,EAAEG,MAAMjG,KAAM4F,EAAIM,MAAMN,EAAIM,MAAMR,GAAKS,UAE9C,KAAK,GAAIzC,KAAK+B,QACNG,EAAIlC,IAAI1D,KAAK4F,EAAIlC,IAAI+B,OAAO/B,GAEpC,KAAK,GAAIA,KAAKgC,GACNE,EAAIlC,GAAI1D,KAAK4F,EAAIlC,IAAIgC,EAAIhC,IACF,IAAlBA,EAAEhB,QAAQ,OACf1C,KAAKoG,YAAY1C,EAAEgC,EAAIhC;;KAI/BqC,GAAOD,EAAEG,MAAMjG,KAAKmG,UAExB,OADIP,GAAIS,QAAQT,EAAIS,OAAOrG,MACpB+F,GAAM/F,MAEjBQ,OAAO8C,GAAMgD,UAAUR,EAAEQ,UACrBT,GACApC,WAAWjD,OAAO8C,GAAMgD,UAAUT,KAG1CU,YACIC,IAAI,SAASC,EAAIC,GACb,GAAIZ,GAAE,GAAInG,sBAAoB,EAI9B,OAHAmG,GAAEhG,MAAOqG,UAAUQ,OAAO,EAC1Bb,EAAE1F,SAASsG,EACXZ,EAAEc,QAAQH,GACHX,GAEXe,KAAK,SAASJ,EAAII,EAAKH,GACnB,GAAIZ,GAAE,GAAInG,sBAAoB,EAI9B,OAHAmG,GAAEhG,MAAOqG,UAAUQ,OAAO,EAC1Bb,EAAE1F,SAASsG,EACXZ,EAAEc,QAAQH,GAAI,EAAKI,GACZf,GAEXgB,QAAQ,SAASL,GACb,MAAOzG,MAAKwG,IAAIC,EAAI,MAAK,IAE7BM,SAAS,SAASN,EAAII,GAClB,MAAO7G,MAAK6G,KAAKJ,EAAII,EAAK,MAAK,KA4BvClH,oBAAoBqH,MAAQ;AAQ5BrH,oBAAoB2G,UAAUW,iBAAiB,SAASpH,GACpD,GAAIqH,IAAO,CAmBX,OAlBAlH,MAAKmH,MAAM,WACP,GAAI,GAAgBtH,EAAwB,gBAClCA,EAAYI,OAAOmH,YAA+C,GAAjCvH,EAAYI,OAAOmH,YAAiB,CACvE,IAAKF,EACD,MAEJA,IAAK,EACLvH,oBAAoBqH,QACmB,kBAA5BnH,GAAYK,cACnBL,EAAYK,aAAaL,EAAYM,WAAY,KAAM,KAAM,KAAMN,GAEnEA,EAAYO,WACZP,EAAYO,SAASiH,KAAKrH,KAAKH,GAC/BA,EAAYO,SAAS,QAK9BJ,KAAKmH,OAUhBxH,oBAAoB2G,UAAUgB,cAAc,SAAStB,EAASuB,GAC1D,GAAIC,EAEJ,IAAIxH,KAAKC,OAAOwH,YAAY,CACxB,GAAIC,GAAO1H,KAAKC,OAAOwH,YAAYE,qBAAqB3B;;AACxD,GAAmB,IAAhB0B,EAAKf,QAAsC,IAAtBX,EAAQtD,QAAQ,KACpC,GAAIgF,GAAO1H,KAAKC,OAAOwH,YAAYE,qBAAsB3B,EAAQ4B,MAAM,KAAM,GACjFJ,GAAIE,EAAK,OAETF,GAAIxH,KAAKC,OAAO2B,eAEpB,IAAI4F,EAEA,MADAxH,MAAK6H,QAAO,EACLL,CAGX,KAAKxH,KAAK6H,QAAQC,MAAM,CACpB9H,KAAK6H,QAAO,CACZ,IAAIN,GAASvH,KAAKC,MAElB,OADAD,MAAK+H,cAAc/H,KAAKC,OAAO+H,aAAaC,QAAQ,SAAS,KAAK,GAC3DjI,KAAKsH,cAActB,EAASuB,GAQvC,MALAW,aAAYC,WAAW,UAAW,iBAC7BZ,GAAQvH,KAAKC,OACdD,KAAKG,aAGFuB,SAAS0G,cAAc,QASlCzI,oBAAoB2G,UAAUyB,cAAc,SAASM,EAAWC;AAE5D,GAAKR,MAID9H,KAAKC,OAAO,GAAIsI,eAAc,oBAC9BvI,KAAKC,OAAOH,MAAME,KAAKF,MACvBE,KAAKC,OAAOuI,mBAAqB,aACjCxI,KAAKC,OAAmB,QAAEoI,OAPnB,CACP,GAAII,GAAS,GAAIC,UACjB1I,MAAKC,OAAOwI,EAAOE,gBAAgBN,EAAW,YAQ9CC,IAGAtI,KAAKE,cACLF,KAAKE,aAAaF,KAAKG,WAAY,KAAM,KAAM,KAAMH,MAErDA,KAAKI,WACLJ,KAAKI,WACLJ,KAAKI,SAAS,QAWtBT,oBAAoB2G,UAAUM,QAAQ,SAASgC,EAAUC,EAAUC,EAAUC,GACrE/I,KAAKD,QACL6I,IAAqC,IAAzBA,EAASlG,QAAQ,KAAc,IAAM,KAAK,gBAAe,GAAKsG,OAAQC,WACtFjJ,KAAK4I,SAASA;CAERd,OAAStH,OAAqB,eAChCR,KAAKC,OAAO,GAAIiJ,gBAEhBlJ,KAAKC,OAAO,GAAIsI,eAAc,qBAG9BvI,KAAKF,QACLE,KAAKC,OAAOuI,mBAAmB,GAAIxI,MAAKiH,iBAAiBjH,OACtC,gBAAZ6I,GACP7I,KAAKC,OAAOkJ,KAAKN,EAAUD,EAAU5I,KAAKF,OAE1CE,KAAKC,OAAOkJ,KAAKN,EAAW,OAAS,MAAOD,EAAU5I,KAAKF,OAE3DiJ,GACA/I,KAAKC,OAAOmJ,iBAAiB,aAAc,mBAAmBC,UAAUC,UAAU,KAClFtJ,KAAKC,OAAOmJ,iBAAiB,eAAgB,aAGxCP,GACL7I,KAAKC,OAAOmJ,iBAAiB,eAAgB;AAEjDpJ,KAAKC,OAAOmJ,iBAAiB,mBAAmB,kBAChDpJ,KAAKC,OAAOsJ,KAAK,MAAMT,GAElB9I,KAAKF,OACN,GAAKE,MAAKiH,iBAAiBjH,SAOnCL,oBAAoB2G,UAAUkD,WAAW,WAqBrC,MApBAxJ,MAAKyJ,aAAe,KACpBzJ,KAAK0J,mBAAqB,KAC1B1J,KAAK6H,OAAS,KACd7H,KAAKF,MAAQ,KACbE,KAAKD,MAAQ,KACbC,KAAK4I,SAAW,KAChB5I,KAAKE,aAAe,KACpBF,KAAKG,WAAa,KAClBH,KAAKC,OAAS,KACdD,KAAK2J,QAAU,KACf3J,KAAK4J,aAAe,KACpB5J,KAAK6J,mBAAqB,KAC1B7J,KAAK8J,mBAAqB,KAC1B9J,KAAK4G,QAAU,KACf5G,KAAK+H,cAAgB;AAErB/H,KAAK+J,gBAAkB,KACvB/J,KAAKgK,cAAgB,KACrBhK,KAAKsH,cAAgB,KACrBtH,KAAKiK,iBAAmB,KACjB,MAGXtK,oBAAoB2G,UAAU0D,cAAgB,SAASE,GAEnD,IAAK,GADDpE,MACKqE,EAAE,EAAGA,EAAED,EAAKE,WAAWzD,OAAQwD,IACpCrE,EAAEoE,EAAKE,WAAWD,GAAG7G,MAAM4G,EAAKE,WAAWD,GAAGE,KAClDvE,GAAa,UAAEoE,EAAKI,WAAWJ,EAAKI,WAAWC,UAAU,EACzD,KAAK,GAAIJ,GAAE,EAAGA,EAAED,EAAKM,WAAW7D,OAAQwD,IAAI,CACxC,GAAI7G,GAAK4G,EAAKM,WAAWL,GAAGnE,OACxB1C,KACKwC,EAAExC,KAAOwC,EAAExC,OAChBwC,EAAExC,GAAMmH,KAAKzK,KAAKgK,cAAcE,EAAKM,WAAWL,MAGxD,MAAOrE,IAyHXnD,uBAAuB2D,UAAUoE,oBAAoB,SAASC;AAC1DA,EAASC,YAAY,KACrBD,EAASE,YAAY,KACrBF,EAASG,YAAY,MAGzBnI,uBAAuB2D,UAAUyE,iBAAiB,SAASJ,EAAU9K,GACjE8K,EAASC,YAAY5K,KAAKgL,kBAC1BL,EAASE,YAAYhL,EACrBG,KAAKiL,eAAeN,EAAU9K,IAGlC8C,uBAAuB2D,UAAU2E,eAAe,SAASN,EAAU9K,GAC/D8K,EAASG,YAAYjL,GAGzB8C,uBAAuB2D,UAAU0E,kBAAkB,SAASzK,GACxD,OAAKA,IAAGC,OAAOC,OAA+B,IAApBF,GAAGE,OAAOyK,OAGhC1K,OAAOoC,iBAAiBO,UACxB3C,OAAOoC,iBAAiBO,SAAS,EACjCzB,SAASD,KAAK0J,UAAU3K,OAAOoC,iBAAiBK;AAChDvB,SAASD,KAAK2J,YAAY5K,OAAOoC,iBAAiBM,UAC3C,IAGP1C,OAAOoC,iBAAiBE,UACxBtC,OAAOoC,iBAAiByI,SAAS9K,GAErCC,OAAOoC,iBAAiBO,SAAS,EACjC3C,OAAOoC,iBAAiBK,SAASvB,SAASD,KAAK0J,UAC/C3K,OAAOoC,iBAAiBM,SAASxB,SAASD,KAAK2J,YAC/C5K,OAAOoC,iBAAiBG,cAAc/C,KACtCQ,OAAOoC,iBAAiBI,gBAAgBhD,KAAK6K,YAC7CnJ,SAASD,KAAK0J,UAAU3K,OAAOoC,iBAAiBoI,kBAChDtJ,SAASD,KAAK2J,YAAY5K,OAAOoC,iBAAiB0I;AAClD9K,OAAOoC,iBAAiB2I,UAAW,GAAIvC,OAAOC,UAG1C,GAAM1I,EAAgB,gBACtBA,EAAEiL,kBACK,IAEJ,GA3BP,QA8BJ7I,uBAAuB2D,UAAUgF,SAAS,SAAS/K,GAC1CA,IACDA,EAAEC,OAAOC,MACb,IAAIgL,GAAQjL,OAAOoC,gBACnB,OAAI,GAAKoG,OAAQC,UAAUwC,EAAQF,SAAS,KAA5C,CAKA,IAAKE,EAAQ3I,SAAS,CAClB,IAAI2I,EAAQtI,SAcP,MAAOsI,GAAQJ,SAAS9K,GAAG,EAX5B,IAFAkL,EAAQ3I,SAAS2I,EAAQzI,gBAAgB0I,gBAAgBD,EAAQ1I,cAAexC,IAE3EkL,EAAQ3I,SACT,MAAO2I,GAAQJ,UAEnBI,GAAQ3I,SAAS6I,cAAc,WAAW,OAAO,GACjDF,EAAQG,WAAWH,EAAQ3I,SAC3BpB,SAASD,KAAKoK,YAAYJ,EAAQ3I;AAClCpB,SAASD,KAAK0J,UAAUM,EAAQJ,SAChCI,EAAQtI,SAAS,EACjBsI,EAAQ3I,SAASgJ,QAAQtL,OACzBiL,EAAQM,iBAKhB,GAAIN,EAAQ3I,SAASkJ,YAAcxL,OAAOkB,SAASD,MAAQgK,EAAQG,WAAW,CAC1E,GAAIK,GAAMR,EAAQG,UAEdH,GAAQG,WAAWM,MACnBD,EAAIR,EAAQG,WAAWM,KAG3BD,EAAID,WAAWG,YAAYF,EAC3B,IAAIG,GAAUX,EAAQ3I,SAASgJ,OAM/B,IAJIG,EAAIH,SAAWG,EAAIH,QAAQlJ,iBAAiBC,aAC5CoJ,EAAIH,QAAQlJ,iBAAiBC,YAAYiI,YAAYuB,SAASJ,EAAIH,QAAQlJ,iBAAiBC,aAG3FiF,MAAM,CACN,GAAIwE,GAAM5K,SAAS0G,cAAc,MACjCkE,GAAIC,UAAUd,EAAQ3I,SAAS0J,UAC/Bf,EAAQ3I,SAASwJ,EAAI9B,WAAW;;KAEhCiB,GAAQ3I,SAAS2I,EAAQ3I,SAAS2J,WAAU,EAEhDhB,GAAQ3I,SAASgJ,QAAQtL,OAGzBiL,EAAQG,WAAWM,IAAIT,EAAQ3I,SAC/BpB,SAASD,KAAKoK,YAAYJ,EAAQ3I,UAClCsJ,EAAQxJ,iBAAiBE,SAAS2I,EAAQ3I,SAG9C2I,EAAQ3I,SAAS4J,MAAM7L,KAAKN,EAAEoM,QAAQ,IACjClB,EAAQmB,GAAgB,GAAXnB,EAAQmB,GAAU,IAC/BlL,SAASD,KAAKM,YAAYL,SAASE,gBAAgBG,YAAY,KACpE0J,EAAQ3I,SAAS4J,MAAM3L,IAAIR,EAAEsM,QAAQ,GAChCpB,EAAQqB,GAAgB,GAAXrB,EAAQqB,GAAU,IAC/BpL,SAASD,KAAKI,WAAWH,SAASE,gBAAgBC,WAAW,IAElE,IAAI2F,EAIAA,GAHCjH,EAAEwM,WAGDxM,EAAEwM,WAFAxM,EAAEyM,OAGVvB,EAAQwB,aAAazF,EAAGjH,KAG5BoC,uBAAuB2D,UAAU4G,uBAAuB,SAASC;AAE7D,GAAI3M,OAAO8C,KAAK,CAKZ,IAJA,GAAI8J,GAAKC,OAAOC,OAAO9M,OAAO8C,MAAMiK,aAAalM,aAC7CuL,EAAK,EACLE,EAAK,EAEFM,GACHR,GAAIQ,EAAGhM,WACP0L,GAAIM,EAAGjM,UACPiM,EAAGA,EAAG/L,YAGV,IAAKgM,OAAuB,iBAAE,CAC1B,GAAIG,GAAKH,OAAOzK,iBAAiBsK,uBAAuB,EACxDN,IAAqB,EAAjBY,EAAG5F,MAAM,KAAK,GAClBkF,GAAqB,EAAjBU,EAAG5F,MAAM,KAAK,GAGtB,GAAIuF,EACA,MAAOP,GAAG,IAAIE,CAEd9M,MAAK4M,GAAGA,EACZ5M,KAAK8M,GAAGA,EAEZ,MAAO,OAGXnK,uBAAuB2D,UAAU2G,aAAa,SAAStM,EAAYJ,GAC3D,GAAeI,EAAsB,aACjCX,KAAK6C,aACL7C,KAAK6C,YAAYiI,YAAYuB,SAASrM,KAAK6C,aAC/C7C,KAAK6C,YAAYlC,EACjBX,KAAK6C,YAAY7C,KAAK6C,YAAYiI,YAAY2C,QAAQzN,KAAK6C,YAAa7C,KAAK+C,cAAexC,EAAEoM,QAC1FpM,EAAEsM,QAAStM;AACfP,KAAK0N,gBAAiB5F,MAAQvH,EAAEwM,WAAaxM,EAAEyM,QAE3C,GAAqC,QAAtBrM,EAAWqF,QAC1BhG,KAAKiN,aAAatM,EAAWqL,WAAYzL,IAErCP,KAAK6C,aACL7C,KAAK6C,YAAYiI,YAAYuB,SAASrM,KAAK6C,YAAatC,EAAEoM,QAASpM,EAAEsM,QAAStM,GAClFP,KAAK6C,YAAY,EAEb7C,KAAK2N,aACL3N,KAAK2N,gBAKrBhL,uBAAuB2D,UAAU+E,SAAS,SAAS9K,EAAGqN,GAClD,GAAInC,GAAQjL,OAAOoC,gBAEnB,KAAKgL,EAAK,CACNnC,EAAQoC,gBACR,IAAInG,GAAO+D,EAAQ5I,WACnB4I,GAAQ5I,YAAY,KAEhB6E,GACAA,EAAKoD,YAAYgD,MAAMrC,EAAQ1I,cAAe0I,EAAQzI,gBAAiB0E,EAClEI,MAAQrH,MAAMsM,WAAaxM,EAAEyM;;CAE1CvB,EAAQ5I,YAAY,KAEf4I,EAAgB,UAAIA,EAAQ3I,SAASkJ,YAActK,SAASD,MAC7DgK,EAAQ3I,SAASkJ,WAAWG,YAAYV,EAAQ3I,UACpD2I,EAAQ3I,SAAS,EACjB2I,EAAQG,WAAW,EACnBH,EAAQmB,GAAG,EACXnB,EAAQqB,GAAG,EACXrB,EAAQ1I,cAAc,EACtB0I,EAAQzI,gBAAgB,EACxBtB,SAASD,KAAK0J,UAAUM,EAAQxI,SAChCvB,SAASD,KAAK2J,YAAYK,EAAQvI,SAClCuI,EAAQxI,SAAS,KACjBwI,EAAQvI,SAAS,KACjBuI,EAAQtI,SAAS,GAGrBR,uBAAuB2D,UAAUuH,eAAe,SAASE,GACjDA,GACAvN,OAAOoC,iBAAiByI,SAAS,EAAG,EAExC,KAAK,GAAIlB,GAAI,EAAGA,EAAI3J,OAAO8M,OAAO3G,OAAQwD,IACtC,IACS3J,OAAO8M,OAAOnD,IAAM4D,GAAOvN,OAAO8M,OAAOnD,GAAmB,kBAC7D3J,OAAO8M,OAAOnD,GAAGvH,iBAAiBiL,eAAerN;;CACvD,MAAMD,IAGZ,IACS8M,OAAuB,kBAAIA,QAAU7M,QAAU6M,QAAUU,GAC1DV,OAAOzK,iBAAiBiL,eAAerN,QAC7C,MAAMD,MAGZoC,uBAAuB2D,UAAUyF,eAAe,SAASgC,EAAKH,GACtDG,IACAvN,OAAOoC,iBAAiBoI,oBACxBxK,OAAOoC,iBAAiBG,cAAcgL,EAAInL,iBAAiBG,cAC3DvC,OAAOoC,iBAAiBI,gBAAgB+K,EAAInL,iBAAiBI,gBAC7DxC,OAAOoC,iBAAiBE,SAASiL,EAAInL,iBAAiBE,SACtDtC,OAAOoC,iBAAiBgJ,WAAWmC,EAAInL,iBAAiBE;AACxDtC,OAAOkB,SAASD,KAAK0J,UAAU3K,OAAOoC,iBAAiByI,SACvD7K,OAAO2C,SAAS,GAET2E,OAAQ,KAAYkG,OAASC,MAAQ,MACxCzN,OAAOoC,iBAAiBsK,yBAEhC,KACSG,OAAuB,kBAAIA,QAAU7M,QAAU6M,QAAUU,GAC1DV,OAAOzK,iBAAiBmJ,eAAevL,QAC9C,MAAMD,IAEP,IAAK,GAAI4J,GAAI,EAAGA,EAAI3J,OAAO8M,OAAO3G,OAAQwD,IACtC,IACS3J,OAAO8M,OAAOnD,IAAM4D,GAAOvN,OAAO8M,OAAOnD,GAAmB,kBAC7D3J,OAAO8M,OAAOnD,GAAGvH,iBAAiBmJ,eAAevL,QAAWuN,GAAKH,EAAQ,EAAI,GACnF,MAAMrN,MAIhByN,OAAQ,EACRlG,OAAQ,EACRoG,UAAW,EACXC,UAAW,EACXC,UAAW;AACXC,WAAY,EACZJ,OAAQ,EACRK,UAAW,EACXC,UAAW,EAEqC,IAA5ClF,UAAUC,UAAU5G,QAAQ,eAC5B0L,UAAS,GAGT/E,UAAUC,UAAU/G,cAAcG,QAAQ,UAAU,KACpD2L,WAAU,GAEgC,IAAzChF,UAAUC,UAAU5G,QAAQ,WAA+D,IAA5C2G,UAAUC,UAAU5G,QAAQ,cAC5E4L,SAAWE,WAAWnF,UAAUC,UAAUmF,OAAOpF,UAAUC,UAAU5G,QAAQ,UAAU,EAAG,IAEtF4L,SAAW,KACXN,OAAM,EACNC,MAAQ,KAERE,UAAS,GACkC,IAAxC9E,UAAUC,UAAU5G,QAAQ,UACnCwL,UAAS,EACTK,SAASC,WAAWnF,UAAUC,UAAUmF,OAAOpF,UAAUC,UAAU5G,QAAQ,SAAS,EAAG,KAIxC,IAA1C2G,UAAUqF,QAAQhM,QAAQ,cAC/BoF,OAAM;AAC0C,IAA3CuB,UAAUsF,WAAWjM,QAAQ,aAA+D,IAA3C2G,UAAUsF,WAAWjM,QAAQ,aAAgE,IAA5C2G,UAAUsF,WAAWjM,QAAQ,cAA8C,cAAvBhB,SAASkN,aAChK9G,MAAM,IAEmB,YAAtBuB,UAAUqF,SAAoE,IAA1CrF,UAAUC,UAAU5G,QAAQ,WAE1EoF,MAAM,GAEHkG,OAAM,EACNC,MAAQO,WAAWnF,UAAUC,UAAU1B,MAAM,OAAO,KAKxDjI,oBAAoB2G,UAAUqD,QAAQ,SAASkF,EAAUC,EAAQC,EAAWC,GACxE,GAAIb,WAAcrG,QAAUtH,OAAOyO,YAC/B,MAAOjP,MAAK4J,aAAaiF,EAAUC,EAEvC,IAAIhH,MAgBA,MAfKgH,KAIGA,EAHC9O,KAAKC,OAAOiP,SAGNlP,KAAKC,OAFLD,KAAKC,OAAOwH;AAItBqH,GACD5G,YAAYC,WAAW,UAAW,iBAC7B2G,GAAQ9O,KAAKC,OACdD,KAAKG,aAGT4O,GACAD,EAAOK,YAAY,sBAAuB,cAAcJ,EAAU,KAEnD,UAAfC,EACOF,EAAOM,iBAAiBP,GAGxBC,EAAOO,YAAYR,IAAW,GAAIS,OAAM,EAGnD,IAAIC,GAAUT,CAETA,KAKGA,EAJC9O,KAAKC,OAAOiP,SAINlP,KAAKC,OAHLD,KAAKC,OAAOwH,aAOtBqH,GACD5G,YAAYC,WAAW,UAAW,iBAC7B2G,GAAQ9O,KAAKC,OACdD,KAAKG,aAG8B,IAAvC2O,EAAOI,SAASxM,QAAQ,YACxB6M,EAAQT,GAGRS,EAAQT,EACRA,EAAOA,EAAOU,cAElB,IAAIC,GAAUR,YAAYS,QAEP,WAAfV,IACAS,EAAQR,YAAYU;;AACxB,GAAIC,MACAC,EAAMf,EAAOgB,SAASjB,EAAUU,EAAS,SAASQ,GAClD,MAAOhB,IACRU,EAAS,KAEZ,IAAIA,GAAWR,YAAYU,wBACvB,MAAOE,GAAIG,eAIf,KAFA,GAAIC,GAAcJ,EAAIK,cAEfD,GACHL,EAAQA,EAAQjJ,QAAQsJ,EACxBA,EAAYJ,EAAIK,aAEpB,OAAON,IAWfxM,aAAakD,UAAU6J,WAAW,SAAS9M,EAAM+M,GAC7CpQ,KAAKwD,QAAQH,GAAM+M,GAGvBhN,aAAakD,UAAU6B,WAAW,SAAS9E,EAAMC,EAAMC,GACnD,MAAIvD,MAAKwD,QAAQH,GACNrD,KAAKwD,QAAQH,GAAMA,EAAMC,EAAMC,GAEtCvD,KAAKwD,QAAa,IACXxD,KAAKwD,QAAa,IAAEH,EAAMC,EAAMC,IAE3C/C,OAAO6P,MAAM,eAAelK,UAAU,GAAG,kBAAkBA,UAAU,IAC9D,OAGX3F,OAAO0H,YAAY,GAAI9E;AAKvBzD,oBAAoB2G,UAAUsD,aAAa,SAASiF,EAAUC,GAE1D,GAAItH,GAAIqH,EAAS5G,QAAQ,UAAW,KAAKL,MAAM,KAC3ClC,EAAM,KACNyE,EAAI,CAER,KAAK3C,EAAEb,OACH,QAEJ,IAAY,KAARa,EAAE,GACF9B,GAAKoJ,OAAc,CAAA,GAAa,KAATtH,EAAE,GAIzB,QAHA9B,IAAK1F,KAAKC,OAAOwH,aAAazH,KAAKC,QAAQ0H,qBAAqBH,EAAE2C,GAAGlC,QAAQ,cAAe,KAC5FkC,IAIJ,IAAKA,EAAGA,EAAI3C,EAAEb,OAAQwD,IAAIzE,EAAI1F,KAAK0J,mBAAmBhE,EAAK8B,EAAE2C,GAI7D,OAF2B,IAAvB3C,EAAE2C,EAAE,GAAGzH,QAAQ,OACfgD,EAAI1F,KAAKyJ,aAAa/D,EAAK8B,EAAE2C,EAAE,KAC5BzE,GAGX/F,oBAAoB2G,UAAUmD,aAAa,SAAS/F,EAAGC,GAInD,IAAK,GAHDC,MACAD,EAAIA,EAAEsE,QAAQ,cAAe,IAAIA,QAAQ,aAAc,IAElDkC,EAAI,EAAGA,EAAIzG,EAAEiD,OAAQwD,IACtBzG,EAAEyG,GAAGmG,aAAa3M,KAClBC,EAAEA,EAAE+C,QAAQjD,EAAEyG;;AAEtB,MAAOvG,IAGXjE,oBAAoB2G,UAAUoD,mBAAmB,SAAShG,EAAGC,GACzD,GAAIC,KAEAuK,YACAxK,EAAEA,EAAE4M,cAER,KAAK,GAAIpG,GAAI,EAAGA,EAAIzG,EAAEiD,OAAQwD,IAAI,IAAK,GAAIqG,GAAI,EAAGA,EAAI9M,EAAEyG,GAAGK,WAAW7D,OAAQ6J,IACtErC,SACIzK,EAAEyG,GAAGK,WAAWgG,GAAGxK,SAAStC,EAAEyG,GAAGK,WAAWgG,GAAGxK,QAAQuK,eAAiB5M,IACxEC,EAAEA,EAAE+C,QAAQjD,EAAEyG,GAAGK,WAAWgG,IAG3B9M,EAAEyG,GAAGK,WAAWgG,GAAGxK,SAAWrC,IACnCC,EAAEA,EAAE+C,QAAQjD,EAAEyG,GAAGK,WAAWgG,GAGpC,OAAO5M,IAUuB,mBAAvBpD,QAAkB,cACzBA,OAAOiQ,YAAc,SAAqBrD,EAAI3M,EAAOH,GAC7C8M,EAAGsD,iBACHtD,EAAGsD,iBAAiBjQ,EAAOH,GAAS,GAE/B8M,EAAGhH,aACRgH,EAAGhH,YAAY,KAAK3F,EAAOH;;GAMvCX,oBAAoB2G,UAAUqK,OAAO,KACrChR,oBAAoB2G,UAAU2D,iBAAiB,SAAS2G,EAAWC,EAAYF,GACtEA,IACDA,EAAO3Q,KAAK2Q,QAEZA,EAAOlJ,cACPkJ,EAAOA,EAAOlJ,YAClB,IAAIqJ,GACA9Q,KAAK2J,QAAQ,uCAAuCiH,EAAU,KAAMD,EAChE,uCAAyC,SAE7CG,KACAA,EAAKxG,WAAWC,UAAUsG,IAGlClR,oBAAoB2G,UAAUuD,mBAAmB,SAAS8G,EAAQ1Q,GACzD0Q,IACDA,EAAO3Q,KAAK2Q,QAEZA,EAAOlJ,cACPkJ,EAAOA,EAAOlJ,aAEbxH,IACDA,EAAOD,KAAKC,QAEZA,EAAOwH,cACPxH,EAAOA,EAAOwH,YAGlB,IAAIsJ,EAEJ,IAAKjJ,MAME,CACHiJ,EAAS,GAAIxI,eAAc;;AAC3B,IACItI,EAAO+Q,sBAAsBL,EAAQI,GACxC,MAAMxQ,GACHwQ,EAAS9Q,EAAOgR,cAAcN,QAV7B3Q,MAAKkR,eACNlR,KAAKkR,aAAa,GAAIC,eACtBnR,KAAKkR,aAAaE,iBAAiBT,IAEvCI,EAAS/Q,KAAKkR,aAAaG,oBAAoBpR,EASnD,OAAO8Q,IAGXpR,oBAAoB2G,UAAUwD,mBAAmB,SAAS6G,EAAQ1Q,GAC9D,GAAIqR,GAAMtR,KAAK6J,mBAAmB8G,EAAQ1Q,EAC1C,OAAgB,gBAAP,GACEqR,EACJtR,KAAK+J,gBAAgBuH,IAGhC3R,oBAAoB2G,UAAUyD,gBAAgB,SAAS9J,GAKnD,GAJKA,IACDA,EAAOD,KAAKC,QACZA,EAAOwH,cACPxH,EAAOA,EAAOwH,aACbK,MAID,MAAO7H,GAAOsR,GAHd,IAAIC,GAAgB,GAAIC;;AACxB,MAAOD,GAAcE,kBAAkBzR,IAS/CoF,gBAAgB,SAASK,KACrBA,IAAIU,YAAY,SAAS9C,EAAMqO,EAASC,GAKpC,MAJAtO,GAAK,MAAMA,EAAKf,cACXvC,KAAKsD,KACNtD,KAAKsD,GAAM,GAAItD,MAAK6R,aAAaD,GAAS5R,OAEvCsD,EAAK,IAAItD,KAAKsD,GAAMwO,SAASH,IAExCjM,IAAIqM,UAAU,SAASzO,EAAM0O,GAEzB,MADA1O,GAAK,MAAMA,EAAKf,cACZvC,KAAKsD,GACEtD,KAAKsD,GAAM2C,MAAMjG,KAAMgS,IAC3B,GAEXtM,IAAIuM,WAAW,SAAS3O,GACpB,QAAUtD,KAAK,MAAMsD,EAAKf,gBAE9BmD,IAAImM,aAAa,SAASnM,KACtB,GAAIwM,cACA1K,EAAI,WAEJ,IAAK,GADD8J,IAAM,EACDnH,EAAI,EAAGA,EAAI+H,UAAUvL,OAAQwD,IAClC,GAAI+H,UAAU/H,GAAG,CACb,GAAIgI,GAAKD,UAAU/H,GAAGlE,MAAMP,IAAKS;;AACjCmL,EAAIA,GAAKa,EAGjB,MAAOb,GAYX,OAVA9J,GAAEsK,SAAS,SAASM,IAGhB,MAFmB,kBAAR,MACPA,GAAGC,KAAKD,KACRA,GACOF,UAAUzH,KAAK2H,IAAI,GACvB,GAEX5K,EAAE8K,YAAY,SAASC,GACnBL,UAAUK,GAAI,MAEX/K,GAEX9B,IAAI8M,YAAY,SAASD,GACrB,GAAIA,EAAG,CACH,GAAIE,GAAOF,EAAG3K,MAAM,IACpB5H,MAAKyS,EAAK,IAAIH,YAAYG,EAAK,MAGvC/M,IAAIgN,gBAAkB,WAClB,IAAK,GAAIpP,KAAQtD,MACa,IAAtBsD,EAAKZ,QAAQ,SACb1C,KAAKwS,YAAYlP,GACjBtD,KAAKsD,GAAQ,OAIzBoC,IAAM,MAENlF,OAAOiF,SACVjF,OAAOiF,WAER,WAEC,QAASiB,GAASiM,EAAQ5B,GACxB,GAAI6B,GAAWD,EAAOjM,QACtBmM,IAAS,GACTF,EAAOpR,IAAIyK,WAAWG,YAAYwG,EAAOpR,KACzCuR,EAAeH,EAAOpR,IAAM;AACxBqR,GACHA,EAAS7B,GAEZ,QAASgC,GAAUxS,GAClB,GAAIuS,EAAa,CAChBvS,EAAIA,GAAGE,KACP,IAAIuS,GAAOzS,EAAE0S,OAAOxS,MAAMyS,OAS1B,OARIzN,QAAO0N,QAAQC,YACN,IAARJ,GAAsB,IAARA,IACjBtM,EAASoM,GAAc,GACZ,IAARE,GACHtM,EAASoM,GAAc,IAErBvS,EAAEiL,gBACLjL,EAAEiL,mBACMjL,EAAE8S,cAAe,IAQ5B,QAASR,GAASjF,GACbiF,EAASS,QACZT,EAASS,MAAQ5R,SAAS0G,cAAc,OAExCyK,EAASS,MAAMC,UAAYR,EAC3BF,EAASS,MAAME,UAAY,kBAC3B9R,SAASD,KAAKoK,YAAYgH,EAASS,OAEtB5R,UAASD,KAAKgS,YAC5BZ,GAASS,MAAM5G,MAAMgH,QAAU9F,EAAK,eAAe,OAGpD,QAAS1C,GAAOyI,EAAM5C,EAAQ6C,GAE7B,GAAIJ,GAAYI,EAAMA,EAAOD,GAAQ,GACjCE,EAAa,UAAU,EAAYtR,cAAc0F,QAAQ,KAAM,KAAK;;AACxE,MAAO,mCAAmC4L,EAAW,aAAa9C,EAAO,WAAW4C,EAAK,eAG1F,QAASG,GAAKH,GACR7N,EAAEiO,OACNjO,EAAEiO,KAAOrS,SAAS0G,cAAc,OAChCtC,EAAEiO,KAAKP,UAAY,sBACnB1N,EAAEiO,KAAKrH,MAAM5G,EAAEkO,UAAU,MACzBtS,SAASD,KAAKoK,YAAY/F,EAAEiO,OAG7BjO,EAAEmO,KAAKN,EAAKpB,GACZ,IAAIY,GAAUzR,SAAS0G,cAAc,MAqBrC,OApBA+K,GAAQ5G,UAAY,QAAQoH,EAAKA,KAAK,SACtCR,EAAQK,UAAY,sBAAwBG,EAAKtQ,KACjD8P,EAAQe,QAAU,WACjBpO,EAAEmO,KAAKN,EAAKpB,IACZoB,EAAO,MAGU,UAAd7N,EAAEkO,UAAwBlO,EAAEiO,KAAKzJ,WACpCxE,EAAEiO,KAAKI,aAAahB,EAAQrN,EAAEiO,KAAKzJ,YAEnCxE,EAAEiO,KAAKlI,YAAYsH;AAEhBQ,EAAKS,OAAS,IACjBtO,EAAEuO,OAAOV,EAAKpB,IAAI/R,OAAO8T,WAAW,WACnCxO,EAAEmO,KAAKN,EAAKpB,KACVoB,EAAKS,SAETtO,EAAEyO,KAAKZ,EAAKpB,IAAMY,EAClBA,EAAU,KAEHQ,EAAKpB,GAEb,QAASiC,GAAc7B,EAAQ8B,EAAIC,GAClC,GAAInT,GAAMG,SAAS0G,cAAc,MACjC7G,GAAIiS,UAAY,4BAA4Bb,EAAOtP,KACnD9B,EAAIoT,aAAa,SAAU,EAE3B,IAAIC,GAAQ,EASZ,IAPIjC,EAAOkC,QACVtT,EAAImL,MAAMmI,MAAQlC,EAAOkC,OACtBlC,EAAOmC,SACVvT,EAAImL,MAAMoI,OAASnC,EAAOmC,QACvBnC,EAAOoC,QACVH,GAAO,mCAAmCjC,EAAOoC,MAAM,UACxDH,GAAO,yCAAyCjC,EAAOqC,QAAQ,GAAGrC,EAAOgB,MAAM;AAC3Ec,EAAG,CACN,GAAIQ,GAAWtC,EAAO8B,IAAMlP,UAAU2P,OAAOC,OAAOC,UAErCC,UAAZJ,IAAuBA,EAAU,MACpCL,GAAS1J,EAAO+J,GAAS,EAAM,MAEhC,GAAIP,EAAO,CACV,GAAIY,GAAe3C,EAAO+B,QAAUnP,UAAU2P,OAAOC,OAAOI,cACzCF,UAAhBC,IAA2BA,EAAc,UAC5CV,GAAS1J,EAAOoK,GAAa,EAAO,UAErC,GAAI3C,EAAO6C,QACV,IAAK,GAAIrL,GAAE,EAAGA,EAAEwI,EAAO6C,QAAQ7O,OAAQwD,IACtCyK,GAAS1J,EAAOyH,EAAO6C,QAAQrL,GAAGA,EAKpC,IAHAyK,GAAS,SACTrT,EAAIgL,UAAYqI,EAEZjC,EAAOqC,QAAQ,CAClB,GAAI9K,GAAOyI,EAAOqC,OACC,iBAAR9K,KACVA,EAAOxI,SAAS+T,eAAevL,IACN,QAAtBA,EAAKwC,MAAMgH,UACdxJ,EAAKwC,MAAMgH,QAAU,IACtBnS,EAAIiJ,WAAWmI,EAAOoC,MAAM,EAAE,GAAGlJ,YAAY3B,GAiB9C,MAdA3I,GAAI2S,QAAU,SAAS3T,GACtBA,EAAIA,GAAIE,KACR,IAAIiV,GAASnV,EAAEyM,QAAUzM,EAAEwM;;AAE3B,GADK2I,EAAOlC,YAAWkC,EAASA,EAAO1J,YACD,uBAAlC0J,EAAOlC,UAAU5L,MAAM,KAAK,GAA4B,CAC3D,GAAImJ,GAAS2E,EAAOpF,aAAa,SACjCS,GAAoB,QAAVA,IAA8B,SAAVA,GAAkB,EAAMA,GACtDrK,EAASiM,EAAQ5B,KAGnB4B,EAAOpR,IAAMA,GACTkT,GAAIC,KACP5B,EAAeH,GAETpR,EAER,QAASoU,GAAWhD,EAAQ8B,EAAIC,GAC/B,GAAInT,GAAMoR,EAAO3M,QAAU2M,EAAS6B,EAAc7B,EAAQ8B,EAAIC,EAEzD/B,GAAOiD,QACX/C,GAAS,GACVnR,SAASD,KAAKoK,YAAYtK,EAC1B,IAAIsU,GAAI1T,KAAK2T,IAAI3T,KAAK4T,QAAQvV,OAAOwV,YAAYtU,SAASE,gBAAgBqU,aAAe1U,EAAI0U,aAAa,IACtGC,EAAI/T,KAAK2T,IAAI3T,KAAK4T,QAAQvV,OAAO2V,aAAazU,SAASE,gBAAgBwU,cAAgB7U,EAAI6U,cAAc,GAa7G,OAZuB,OAAnBzD,EAAOqB,SACVzS,EAAImL,MAAM3L,IAAM,OAEhBQ,EAAImL,MAAM3L,IAAMmV,EAAE;AACnB3U,EAAImL,MAAM7L,KAAOgV,EAAE,KAEnBtU,EAAIgS,UAAYR,EAEhBxR,EAAI8U,QACA1D,EAAOiD,QACVnQ,OAAO6Q,SAASrC,KAAK1S,GAEfA,EAGR,QAASgV,GAAW5D,GACnB,MAAOgD,GAAWhD,GAAQ,GAAM,GAEjC,QAAS6D,GAAa7D,GACrB,MAAOgD,GAAWhD,GAAQ,GAAM,GAEjC,QAAS8D,GAAS9D,GACjB,MAAOgD,GAAWhD,GAEnB,QAAS+D,GAAW/C,EAAMtQ,EAAMqD,GAQ/B,MAPmB,gBAARiN,KACS,kBAARtQ,KACVqD,EAAWrD,EACXA,EAAO,IAERsQ,GAAQA,KAAKA,EAAMtQ,KAAKA,EAAMqD,SAASA,IAEjCiN,EAER,QAASpQ,GAAOoQ,EAAMtQ,EAAM+Q,EAAQ7B,GAKnC,MAJmB,gBAARoB,KACVA,GAAQA,KAAKA,EAAMtQ,KAAKA,EAAM+Q,OAAOA,EAAQ7B,GAAGA,IACjDoB,EAAKpB,GAAKoB,EAAKpB,IAAIzM,EAAE6Q,MACrBhD,EAAKS,OAAST,EAAKS,QAAQtO,EAAEsO,OACtBT,EAxLR,GAAIb,GAAe,IAwBfpR,UAAS0E,YACZ1E,SAAS0E,YAAY,YAAa2M,GAElCrR,SAASgP,iBAAiB,UAAWqC,GAAW;AA+JjDtN,OAAO4K,MAAQ,WACd,GAAIsD,GAAO+C,EAAWzQ,MAAMjG,KAAMmG,UAElC,OADAwN,GAAKtQ,KAAOsQ,EAAKtQ,MAAQ,UAClBkT,EAAW5C,IAEnBlO,OAAOmR,QAAU,WAChB,GAAIjD,GAAO+C,EAAWzQ,MAAMjG,KAAMmG,UAElC,OADAwN,GAAKtQ,KAAOsQ,EAAKtQ,MAAQ,QAClBmT,EAAa7C,IAErBlO,OAAO6Q,SAAW,WACjB,GAAI3C,GAAO+C,EAAWzQ,MAAMjG,KAAMmG,UAElC,OADAwN,GAAKtQ,KAAOsQ,EAAKtQ,MAAQ,QAClBoT,EAAS9C,IAEjBlO,OAAO6Q,SAASrC,KAAO,SAAS/J,GAC/B,KAAOA,GAAQA,EAAKoG,eAAiBpG,EAAKoG,aAAa,WACtDpG,EAAOA,EAAK8B,UACT9B,KACHA,EAAK8B,WAAWG,YAAYjC,GAC5B2I,GAAS,IAGX,IAAI/M,GAAIL,OAAO0N,QAAU,SAASQ,EAAMtQ,EAAM+Q,EAAQ7B,GACrDoB,EAAOpQ,EAAO0C,MAAMjG,KAAMmG,WAC1BwN,EAAKtQ,KAAOsQ,EAAKtQ,MAAM;;AAEvB,GAAIwT,GAAUlD,EAAKtQ,KAAKuE,MAAM,KAAK,EACnC,QAAQiP,GACP,IAAK,QACJ,MAAON,GAAW5C,EACnB,KAAK,UACJ,MAAO6C,GAAa7C,EACrB,KAAK,WACJ,MAAO8C,GAAS9C,EACjB,SACC,MAAOG,GAAKH,IAIf7N,GAAEgR,MAAO,GAAK9N,OAAQC,UACtBnD,EAAE6Q,IAAM,WAAW,MAAO7Q,GAAEgR,QAC5BhR,EAAEsO,OAAS,IACXtO,EAAEsN,UAAW,EACbtN,EAAEkO,SAAW,MACblO,EAAEyO,QACFzO,EAAEuO,UAEFvO,EAAEiR,QAAU,WACX,IAAK,GAAIC,KAAOlR,GAAEyO,KACjBzO,EAAEmO,KAAK+C,IAETlR,EAAEmO,KAAO,SAAS1B,GACjB,GAAI7M,GAAMI,EAAEyO,KAAKhC,EACb7M,IAAOA,EAAIsG,aACdxL,OAAO8T,WAAW,WACjB5O,EAAIsG,WAAWG,YAAYzG,GAC3BA,EAAM,MACL,KACFA,EAAI8N,WAAW,UAEZ1N,EAAEuO,OAAO9B,IACX/R,OAAOyW,aAAanR,EAAEuO,OAAO9B;MACvBzM,GAAEyO,KAAKhC,QA2CjB1O,cAAcyC,WAOb4Q,mBAAmB,SAAStJ,EAAKuJ,GAC1BnX,KAAKqE,OAAOuJ,EAClB5N,KAAKoX,OAAOD,EACA,QAARvJ,IACH5N,KAAKoX,QAAS,EACdpX,KAAKqX,QAAS,IAGbC,OAAO,SAASC,GACf,MAAIvX,MAAKwX,KACDC,mBAAmBF,GAEhBD,OAAOC,IAOtBnS,kBAAkB,SAASwI,GACpB5N,KAAKwX,KAAKnV,uBAAuBuL,IAOxC8J,eAAe,SAASC,GACvB3X,KAAK4X,SAAwB,gBAAPD,GAAiBA,EAAI/P,MAAM,KAAK+P,GAOvDE,aAAa,WACZ,OAAQ7X,KAAKkE,YAAYyC,QAO1BmR,gBAAgB,SAASlK,GACxB5N,KAAKqX,OAAOhV,uBAAuBuL,IAOpCmK,sBAAsB,SAASnK;AAC9B5N,KAAKgY,SAAS3V,uBAAuBuL,IAOtCqK,cAAc,SAASrK,EAAKsK,GAC3BlY,KAAKmE,WAAoB,QAANyJ,EACnB5N,KAAKoE,WAAawJ,EAClB5N,KAAKkY,IAAIA,GAEVC,OAAO,SAASnF,EAAKoF,GACpBpY,KAAKqY,cAAa,EAClBrF,EAAK3L,KAAK+Q,GAAQ5X,QAClBR,KAAKqY,cAAa,GASnBC,WAAW,SAASC,EAAMC,EAAM5K,GAC/B,IAAI5N,KAAKqY,aAAT,CACA,GAAII,GAAIzY,KAAK0Y,QAAQH,EAErB3K,GAAKA,GAAM,SACX,IAAI+K,GAAW3Y,KAAK0F,IAAIkT,YAAYL,EAAMvY,KAAKgE,aAC3C2U,IAAoB,WAAR/K,IAAmBA,EAAK+K,GACpCH,GACHxY,KAAK6Y,YAAYN,GAAM,GACvBvY,KAAKkE,YAAYuU,GAAKF,EACtBvY,KAAK0F,IAAIoT,YAAYP,EAAMvY,KAAKgE,aAAa4J,GACzC5N,KAAKwE,aAAa+T,KACrBvY,KAAKwE,aAAa+T,GAAO,SAErBvY,KAAK+Y,WAAWR,KACpBvY,KAAKkE,YAAY8U,OAAOP,EAAI;AAC5BzY,KAAK0F,IAAIoT,YAAYP,EAAMvY,KAAKgE,aAAa,KAK1CwU,GACJxY,KAAKiZ,iBAAiBV,GAEvBvY,KAAKkZ,QAAQX,EAAMC,EAAM5K,GACrB4K,GAASxY,KAAKmE,YAAYnE,KAAKmZ,SAASZ,KAE7CU,iBAAiB,SAAS1G,KAC1B2G,QAAQ,SAAS3G,EAAGiG,EAAM5K,GACzB,GAAInL,GAAI,GACJuC,EAAQhF,KAAK+Y,WAAWxG,EAK5B,IAJIvN,IACGvC,EAAIzC,KAAK4E,OAAOI,GAChBwT,GAAM,GAETxY,KAAK+R,UAAU,aAAaQ,EAAGiG,EAAM5K,EAAK5I,MAE7CvC,EAAIzC,KAAK4E,OAAO4T,EAAM5K,EAAK,SAASnL,EAE9BzC,KAAK0F,IAAI1F,KAAKoZ,SAAS,IAAI7G,EAAG9P,GAEhCuC,GAAWA,EAAQqU,SAAQ,CAC9B5W,GAAKzC,KAAK4E,OAAOI,EAAQ,QACzB,KAAK,GAAImF,GAAE,EAAGA,EAAInF,EAAQqU,QAAQ1S,OAAQwD,IACrCnF,EAAQqU,QAAQlP,IACbnK,KAAK0F,IAAI1F,KAAKoZ,SAAS,IAAI7G,EAAGpI,EAAE1H,KAI3C6W,SAAS,SAAS/G,GACjB,MAAOvS,MAAK0F,IAAIkT,YAAYrG,EAAGvS,KAAKgE;;EAErC+U,WAAW,SAASxG,GACnB,MAAOvS,MAAKyE,SAAS8N,IAEtBsG,YAAY,SAAStG,EAAG3E,EAAKyL,GACxBA,IAASzL,GAAMvD,MAAMuD,EAAMyL,QAAQA,EAASE,SAAS,WAAY,MAAOvZ,MAAKqK,MAAMkP,cACvFvZ,KAAKyE,SAAS8N,GAAI3E,GAOnB4L,kBAAkB,SAASjB,GAC1B,OAAO,GAORY,SAAS,SAASZ,GACjB,OAAIvY,KAAKuE,WAA+B,QAAjBvE,KAAK0F,IAAI+T,SAAkBzZ,KAAK0F,IAAIgU,KACvD1Z,KAAK0F,IAAIiU,UAAU3Z,KAAK0F,IAAIiU,WAGb,mBAATpB,IAAwBvY,KAAKoX,OAAepX,KAAK4Z,cACvD5Z,KAAKwE,aAAa+T,IAAe,GAErCvY,KAAK2E,aACA3E,KAAKwZ,kBAAkBjB,IAAUvY,KAAK+R,UAAU,qBAAqBwG,EAAMvY,KAAK2E,YAAmB,MACxG3E,MAAK6Z,gBAAgB7Z,KAAK8Z,YAAYvB,GAAOA,KAT7C;;EAWEsB,gBAAgB,SAAStC,EAAKgB,GAC7B,MAAKvY,MAAK+R,UAAU,kBAAkBwG,EAAMvY,KAAKsZ,SAASf,GAAOhB,QACpEvX,MAAK+Z,UAAUxC,EAAKgB,IAD+D,GAGjFyB,UAAU,SAASzC,EAAMhF,GACxB,GAAmB,gBAARgF,GACV,MAAOA,EACR,IAAiB,mBAANhF,GACV,MAAOvS,MAAKia,cAAc1C,EAAK,GAE/B,IAAI2C,MACAC,IACJ,KAAK,GAAInD,KAAOO,GACXA,EAAK6C,eAAepD,KACvBkD,EAAMzP,KAAKzK,KAAKia,cAAc1C,EAAKP,GAAKA,EAAIhX,KAAKsE,aACjD6V,EAAK1P,KAAKuM,GAKZ,OAHAkD,GAAMzP,KAAK,OAAOzK,KAAKsX,OAAO6C,EAAKE,KAAK,OACpC5U,OAAO6U,cACbJ,EAAMzP,KAAK,gBAAgBhF,OAAO6U,cACzBJ,EAAMG,KAAK,MAGpBJ,cAAc,SAAS1C,EAAMxH;AAC5B,GAAmB,gBAARwH,GACV,MAAOA,EACR,IAAI2C,KACJ,KAAK,GAAIlD,KAAOO,GACf,GAAIA,EAAK6C,eAAepD,GAAK,CAC5B,IAAY,MAAPA,GAAeA,GAAOhX,KAAKgE,eAAgC,QAAfhE,KAAKqE,OAAkB,QACxE6V,GAAMzP,KAAKzK,KAAKsX,QAAQvH,GAAM,IAAIiH,GAAK,IAAIhX,KAAKsX,OAAOC,EAAKP,KAEjE,MAAOkD,GAAMG,KAAK,MAEhBN,UAAU,SAASQ,EAAGhC,GACrB,GAAKgC,EAAL,CACH,IAAKva,KAAK+R,UAAU,sBAAsBwG,GAAOA,EAAMvY,KAAKsZ,SAASf,GAAOgC,IAAK,KAAM,KAAMA,IAAM,OAAO,CAEnGhC,KACNvY,KAAKwE,aAAa+T,IAAO,GAAKvP,OAAQC,UACvC,IAAIuR,GAAG,GAAI7a,qBAAoB,SAASoG,EAAKpC,EAAEC,EAAE6W,EAAElJ,GAClD,GAAImJ,KACJ,IAAInC,EACHmC,EAAIjQ,KAAK8N,OACL,IAAIgC,EACR,IAAK,GAAIvD,KAAOuD,GACfG,EAAIjQ,KAAKuM,EAEX,OAAOjR,GAAK4U,YAAY5U,EAAKwL,EAAImJ;;EAChC1a,MAAK,GAEH4a,EAAK5a,KAAK+D,iBAAiB/D,KAAK6a,MAAOrY,aAAaxC,KAAK+D,kBAAkB,YAAY/D,KAAK6a,MAAM,eAAe7a,KAAK0F,IAAIkT,YAAY,EAAE,YAAYyB,KAAK,KAAM,GAEnK,IAAiB,OAAbra,KAAKqE,OACFmW,EAAG5T,QAAQgU,GAAsB,IAAjBA,EAAGlY,QAAQ,KAAU,IAAI,KAAK1C,KAAKga,UAAUO,EAAGhC,QAClE,IAAmB,QAAfvY,KAAKqE,OACPmW,EAAG5T,QAAQgU,GAAG,EAAK5a,KAAKga,UAAUO,EAAGhC,QACjC,IAAmB,QAAfvY,KAAKqE,OAAiB,CAC9B,GAAImU,GAAQxY,KAAKsZ,SAASf,GACtB9R,EAAMmU,EAAG3S,QAAQ,uBAAuB,GAC/B,aAATuQ,EACHgC,EAAG5T,QAAQH,EAAI8R,EAAM,OAAOvY,KAAKga,UAAUO,EAAGhC,IAC7B,WAATC,EACRgC,EAAG5T,QAAQH,EAAI8R,EAAM,SAAS,IAE9BiC,EAAG5T,QAAQH,EAAI8R,EAAM,MAAMvY,KAAKga,UAAUO,EAAGhC;;CAGrDvY,KAAKuE,cAENqV,YAAY,WACX,GAAK5Z,KAAKkE,YAAYyC,OAAtB,CAEA3G,KAAK2E,WACL,KAAK,GADiBmW,IAAM,EACnB3Q,EAAE,EAAGA,EAAEnK,KAAKkE,YAAYyC,OAAQwD,IACxC2Q,GAAO9a,KAAKwZ,kBAAkBxZ,KAAKkE,YAAYiG,GAChD,KAAK2Q,IAAU9a,KAAK+R,UAAU,qBAAqB,GAAG/R,KAAK2E,WAAY,OAAO,CAE9E,IAAI3E,KAAKoX,OACRpX,KAAK+Z,UAAU/Z,KAAK+a,mBAEpB,KAAK,GAAI5Q,GAAE,EAAGA,EAAEnK,KAAKkE,YAAYyC,OAAQwD,IACxC,IAAKnK,KAAKwE,aAAaxE,KAAKkE,YAAYiG,IAAI,CAC3C,GAAInK,KAAK+Y,WAAW/Y,KAAKkE,YAAYiG,IAAK,QAE1C,IADAnK,KAAK6Z,gBAAgB7Z,KAAK8Z,YAAY9Z,KAAKkE,YAAYiG,IAAInK,KAAKkE,YAAYiG;AACxEnK,KAAKuE,YAA+B,QAAjBvE,KAAK0F,IAAI+T,QAAkBzZ,KAAK0F,IAAIgU,KAAM,UAWrEqB,YAAY,SAASxC,GAGpB,IAAI,GAFAyC,MACAC,GAAU,EACN9Q,EAAE,EAAEA,EAAEnK,KAAKkE,YAAYyC,OAAOwD,IAAI,CACzC,GAAIoI,GAAGvS,KAAKkE,YAAYiG,EACpBnK,MAAKwE,aAAa+N,IAAOvS,KAAK+Y,WAAWxG,IACxCvS,KAAK+R,UAAU,kBAAkBQ,EAAGvS,KAAKsZ,SAAS/G,GAAKvS,KAAK8Z,YAAYvH,OAC7EyI,EAAIzI,GAAIvS,KAAK8Z,YAAYvH,EAAGA,EAAGvS,KAAKsE,YACpC2W,GAAU,EACVjb,KAAKwE,aAAa+N,IAAI,GAAKvJ,OAAQC,WAEpC,MAAOgS,GAAQD,EAAI,MAUpBE,eAAe,SAASzC,EAAI0C,GAC3Bnb,KAAK0E,gBAAgB+T,GAAO0C,GAAe,SAAU9Q,GAAO,MAAgB,KAARA,IAOrE+Q,iBAAiB,SAAS3C;AACzBzY,KAAK0E,gBAAgB+T,IAAO,GAO7BC,QAAQ,SAAS2C,GAChB,GAAIlR,GAAE,CACH,KAAIA,EAAE,EAAEA,EAAEnK,KAAKkE,YAAYyC,QACvB0U,GAASrb,KAAKkE,YAAYiG,GADIA,KAElC,MAAOA,IAmBXmR,aAAa,SAAShY,EAAKhD,GACfN,KAAKub,YAAWvb,KAAKub,cACtBvb,KAAKub,UAAUjY,GAAMhD,GAchCkb,oBAAoB,SAASC,EAAKC,EAAKC,EAAQC,GAC9C,GAAIC,GAASJ,EACTK,EAAiB,SAARH,GAA2B,WAARA,CAEhC,IADKG,GAAS9b,KAAK6Y,YAAY4C,EAAIE,GAC9B3b,KAAc,WAAIA,KAAKub,UAAUI,KAAY3b,KAAKub,UAAUI,GAAQC,GACxE,aAAe5b,MAAKwE,aAAaqX,EAEH,SAA3B7b,KAAKwE,aAAaqX,IAClB7b,KAAKsY,WAAWmD,GAAK,EAEtB,IAAIM,GAAON,CAEX,QAAQE,GACR,IAAK,WACL,IAAK;AACGD,GAAOD,IACPzb,KAAK0F,IAAI1F,KAAKoZ,SAAS,IAAIqC,EAAKC,GAChCD,EAAMC,EAEV,MACJ,KAAK,SACL,IAAK,UAID,MAHH1b,MAAK0F,IAAIoT,YAAY2C,EAAKzb,KAAKgE,aAAc,gBAC1ChE,KAAK0F,IAAI1F,KAAKoZ,SAAS,IAAIqC,SACpBzb,MAAKwE,aAAaqX,GAClB7b,KAAK+R,UAAU,iBAAkB0J,EAAKE,EAAQD,EAAKE,IAG/B,QAA3B5b,KAAKwE,aAAaqX,IACjBC,GAAS9b,KAAK0F,IAAIoT,YAAY2C,EAAKzb,KAAKgE,aAAa,UAClDhE,MAAKwE,aAAaqX,WAElB7b,MAAKwE,aAAaqX,GACzB7b,KAAKsY,WAAWoD,GAAI,EAAK1b,KAAK0F,IAAIkT,YAAY6C,EAAIzb,KAAKgE,gBAGxDhE,KAAK+R,UAAU,iBAAkBgK,EAAMJ,EAAQD,EAAKE,KAQxDjB,YAAY,SAAS5U,EAAKwL,EAAIgB;AAE7B,GAAI/R,OAAOwb,KACV,IACC,GAAIC,GAAMD,KAAKE,MAAM3K,EAAItR,OAAO+H,cAC5B2T,EAASM,EAAIN,QAAU3b,KAAKsZ,SAAS/G,IAAO,UAC5CkJ,EAAMQ,EAAIR,KAAOlJ,EAAG,GACpBmJ,EAAMO,EAAIP,KAAOnJ,EAAG,EAGxB,OAFAxM,GAAKyV,oBAAoBC,EAAKC,EAAKC,EAAQM,OAC3ClW,GAAKoW,iBAEJ,MAAM5b,IAMT,GAFAgR,EAAIjK,cAAc,SAEbiK,EAAItR,OAAOwH,YAIf,MAHGzH,MAAK0F,KAAO1F,KAAK0F,IAAIqM,WACvB/R,KAAK0F,IAAIqM,UAAU,eAAgBQ,EAAIhB,EAAItR,SAErCD,KAAKoc,YAAY7J,EAGzB,IAAI8J,GAAK9K,EAAI5H,QAAQ,gBACrB,KAAK0S,EAAK1V,OAAQ,MAAO3G,MAAKoc,YAAY7J,EAE1C,KAAK,GAAIpI,GAAE,EAAGA,EAAEkS,EAAK1V,OAAQwD,IAAI,CAC1B,GAAIyR,GAAKS,EAAKlS,GAChBwR,EAASC,EAAKtL,aAAa,QAC3BmL,EAAMG,EAAKtL,aAAa,OACxBoL,EAAME,EAAKtL,aAAa;;AAE5BvK,EAAKyV,oBAAoBC,EAAIC,EAAIC,EAAOC,GAEzC7V,EAAKoW,kBAENC,YAAY,SAAS7J,GACpB,GAAIA,EACH,IAAK,GAAIpI,GAAI,EAAGA,EAAIoI,EAAG5L,OAAQwD,UACvBnK,MAAKwE,aAAa+N,EAAGpI,KAE/BgS,eAAe,WACVnc,KAAKuE,WAAWvE,KAAKuE,aAEH,QAAjBvE,KAAK0F,IAAI+T,QAAkBzZ,KAAK0F,IAAIgU,MAAQ1Z,KAAKkE,YAAYyC,QACjE3G,KAAKmZ,WACNnZ,KAAK+R,UAAU,0BACV/R,KAAKkE,YAAYyC,QACrB3G,KAAK+R,UAAU,kBAYjBuK,KAAK,SAASC,GACbvc,KAAK0F,IAAM6W,EACPvc,KAAK0F,IAAI8W,UACZxc,KAAK0F,IAAI8W,SAASxc,OAIpByc,iBAAiB,SAASrK,GACzBpS,KAAKoG,YAAY,gBAAgBgM;;EAElCsK,YAAY,SAAS9O,KAErB+O,yBAAyB,SAASC,GACjC5c,KAAKoG,YAAY,sBAAsBwW,IASxCC,cAAe,SAASC,EAAUC,GACjCD,EAAWA,GAAY,IAEvB9c,KAAK6a,MAAQkC,IAAQ,GAAK/T,OAAQC,UAClCjJ,KAAKgd,cAAe,EACpBhd,KAAKid,QAAU,KACfjd,KAAKkd,cAAe,EAEpBld,KAAKoG,YAAY,gBAAgB,SAASqV,EAAIE,EAAOD,EAAIyB,GACxDnd,KAAKod,gBAAgB3B,EAAKE,EAAQD,EAAKyB,KAExCnd,KAAKoG,YAAY,aAAa,WAC7BpG,KAAKqd,YAGN,IAAIC,GAAOtd,IACXQ,QAAO+c,YAAY,WAClBD,EAAKE,cACHV,IAQJM,gBAAiB,SAAS3B,EAAKE,EAAQD,EAAKyB,GAC3C,MAAc,aAAVxB,GACH3b,KAAKgd,cAAe;CACb,IAEA,GAQTK,SAAU,WAKT,MAJIrd,MAAKgd,eACRhd,KAAKgd,cAAe,EACpBhd,KAAKwd,eAEC,GAMRC,WAAY,SAAShX,EAAIC,GACxB,MAAI1G,MAAKkd,cACD,GAEPld,KAAKkd,cAAe,EAErBld,KAAKid,QAAUjd,KAAKid,SAAW,GAAItd,sBAAoB,GAEvDK,KAAKid,QAAQnd,OAAM,EACnBE,KAAKid,QAAQ7c,SAASsG,MACtB1G,MAAKid,QAAQrW,QAAQH,KAQtBiX,GAAI,SAASxT,GACZ,MAAIA,GAAKI,WAAmBJ,EAAKI,WAAWC,UACrC,IAQRoT,GAAI,SAASC,GAEZ,IAAK,GADDtM,MACKnH,EAAE,EAAGA,EAAIyT,EAAIjX,OAAQwD,IAC7BmH,EAAInH,GAAGnK,KAAK0d,GAAGE,EAAIzT,GAEpB,OAAOmH,IAMRkM,WAAY,WACX,GAAIF,GAAOtd,KACPwF,EAAUxF,KAAK0F,IAAIkT,YAAY,EAAE,WACjCnS,EAAMzG,KAAK+D,gBAAgBvB,aAAaxC,KAAK+D,kBAAkB,YAAY/D,KAAK6a,MAAM,eAAerV,GAAS6U,KAAK;;AACvH5T,EAAMA,EAAIwB,QAAQ,gBAAgB,IAClCjI,KAAKyd,WAAWhX,EAAK,WACpB,GAAIoX,GAAOP,EAAKL,QAAQtT,QAAQ,aAChC2T,GAAK5X,IAAIoT,YAAY,EAAE,UAAUwE,EAAKI,GAAGG,EAAK,IAE9C,IAAIC,GAAOR,EAAKL,QAAQtT,QAAQ,WAChC,IAAImU,EAAKnX,OAAO,CACf2W,EAAKjF,cAAe,CAEpB,KAAK,GAAIlO,GAAE,EAAGA,EAAE2T,EAAKnX,OAAQwD,IAAK,CACjC,GAAI4T,GAASD,EAAK3T,GAAGmG,aAAa,UAC9BiC,EAAKuL,EAAK3T,GAAGmG,aAAa,MAC1BjD,EAASyQ,EAAK3T,GAAGmG,aAAa,SAClC,QAAQyN,GACP,IAAK,WACJT,EAAKvL,UAAU,kBAAkB+L,EAAK3T,GAAIoI,EAAIlF,GAC9C,MACD,KAAK,UACJiQ,EAAKvL,UAAU,kBAAkB+L,EAAK3T,GAAIoI,EAAIlF,GAC9C,MACD,KAAK,UACJiQ,EAAKvL,UAAU,kBAAkB+L,EAAK3T,GAAIoI,EAAIlF;;EAKjDiQ,EAAKjF,cAAe,EAGrBiF,EAAKJ,cAAe,EACpBI,EAAO,SAON9c,OAAOqD,gBAAkBA,cAAcyC,UAAU0X,gBACpDna,cAAcyC,UAAU0X,cAAcna,cAAcyC,UAAUgW,KAC9DzY,cAAcyC,UAAUgW,KAAK,SAAS5W,GACrC1F,KAAKge,cAActY,GACnBA,EAAIuY,eAAeje,KAEnBA,KAAKkX,mBAAmB,QAAO,GAC/BlX,KAAK+D,kBAAqD,IAAnC/D,KAAK+D,gBAAgBrB,QAAQ,KAAS,IAAI,KAAK,iBAIxEwF,YAAYiI,WAAW,UAAW,SAASzM,EAAGC,EAAGC,GAChD,GAAIuP,GAAUvP,EAAE,GAAGoE,YAEnB,QAAQzC,UAAUoN,OAAOuL,YACxB,IAAK;AACJ1d,OAAO6P,MAAM8C,EACb,MACD,KAAK,UACJ3S,OAAO2d,QAAQC,IAAIjL,MAQtB9N,gBAAgBE,WAEhBA,UAAU8Y,gBAAkB,SAASjR,EAAI3M,EAAOH,GAC3C8M,EAAGkR,oBACNlR,EAAGkR,oBAAoB7d,EAAOH,GAAS,GAE9B8M,EAAGoF,aACZpF,EAAGoF,YAAY,KAAK/R,EAAOH,IAI7BiF,UAAUgZ,WAAa,WAoBtB,QAASC,KACR,OACCC,EAAIje,OAAOwV,YAActU,SAASE,gBAAgB8c,YAClDC,EAAIne,OAAO2V,aAAezU,SAASE,gBAAgBgd,cAGrD,QAASC,GAAOnb,EAAEC,GACjB,MAAOD,GAAE+a,GAAK9a,EAAE8a,GAAK/a,EAAEib,GAAKhb,EAAEgb,EAzB/B,GAAIG,GAAUN,GACd/N,aAAYjQ,OAAO,SAAS,WAC3B,GAAIue,GAAUP,GAIVK,GAAOC,EAASC,KACnBve,OAAOyW,aAAa1R,UAAUyZ;AAC9BzZ,UAAUyZ,cAAcxe,OAAO8T,WAAW,WACrC/O,UAAUwM,UAAU,0BACvBxM,UAAU0Z,cACV1Z,UAAUwM,UAAU,+BAEnB,MAEJ+M,EAAUC,IAaXxZ,UAAUgZ,WAAa,cAExBhZ,UAAU+W,KAAK,SAAS/J,EAAG2M,EAAKtR,GAC/BsR,EAAKA,GAAO3Z,UAAU4Z,eACtBvR,EAAKA,GAAM,OAER5N,KAAKof,MACPpf,KAAKqf,gBAGNrf,KAAKof,KAAmB,gBAAN7M,GAAgB7Q,SAAS+T,eAAelD,GAAIA,EAG1DvS,KAAKsf,YACR/Z,UAAU+Z,aAEX/Z,UAAU2Z,KAAK5C,OAGftc,KAAKuf,QACLvf,KAAKwf,SAAQ,EACbxf,KAAKyf,QAAS3X,OAAgC,cAAvBpG,SAASkN;AAChC5O,KAAK0f,SAAU5X,OAAiD,IAAxCuB,UAAUsF,WAAWjM,QAAQ,UAErD1C,KAAK2f,eACL3f,KAAK4f,iBACL5f,KAAK6f,cAEL7f,KAAKue,aACLve,KAAK8f,qBAEL9f,KAAK+f,YACLxa,UAAUwM,UAAU,uBACpB/R,KAAKggB,eAAed,EAAKtR,IAI1BrI,UAAU0a,IACTC,iBAAiB,GACjBC,YAAY,GACZC,aAAa,GACbC,aAAa,GACbC,mBAAmB,GACnBC,WAAW,GACXC,WAAW,EACXC,YAAY,EACZC,aAAa,IACbC,kBAAkB,IAEnBpb,UAAU4U,MACTyG,UAAU,GACVC,YAAY,IAEbtb,UAAUwa,UAAU;AACnB,GAAItB,GAAIze,KAAK8gB,GAAK9gB,KAAKof,KAAKV,YAAY1e,KAAKigB,GAAGQ,YAC5C9B,EAAI3e,KAAK+gB,GAAK/gB,KAAKof,KAAKR,aAAa5e,KAAKigB,GAAGO,WAG7CQ,EAAQhhB,KAAKihB,YAAY,EAAGjhB,KAAKigB,GAAGE,YAAYngB,KAAKigB,GAAGG,aACxDc,EAAQlhB,KAAKihB,YAAY,GAAGjhB,KAAKigB,GAAGE,WAExCngB,MAAKmhB,OAAOnhB,KAAKuf,KAAsB,gBAAE,GAAGd,EAAEze,KAAKigB,GAAGmB,WAAW,EAAE,GACnEphB,KAAKmhB,OAAOnhB,KAAKuf,KAAqB,eAAE,GAAGd,EAAEuC,EAAQhhB,KAAKigB,GAAGI,aAAaa,EAAQlhB,KAAKigB,GAAGmB,YAAYphB,KAAKyf,QAAQ,GAAG,GAEtH,IAAI4B,GAAgBrhB,KAAKuf,KAAsB,gBAAE,GAAGnJ,YAChDiL,GAAgB,IAAGrhB,KAAKigB,GAAGmB,WAAaC,EAE5C,IAAIC,GAAOthB,KAAKigB,GAAGI,aAAargB,KAAKigB,GAAGmB,YAAYphB,KAAKyf,QAAQ,GAAG;;AACpEzf,KAAKmhB,OAAOnhB,KAAKuf,KAAmB,aAAE,GAAGd,EAAEE,GAAG2C,EAAO,GAAG,EAAEA,EAAO,IAElE/b,UAAU4b,OAAO,SAASjX,EAAKuU,EAAEE,EAAE9I,EAAEK,GACpChM,EAAKwC,MAAMmI,MAAM1S,KAAKof,IAAI,EAAE9C,GAAG,KAC/BvU,EAAKwC,MAAMoI,OAAO3S,KAAKof,IAAI,EAAE5C,GAAG,KAC5BxY,UAAUQ,OAAO,IACpBuD,EAAKwC,MAAM7L,KAAKgV,EAAE,KAClB3L,EAAKwC,MAAM3L,IAAImV,EAAE,OAGnB3Q,UAAUoa,aAAa,WAGtB,IAAK,GADD6B,GAAIxhB,KAAKof,KAAKzX,qBAAqB,OAC9BwC,EAAE,EAAGA,EAAIqX,EAAI7a,OAAQwD,IAAI,CACjC,GAAIsX,GAAWD,EAAIrX,GAAGqJ,WAAa,GAC/BkO,EAAaF,EAAIrX,GAAGmG,aAAa,SAAW,EAC5CmR,KAAYA,EAAaA,EAAW7Z,MAAM,KAAK,IAC9C5H,KAAKuf,KAAKkC,KAAazhB,KAAKuf,KAAKkC,OACtCzhB,KAAKuf,KAAKkC,GAAYhX,KAAK+W,EAAIrX,GAG/B,IAAIwX,GAAQpc,UAAU2P,OAAOC,OAAOuM,GAAYD,EAC3B,iBAAVE,IAAsBD,IAAeF,EAAIrX,GAAGoC,YACrDoV,EAAQD,EAAW9Z,MAAM,KAAK;AAC5B+Z,IACHH,EAAIrX,GAAGoC,UAAWoV,KAIrBpc,UAAU8Z,cAAgB,WACzB,IAAK,GAAI3b,KAAK1D,MAAKuf,KAClB,GAAIvf,KAAK4hB,OAAOle,GACf,IAAK,GAAIyG,GAAE,EAAGA,EAAInK,KAAKuf,KAAK7b,GAAGiD,OAAQwD,IACtCnK,KAAKuf,KAAK7b,GAAGyG,GAAG+J,QAAU,IAC7BlU,MAAKof,KAAKzT,cAAgB,KAC1B3L,KAAKof,KAAKhU,YAAc,KACxBpL,KAAKof,KAAKxU,YAAc,KACxB5K,KAAKof,KAAKjU,UAAY,KACtBnL,KAAKof,KAAKyC,WAAa,KACvB7hB,KAAKof,KAAK0C,cAAgB,MAG3Bvc,UAAUsa,YAAY,WACrB,IAAK,GAAInc,KAAK1D,MAAKuf,KAClB,GAAIvf,KAAK4hB,OAAOle,GACf,IAAK,GAAIyG,GAAE,EAAGA,EAAInK,KAAKuf,KAAK7b,GAAGiD,OAAQwD,IACtCnK,KAAKuf,KAAK7b,GAAGyG,GAAG+J,QAAQ3O,UAAUqc,OAAOle,EAC5C1D,MAAKof,KAAKzT,cAAc,SAASpL;AAAI,OAAO,GAC5CP,KAAKof,KAAKhU,YAAY,SAAS7K,GACzBgF,UAAUwc,mBACdxc,UAAUyc,eAAezhB,GAAGE,QAE9BT,KAAKof,KAAKxU,YAAY,SAASrK,GACzBgF,UAAU0c,oBACd1c,UAAU2c,eAAe3hB,GAAGE,QAE9BT,KAAKof,KAAKjU,UAAU,SAAS5K,GACvBgF,UAAU0c,oBACd1c,UAAU4c,aAAa5hB,GAAGE,QAE5BT,KAAKof,KAAKyC,WAAW,SAASthB,GAC7BgF,UAAU6c,cAAc7hB,GAAGE,QAE5BT,KAAKof,KAAK0C,cAAgB,SAASvhB,GAClC,GAAI6R,GAAK7R,GAAGE,MACR4hB,EAAMjQ,EAAGpF,QAAQoF,EAAGrF,WACpBuV,EAAc/c,UAAUwM,UAAU,iBAAkBxM,UAAUgd,cAAcF,GAAMjQ;;AACtF,MAAOkQ,KAGT/c,UAAUid,OAAO,SAASjQ,GACrBvS,KAAKyiB,YAAYlQ,IACrBhN,UAAUmd,mBACV1iB,KAAK2Z,UAAS,GACd3Z,KAAK2iB,WACL3iB,KAAKyiB,WAAalQ,EAClBvS,KAAK4iB,YAAYrQ,KAElBhN,UAAUod,SAAS,SAASpQ,GAC3B,IAAIA,GAAMA,GAAIvS,KAAKyiB,WAAnB,CACA,GAAI3c,GAAE9F,KAAKyiB,UACXziB,MAAKyiB,WAAa,KACd3c,GAAK9F,KAAK6iB,SAAS/c,IAAI9F,KAAK4iB,YAAY9c,KAE7CP,UAAU+T,SAAS,WAClB,OACC1L,KAAM5N,KAAK8iB,MACX5D,KAAM,GAAIlW,MAAKhJ,KAAK+iB,OACpBC,SAAU,GAAIha,MAAKhJ,KAAKijB,WACxBC,SAAU,GAAIla,MAAKhJ,KAAKmjB,WACxBC,UAAWpjB,KAAKqjB,SAChBC,YAAatjB,KAAKujB;AAClBC,UAAWxjB,KAAKyjB,WAChBC,UAAW1jB,KAAKyiB,WAChBkB,SAAU3jB,KAAK2jB,SACfC,QAAS5jB,KAAK6jB,SACdC,UAAW9jB,KAAK+jB,aAGlBxe,UAAUqc,QACToC,aAAa,SAASzjB,GAErB,GAAIgF,UAAU0c,mBAKb,MAJI1hB,GAAEiL,gBACLjL,EAAEiL,iBACHjL,EAAE8S,cAAe,EACjB9N,UAAU0c,oBAAqB,GACxB,CAGR,IAAIgC,GAAM1jB,EAAEA,EAAEyM,OAAOvM,MAAMsM,WACvBwF,EAAKhN,UAAUgd,cAAc0B,EAIjC,IAFA1jB,EAAIA,GAAKE,MAEJ8R,GAGJ,IAAMhN,UAAUwM,UAAU,WAAWQ,EAAGhS,KAAOgF,UAAUoN,OAAOuR,SAAW,WAF3E3e,WAAUwM,UAAU,gBAAgBxM,UAAU4e,cAAc5jB,GAAG2e,KAAM3e;;AAKtE,GAAIgS,GAAMhN,UAAUoN,OAAO6P,OAAQ,CAElCjd,UAAUid,OAAOjQ,EACjB,IAAI6R,GAAOH,EAAIzQ,SACY,KAAvB4Q,EAAK1hB,QAAQ,UAChB6C,UAAUqc,OAAOpM,QAAQ4O,EAAKxc,MAAM,KAAK,GAAGK,QAAQ,QAAQ,KAAKsK,OAElEhN,WAAUmd,oBACN,GAAI1Z,OAAOC,WAAW1D,UAAUke,YAAY,GAAK,KACpDle,UAAUod,YAIb0B,oBAAoB,WACnB9e,UAAUqc,OAAO0C,oBAAoB,EAAE,KAExCA,oBAAoB,SAASC,EAAMC,GAClCjf,UAAUya,eAAeza,UAAU2Z,KAAKuF,IACvClf,UAAU2Z,KAAK3Z,UAAUud,MAAM,UAAUvd,UAAUwd,OAAQyB,GAAM,EAAGjf,UAAUud;AAEhF4B,qBAAqB,WAChBnf,UAAUwM,UAAU,8BACvBxM,UAAUya,eAAeza,UAAU4Z,iBAGrCwF,YAAY,WACX,GAAIrhB,GAAOtD,KAAKsQ,aAAa,QACzB1C,EAAOtK,EAAKshB,UAAU,EAAGthB,EAAKuhB,OAAO,QACzCtf,WAAUya,eAAeza,UAAUwd,MAAMnV,IAE1C4H,SACCsP,SAAS,SAASvS,GACjB,GAAI3O,GAAI2B,UAAU2P,OAAOC,OAAO4P,gBAChCxf,WAAUyf,gBAAgBphB,EAAG2B,UAAU2P,OAAOC,OAAO8P,uBAAwB,WAAY1f,UAAU2f,YAAY3S,MAEhH4S,KAAK,SAAS5S,GAAKhN,UAAU4f,KAAK5S,IAClC6S,KAAK,SAAS7S;AAAKhN,UAAUoU,UAAS,IACtCN,QAAQ,SAAS9G,GAAKhN,UAAU8f,aAAa9S,IAC7CmC,OAAO,SAASnC,GAAKhN,UAAUoU,UAAS,MAG1CpU,UAAUyf,gBAAkB,SAAS7R,EAAS4B,EAAOrO,GACpD,IAAKyM,EACJ,MAAOzM,IACR,IAAI4e,IAAS3R,KAAMR,EACf4B,KACHuQ,EAAKvQ,MAAQA,GACVrO,IACH4e,EAAK5e,SAAW,SAASqK,GACpBA,GACHrK,MAGHjB,OAAOmR,QAAQ0O,IAEhB/f,UAAUggB,YAAY,SAASC,EAAMC,EAAIllB,GACxC,GAAImlB,KACAF,IAA2D,OAAlDA,EAAMG,YAAYpM,WAAWqM,MAAM,aAC/CF,EAAOF,EACPA,EAAQ,KAGT,IAAI/K,GAAwD,KAAnDza,KAAK2S,OAAOkT,gBAAgB7lB,KAAK2S,OAAOmT,UAC5CN,KAAOA,EAAQE,EAAKK,YAAY5jB,KAAKC,MAAOmD,UAAU4Z,eAAgBlW,UAAUwR,GAAGA;;AACxF,GAAIsL,GAAa,GAAI/c,MAAKwc,EAC1B,KAAKC,EAAI,CACR,GAAIO,GAAahmB,KAAK2S,OAAOsT,UACzBD,GAAaD,EAAWG,aAC3BH,EAAWI,SAASH,GACpBR,EAAQO,EAAW9c,WAEpBwc,EAAMD,EAAMvc,UAAUwR,EAEvB,GAAI2L,GAAW,GAAIpd,MAAKyc,EAGrBM,GAAW9c,WAAamd,EAASnd,WACnCmd,EAASC,QAAQD,EAASnd,UAAUwR,GAErCiL,EAAKK,WAAaL,EAAKK,YAAYA,EACnCL,EAAKU,SAAYV,EAAKU,UAAUA,EAChCV,EAAK/R,KAAO+R,EAAK/R,MAAM3T,KAAKkV,OAAOC,OAAOqO,UAC1CkC,EAAKnT,GAAKvS,KAAK6jB,SAAW7jB,KAAK2W,MAC/B3W,KAAK+jB,WAAW,WAEhB/jB,KAAKsmB,UAAS,EACdtmB,KAAK8R,SAAS4T,GACd1lB,KAAK+R,UAAU,kBAAkB/R,KAAK6jB,SAAStjB,IAC/CP,KAAKsmB,UAAS,EAEdtmB,KAAKumB,eACLvmB,KAAKmiB,aAAa5hB,IAEnBgF,UAAU6c,cAAc,SAAS7hB,EAAE8hB;AAElC,GADAA,EAAMA,GAAM9hB,EAAEyM,QAAQzM,EAAEwM,YACpB/M,KAAK2S,OAAOuR,SAAhB,CACA,GAAI5gB,IAAQ+e,EAAI7O,WAAW,IAAI5L,MAAM,KAAK,EAC1C,QAAOtE,GACN,IAAK,mBACL,IAAK,uBACL,IAAK,iBACL,IAAK,kBACJ,IAAKiC,UAAUoN,OAAO6T,gBAAiB,KACvCxmB,MAAKulB,YAAYvlB,KAAKmkB,cAAc5jB,GAAG2e,KAAK,KAAK3e,EACjD,MACD,KAAK,gBACL,IAAK,iBACL,IAAK,kBACL,IAAK,iBACL,IAAK,qBACL,IAAK,sBACJ,GAAIgS,GAAKvS,KAAKuiB,cAAcF,EAC5B,KAAKriB,KAAK+R,UAAU,cAAcQ,EAAGhS,IAAK;;AACtCP,KAAK2S,OAAO8T,qBAAuBzmB,KAAKihB,cAAgBjhB,KAAK6iB,SAAStQ,GAAImU,SAAW1mB,KAAK2S,OAAO6P,OACpGxiB,KAAKqlB,aAAa9S,GAElBvS,KAAKmlB,KAAK5S,EACX,MACD,KAAK,iBACL,IAAK,oBACJ,MACD,SACC,GAAIzM,GAAI9F,KAAK,YAAYsD,EACzB,IAAIwC,EACHA,EAAEuB,KAAKrH,KAAKO,OAGZ,IAAI8hB,EAAIrW,YAAcqW,GAAOriB,KAC5B,MAAOuF,WAAU6c,cAAc7hB,EAAE8hB,EAAIrW,eAM1CzG,UAAUohB,kBAAoB,SAASC,GACtC,GAAIC,GAAS,CACb,IAAI7mB,KAAK8mB,MAAM,CAGd,IAAI,GADAjS,GAAQ,EACJ1K,EAAE,EAAGA,EAAInK,KAAK8mB,MAAMngB,SAAWkO,EAAO1K,IAC7C0K,EAAQ7U,KAAK8mB,MAAM3c,EASpB,IALC0c,EADEhS,EACO+R,EAAQ/R,EAER,EAGN7U,KAAK+mB,SACR,IAAK,GAAI5c,GAAE,EAAM0c,GAAH1c,EAAWA,IACpBnK,KAAK+mB,SAAS5c,IACjB0c;;CAEJ,MAAOA,IAGRthB,UAAUyhB,uBAAyB,SAASC,GAE3C,GAAIjnB,KAAK8mB,MAEJ,CACJ,GAAID,GAAS7mB,KAAK2mB,kBAAkBM,EAAIpR,EAIxC,OAHAoR,GAAIpR,EAAE1T,KAAK+kB,IAAIlnB,KAAK8mB,MAAMngB,OAAO,EAAGxE,KAAKof,IAAI,EAAEpf,KAAKglB,KAAKN,GAAQ,IAEjEI,EAAI/Q,EAAE/T,KAAKof,IAAI,EAAEpf,KAAKglB,KAAW,GAANF,EAAI/Q,GAAMlW,KAAK2S,OAAOmT,UAAU9lB,KAAK2S,OAAOyU,eAAe,GAAGpnB,KAAK2S,OAAOsT,YAAY,GAAGjmB,KAAK2S,OAAOmT,WACzHmB,EANP,MAAOA,IAUT1hB,UAAU8hB,cAAc,SAASjV,GAChC,GAAI6U,GACAtjB,EAAEjC,SAASD,KACXgZ,EAAI/Y,SAASE,eAGZqlB,GAFAnf,QAAUsK,EAAGkV,QAASlV,EAAGmV,OAG1B1R,EAAEzD,EAAGzF,SAAWhJ,EAAE5B,YAAY0Y,EAAE1Y,YAAY,GAAK4B,EAAEzB,WACnDgU,EAAE9D,EAAGvF,SAAWlJ,EAAE9B,WAAW4Y,EAAE5Y,WAAW,GAAK8B,EAAE1B;GAH5C4T,EAAEzD,EAAGkV,MAAOpR,EAAE9D,EAAGmV,OAO1BN,EAAIpR,GAAGnV,gBAAgBV,KAAKof,OAAOpf,KAAKihB,YAAY,EAAEjhB,KAAKigB,GAAGE,aAC9D8G,EAAI/Q,GAAGpV,eAAed,KAAKof,MAAMpf,KAAKigB,GAAGmB,YAAYphB,KAAKwnB,WAAW,GAAGxnB,KAAKigB,GAAGI,aAAargB,KAAKuf,KAAmB,aAAE,GAAG1d,UAC1HolB,EAAI7U,GAAKA,CAET,IAAI9R,GAAUN,KAAK,SAASA,KAAK8iB,MACjC,IAAIxiB,EACH,MAAOA,GAAQ+G,KAAKrH,KAAKinB,EAI1B,IAAKjnB,KAAKihB,YAEH,CACN,GAAI4F,GAAS7mB,KAAK2mB,kBAAkBM,EAAIpR,EACxC,KAAK7V,KAAK8mB,QAAU9mB,KAAKynB,OACxB,MAAOR,EACR,IAAIS,GAAG,CACP,KAAKA,EAAG,EAAGA,EAAK1nB,KAAKynB,OAAOE,QAAQhhB,UAC/B3G,KAAKynB,OAAOE,QAAQD,GAAIT,EAAI/Q,GADWwR,KAG5CT,EAAI/Q,EAAE/T,KAAKglB,KAA+C,IAAxChlB,KAAKof,IAAI,EAAGsF,GAAyB,EAAjB1kB,KAAKof,IAAI,EAAEmG,EAAG,IAAS,GAAG1nB,KAAK2S,OAAOmT;CAExEvgB,UAAUwe,YAA4B,SAAd/jB,KAAK8iB,SAChCmE,EAAI/Q,EAAuD,IAApD/T,KAAKof,IAAI,EAAEpf,KAAKglB,KAAKN,GAAQ,GAAoB,EAAjB1kB,KAAKof,IAAI,EAAEmG,EAAG,IAAS,GAAG1nB,KAAK2S,OAAOmT,WAGvD,QAAnB9lB,KAAK+jB,YACJxe,UAAUqiB,mBAAqBriB,UAAUoN,OAAOkV,kBACnDZ,EAAIF,UAAW,EAEV/mB,KAAKumB,YAAYuB,gBACrB9nB,KAAKumB,YAAYuB,cAAgB9nB,KAAK+nB,uBAAuB/nB,KAAKumB,YAAYR,WAAY/lB,KAAKumB,YAAYH,UAAY4B,OAAO,EAAGC,OAAO,UAI3IhB,EAAIpR,EAAE,MAxBNoR,GAAMjnB,KAAKgnB,uBAAuBC,EA0BnC,OAAOA,IAER1hB,UAAUmd,iBAAiB,WAC1B,IAAI,GAAI1Z,OAAOC,WAAW1D,UAAUke,YAAY,GAAK,KAAOle,UAAU8d,SAAS;AAC9E,GAAIzf,GAAE2B,UAAU2P,OAAOC,OAAO+S,eAE9B3iB,WAAUyf,gBAAgBphB,EAAG2B,UAAU2P,OAAOC,OAAOgT,sBAAuB,WAAa5iB,UAAUoU,SAASpU,UAAUoN,OAAOyV,oBAC1HxkB,IACF5D,KAAK6jB,SAAW7jB,KAAKqoB,UAAYroB,KAAK+jB,WAAa,QAItDxe,UAAU+iB,eAAe,SAAS9C,EAAO+C,GACxC,MAAO/C,IAAmG,KAA3F,GAAKxc,MAAKzD,UAAU0d,WAAYuF,oBAAoB,GAAKxf,MAAKwc,GAAQgD,sBAA4BD,EAAK,GAAG,IAG1HhjB,UAAUkjB,gBAAkB,SAASC,EAASC,GAC7C,QAASC,GAAKC,EAASC,EAASC,GAC/B,SAAU5mB,KAAK2T,IAAI+S,EAAUC,GAAWC,GAGzC,IAAKL,IAAW1oB,KAAKqoB,UACpB,OAAO;;AAER,GAAIW,GAAQ,IACXC,EAAQ,CAGT,WAAWjpB,KAAKqoB,UAAU7C,QAAW,GAAIxc,MAAShJ,KAAKqoB,UAAU7C,MAAQwD,GAAUJ,EAAKF,EAAQ7S,EAAG8S,EAAQ9S,EAAGoT,IAAUL,EAAKF,EAAQxS,EAAGyS,EAAQzS,EAAG+S,KAGpJ1jB,UAAUyc,eAAe,SAASzhB,GACjC,GAAIP,KAAK+jB,WAAW,CACnB,GAAIkD,GAAIjnB,KAAKqnB,cAAc9mB,EAC3B,IAAI0mB,EAAIiC,cAAgBlpB,KAAKyoB,gBAAgBzoB,KAAKqoB,UAAWpB,GAAK,CACjE,GAAIzB,GAAOC,CAIX,IAHIzlB,KAAKqjB,UAAUrjB,KAAK6jB,UACvB7jB,KAAK0iB,oBAEF1iB,KAAK+jB,WACR,MAKD,IAHA/jB,KAAKqoB,UAAUpB,EACfjnB,KAAKqoB,UAAUc,WAAY,EAEN,UAAjBnpB,KAAK+jB,WAAqB,CAO7B,GANA/jB,KAAK0iB,mBACL1iB,KAAK2iB,SAAS3iB,KAAKyiB,YACnBziB,KAAKsmB,UAAS,EAEdd,EAAQxlB,KAAKopB,mBAAmBnC,GAAKhe;CAEhCjJ,KAAKqpB,YAAa,CACtB,GAAI/X,GAAMtR,KAAK+R,UAAU,wBAAyBxR,EAAGP,KAAK6jB,UAC1D,KAAKvS,EACJ,MAID,aADAtR,KAAKqpB,YAAY7D,GAIlBC,EAAMD,EACFC,GAAOzlB,KAAKqpB,WAGhB,IAAItD,GAAa,GAAI/c,MAAKhJ,KAAKqpB,aAC3BjD,EAAW,GAAIpd,MAAKyc,EACJ,QAAdzlB,KAAK8iB,OAAgC,QAAd9iB,KAAK8iB,OAChCiD,EAAWG,YAAcE,EAASF,YACnCH,EAAWuD,cAAgBlD,EAASkD,eACnClD,EAAW,GAAIpd,MAAKhJ,KAAKqpB,YAAY,MAIvCrpB,KAAK6jB,SAAS7jB,KAAK2W,MACnB3W,KAAK8R,SAASiU,EAAYK,EAAUpmB,KAAKkV,OAAOC,OAAOqO,UAAWxjB,KAAK6jB,SAAUoD,EAAIsC,QAErFvpB,KAAK+R,UAAU,kBAAkB/R,KAAK6jB,SAAStjB,IAC/CP,KAAKsmB,UAAS,EACdtmB,KAAK+jB,WAAW;;CAIjB,GACIre,GADA0M,EAAGpS,KAAK6iB,SAAS7iB,KAAK6jB,SAG1B,IAAqB,QAAjB7jB,KAAK+jB,WACRyB,EAAQxlB,KAAKijB,UAAUha,UAAqF,KAA1Ege,EAAI/Q,EAAElW,KAAK2S,OAAOmT,UAAgB,GAANmB,EAAIpR,EAAK,IAAKtQ,UAAUikB,iBAAiB,KAClGvC,EAAIwC,QAAUzpB,KAAKihB,cAAauE,GAA0C,IAAnCxlB,KAAKkf,KAAKwK,UAAUtX,EAAG2T,aACnEP,EAAQxlB,KAAKsoB,eAAe9C,GAExByB,EAAIF,UAAY/mB,KAAK2S,OAAOkV,iBAAmB7nB,KAAKihB,aACnDjhB,KAAK2pB,SACRjkB,EAAM1F,KAAK2pB,OAAO3pB,KAAK8iB,QACxBpd,EAAMA,IAAUsiB,OAAO,EAAGC,OAAO,OACjCxC,EAAY,EAAND,EAAUxlB,KAAK4pB,4BAA4BpE,EAAOxlB,KAAKumB,YAAYuB,cAAepiB,IAExF+f,EAAMrT,EAAGgU,SAASnd,WAAWmJ,EAAG2T,WAAW9c,UAAUuc;IAChD,CAGN,GAFAA,EAAQpT,EAAG2T,WAAW9c,UACtBwc,EAAMrT,EAAGgU,SAASnd,UACdjJ,KAAKihB,YAAa,CACrB,GAAI4I,GAAc7pB,KAAKijB,UAAUha,UAAUge,EAAI/Q,EAAElW,KAAK2S,OAAOmT,UAAU,KAASmB,EAAIwC,OAAO,EAAE,MAC7F,IAAkB,SAAdzpB,KAAK8iB,MAER,GADA+G,EAAc7pB,KAAKsoB,eAAeuB,GAAa,GAC3C7pB,KAAK8pB,iBAAmB,CAC3B,GAAIC,GAAM,KACNF,IAAetkB,UAAU2Z,KAAK8K,UAAU,GAAIhhB,MAAKyc,EAAIsE,EAAI,IAAI9gB,YAChEuc,EAAQqE,EAAcE,OAEvBtE,GAAMoE,MAGH5C,GAAIgD,kBACPzE,EAAQqE,EAERpE,EAAMoE,MAGRpE,GAAMzlB,KAAKkf,KAAK8K,UAAU,GAAIhhB,MAAKoJ,EAAGgU,SAASnd,UAAY,IAAIA,UAAUge,EAAI/Q,EAAElW,KAAK2S,OAAOmT,UAAU,IACrG9lB,KAAKuf,KAAmB,aAAE,GAAG7S,MAAMwd,OAAO,YACxB,QAAdlqB,KAAK8iB,OAAiC,OAAd9iB,KAAK8iB,SAChC2C,EAAMzlB,KAAKsoB,eAAe7C;;AAE5B,GAAuB,YAAnBzlB,KAAK+jB,WACR,GAAI0B,GAAOzlB,KAAKqpB,YAAY,CAC3B,GAAIc,GAAQlD,EAAIkD,QAASnqB,KAAKihB,cAAgBgG,EAAIwC,OAAQ,MAAY,EACtEjE,GAAQC,GAAKwB,EAAIkD,MAAM,EAAEA,GACzB1E,EAAMzlB,KAAKqpB,aAAac,GAA8B,IAAtBnqB,KAAK2S,OAAOmT,eAE5CN,GAAQxlB,KAAKqpB,gBAGL7D,IAALC,IACHA,EAAID,EAA4B,IAAtBxlB,KAAK2S,OAAOmT,WAGzB,GAAIsE,GAAU,GAAIphB,MAAKyc,EAAI,GACvB4E,EAAY,GAAIrhB,MAAKwc,EAEzB,IAAGjgB,UAAUoN,OAAO2X,kBACjBD,GAAa9kB,UAAU0d,YAAcwC,GAAOlgB,UAAU4d,WAAW,CAClE,GAAIoH,GAAW9E,EAAM4E,GACjBA,GAAa9kB,UAAU0d,WAC1BoH,EAAY,GAAIrhB,MAAKzD,UAAU0d,WAC/BwC,EAAM,GAAIzc,OAAMqhB,EAAYE,KAE5B9E,EAAM,GAAIzc,MAAKzD,UAAU4d,WACzBkH,EAAY,GAAIrhB,OAAMyc,EAAM8E,GAE7B;GAAIH,GAAU,GAAIphB,MAAKyc,EAAI,GAM7B,IAAIzlB,KAAKihB,cACP1b,UAAUoN,OAAO6X,aACfjlB,UAAUklB,qBAAuBxD,EAAIpR,GAAK7V,KAAK0qB,iBAAiB3E,WAAY,GAAI/c,MAAKyc,GAAMW,SAAS,GAAIpd,MAAKyc,MAAW,GAAIzc,MAAKyc,GAAKS,YAAclmB,KAAK2S,OAAOgY,WAAW,CAC9K,GAAIJ,GAAW9E,EAAM4E,EACjBN,EAAM/pB,KAAKijB,UAAUha,UAAiB,GAANge,EAAIpR,EAAK,GAAI,GACjD4P,GAAMlgB,UAAU2Z,KAAK8K,UAAU,GAAIhhB,MAAK+gB,IACxCtE,EAAIU,SAASnmB,KAAK2S,OAAOgY,WACzBP,EAAU,GAAIphB,MAAKyc,EAAI,GACD,QAAnBzlB,KAAK+jB,aACPsG,EAAY,GAAIrhB,OAAMyc,EAAM8E,IAK9B,GAAKvqB,KAAKihB,aAAgBmJ,EAAQQ,WAAWP,EAAUO,WAAaR,EAAQlE,WAAWlmB,KAAK2S,OAAOgY,WAAcplB,UAAUslB,WAG1H,GAFAzY,EAAG2T,WAAWsE;AACdjY,EAAGgU,SAAS,GAAIpd,MAAKyc,GACjBzlB,KAAK2S,OAAOmY,cAAc,CAE7B,GAAIC,GAAKxlB,UAAUga,KAAmB,aAAE,GAAG1d,SAC3C7B,MAAKif,cACL1Z,UAAUga,KAAmB,aAAE,GAAG1d,UAAYkpB,MAE9C/qB,MAAK4iB,YAAY5iB,KAAK6jB,SAEpB7jB,MAAKihB,aACRjhB,KAAKgrB,aAAahrB,KAAK6jB,SAAS,SAASoH,GACxCA,EAAEzX,WAAW,iBAIfxT,KAAK+R,UAAU,eAAgB/R,KAAK6jB,SAAU7jB,KAAK+jB,WAAYxjB,SAGhE,IAAIgF,UAAU0M,WAAW,eAAe,CACvC,GAAIM,GAAKvS,KAAKuiB,cAAchiB,EAAEyM,QAAQzM,EAAEwM,WACxC/M,MAAK+R,UAAU,eAAeQ,EAAGhS,MAIpCgF,UAAU2c,eAAe,SAAS3hB,EAAE8hB;AAGnC,GAAgB,GAAZ9hB,EAAE2K,SAGFlL,KAAK2S,OAAOuR,WAAYlkB,KAAK+jB,WAAjC,CACA1B,EAAMA,GAAM9hB,EAAEyM,QAAQzM,EAAEwM,UACxB,IAAIme,GAAY7I,EAAI7O,WAAa6O,EAAI7O,UAAU5L,MAAM,KAAK,EAE1D,QAAQsjB,GACP,IAAK,qBACL,IAAK,sBACAlrB,KAAKihB,cACRjhB,KAAK+jB,WAAW,OACjB,MACD,KAAK,iBACL,IAAK,iBACJ/jB,KAAK+jB,WAAW,MAChB,MACD,KAAK,mBACJ/jB,KAAK+jB,WAAW,UACZ1B,EAAI7O,WAAW,IAAI9Q,QAAQ,wBAA0B,EACxD6C,UAAUukB,kBAAmB,EAE7BvkB,UAAUukB,kBAAmB,CAE9B,MACD,KAAK,mBACL,IAAK;AACL,IAAK,iBACL,IAAK,kBACL,IAAK,sBACJ9pB,KAAK+jB,WAAW,QAChB,MACD,KAAK,GACJ,GAAI1B,EAAIrW,WACP,MAAOzG,WAAU2c,eAAe3hB,EAAE8hB,EAAIrW,WACvC,MACD,SACC,KAAKzG,UAAU0M,WAAW,gBAAkB1M,UAAUwM,UAAU,eAAgBmZ,MAC3E7I,EAAIrW,YAAcqW,GAAOriB,MAAqB,YAAbkrB,EACpC,MAAO3lB,WAAU2c,eAAe3hB,EAAE8hB,EAAIrW,WAGxChM,MAAK+jB,WAAW,KAChB/jB,KAAK6jB,SAAS,KAGhB,GAAI7jB,KAAK+jB,WAAW,CACnB,GAAIxR,GAAKvS,KAAKuiB,cAAcF,EAC5B,IAAKriB,KAAK2S,OAAO,QAAQ3S,KAAK+jB,aAAgB/jB,KAAK+R,UAAU,gBAAgBQ,EAAIvS,KAAK+jB,WAAYxjB,IAE7F;AAKJ,GAJAP,KAAK6jB,SAAUtR,GAEXvS,KAAKqjB,UAAUrjB,KAAK6jB,UAAa7jB,KAAKqjB,UAA+B,UAAnBrjB,KAAK+jB,aAC1D/jB,KAAK0iB,oBACF1iB,KAAK+jB,WACR,MAED/jB,MAAKumB,YAAchhB,UAAU4lB,YAAYnrB,KAAK6iB,SAAS7iB,KAAK6jB,eAC5D7jB,KAAKqoB,UAAYroB,KAAKqnB,cAAc9mB,GACpCP,KAAKqoB,UAAU7C,OAAS,GAAIxc,UAX5BhJ,MAAK+jB,WAAW/jB,KAAK6jB,SAAS,EAchC7jB,KAAKqpB,YAAY,OAIlB9jB,UAAU6lB,wBAA0B,SAAS3qB,GAC5C,GAAI8oB,KACJ,KAAI,GAAIpf,KAAK1J,GACU,IAAnB0J,EAAEzH,QAAQ,OACZ6mB,EAAOpf,IAAK,EAGd,OAAOof,IAERhkB,UAAU8lB,4BAA8B,SAASC,EAAOC;AACvD,GAAIC,GAAUxrB,KAAKorB,wBAAwBE,GACvCG,EAAgBzrB,KAAKorB,wBAAwBG,EACjD,KAAI,GAAIphB,KAAKshB,GACRD,EAAQrhB,UACJohB,GAAcphB,IAMxB5E,UAAU4c,aAAa,SAAS5hB,GAC/B,IAAIA,GAAiB,GAAZA,EAAE2K,SAAe3F,UAAUoN,OAAO+Y,MAA3C,CACA,GAAI1rB,KAAK+jB,YAAc/jB,KAAK6jB,SAAS,CACpC7jB,KAAKuf,KAAmB,aAAE,GAAG7S,MAAMwd,OAAO,SAG1C,IAAItG,GAAU5jB,KAAK6jB,SACfjW,EAAO5N,KAAK+jB,WAEZ4H,GAAS3rB,KAAKqoB,WAAaroB,KAAKqoB,UAAUc,UAE1C/W,EAAGpS,KAAK6iB,SAAS7iB,KAAK6jB,SAC1B,IAAI8H,IAAU3rB,KAAKumB,YAAYqF,eAAiB5rB,KAAKumB,YAAYR,YAAc3T,EAAG2T,WAAW9c,WAAWjJ,KAAKumB,YAAYR,WAAW9c,WAAamJ,EAAGgU,SAASnd,WAAWjJ,KAAKumB,YAAYH,SAASnd,WAAW;AAC5M,GAAI4iB,GAAyB,YAAjB7rB,KAAK+jB,UACjB,IAAK/jB,KAAK+R,UAAU,wBAAwBK,EAAI7R,EAAGsrB,EAAQ7rB,KAAKumB,cAY/D,GADAvmB,KAAK6jB,SAAW7jB,KAAK+jB,WAAa,KAC9B8H,GAAU7rB,KAAK2S,OAAOmZ,eAAe,CAIxC,GAHA9rB,KAAK2iB,WACL3iB,KAAKyjB,WAAW,GAAIza,MAEhBhJ,KAAKihB,aAAejhB,KAAK2S,OAAOoZ,oBAAsB/rB,KAAK2S,OAAO6P,OAErE,MADAjd,WAAUwM,UAAU,aAAc6R,EAAShW,EAAMrN,IAC1CP,KAAKqlB,aAAazB,EAE1B5jB,MAAKqoB,WAAY,EACjBroB,KAAKyiB,WAAaziB,KAAKqjB,SAAWO,MAE7B5jB,MAAKyjB,YACTzjB,KAAK+R,UAAU8Z,EAAO,eAAe,kBAAkBjI,EAAQ5jB,KAAK6iB,SAASe,SAvB3EiI,GACH7rB,KAAKklB,YAAY9S,EAAGG,IAAI,IAExBvS,KAAKumB,YAAYqF,cAAe;AAChC5rB,KAAKqrB,4BAA4BjZ,EAAIpS,KAAKumB,aAC1ChhB,UAAUymB,WAAW5Z,EAAIpS,KAAKumB,aAC9BvmB,KAAK4iB,YAAYxQ,EAAGG,KAqBnBvS,KAAKqoB,YAAcroB,KAAKqoB,UAAUc,WAAanpB,KAAKqoB,aAAc,IAAOroB,KAAKisB,mBAClF1mB,UAAUwM,UAAU,aAAc6R,EAAShW,EAAMrN,IAElDP,KAAK6jB,SAAW,KAChB7jB,KAAK+jB,WAAW,KAChB/jB,KAAKqoB,UAAU,OAGhB9iB,UAAU2mB,qBAAuB,WAChC,MAAIlsB,MAAKmsB,YAAcnsB,KAAKosB,SAC3BpsB,KAAKqsB,cAAe,GACb,IAEA,GAGT9mB,UAAU0Z,YAAY,WACrB,GAAIqN,GAAOtsB,KAAKA,KAAK8iB,MAAQ,QAO7B,OANGwJ,GACFA,GAAK,GAELtsB,KAAKusB;AAGFvsB,KAAKksB,wBACD,MAERlsB,MAAKisB,oBAGN1mB,UAAUinB,aAAe,SAAS5e,GACjC,SAAUrI,UAAUqI,EAAM,UACxBrI,UAAU2Z,KAAKtR,EAAM,WAAarI,UAAUknB,UAAU7e,EAAM,UAAYrI,UAAUknB,UAAU7e,EAAM,iBAGrGrI,UAAUmnB,WAAa,SAASxN,EAAMtR,GACrCsR,EAAOA,GAAQlf,KAAK+iB,MACpBnV,EAAOA,GAAQ5N,KAAK8iB,KACpB,IAAIkB,GAAe,cAEdhkB,MAAK8iB,MAET9iB,KAAKof,KAAK5L,UAAYxT,KAAKof,KAAK5L,UAAUvL,QAAQ,iBAAmBjI,KAAK8iB,MAAO,iBAAmBlV,GADpG5N,KAAKof,KAAK5L,WAAa,kBAAoB5F,CAI5C,IAAI+e,GAAe3sB,KAAK8iB,OAASlV,GAAQ5N,KAAK2S,OAAOia,gBAAmB5sB,KAAKuf,KAAKyE,GAAc,GAAGniB,WAAY;;AAG3G7B,KAAKA,KAAK8iB,MAAQ,UAAYlV,GAAQ5N,KAAK8iB,OAASlV,GACvD5N,KAAKA,KAAK8iB,MAAQ,UAAS,GAE5B9iB,KAAK0iB,kBAEL,IAAImK,GAAgB,eAChB7sB,MAAKuf,KAAKsN,KACb7sB,KAAKuf,KAAKsN,GAAe,GAAG7gB,WAAWG,YAAYnM,KAAKuf,KAAKsN,GAAe,IAC5E7sB,KAAKuf,KAAKsN,GAAiB,MAG5B7sB,KAAK8iB,MAAQlV,EACb5N,KAAK+iB,MAAQ7D,EACblf,KAAKihB,YAA6B,SAAdjhB,KAAK8iB,MAEzB9iB,KAAKwnB,UAAY,CAEjB,IAAIsF,GAAO9sB,KAAKuf,KAAkB,WAClC,IAAGuN,EACF,IAAK,GAAI3iB,GAAI,EAAGA,EAAI2iB,EAAKnmB,OAAQwD,IAAK,CACrC,GAAI7G,GAAOwpB,EAAK3iB,GAAGqJ,SACnBlQ,GAAOA,EAAK2E,QAAQ,WAAY,IAC5B6kB,EAAK3iB,GAAGmG,aAAa,SAAWtQ,KAAK8iB,MAAQ,SAChDxf,GAAc,WACfwpB,EAAK3iB,GAAGqJ,UAAYlQ,EAItBtD,KAAKif,cAEqB,gBAAf0N,KACV3sB,KAAKuf,KAAKyE,GAAc,GAAGniB,UAAY8qB;;EAEzCpnB,UAAUya,eAAiB,SAASd,EAAMtR,GACpC5N,KAAK+R,UAAU,sBAAuB/R,KAAK8iB,MAAO9iB,KAAK+iB,MAAOnV,GAAQ5N,KAAK8iB,MAAO5D,GAAQlf,KAAK+iB,UACpG/iB,KAAK0sB,WAAWxN,EAAMtR,GACtB5N,KAAK+R,UAAU,gBAAiB/R,KAAK8iB,MAAO9iB,KAAK+iB,UAElDxd,UAAUwnB,iBAAmB,SAAS5iB,EAAEtJ,EAAK4Z,EAAEkE,EAAGqO,GACjDA,EAAaA,GAAc,CAE3B,IAAIC,GAAKvrB,SAAS0G,cAAc,MAChC6kB,GAAKzZ,UAAY,gBAEdxT,KAAKysB,UAAUzsB,KAAK8iB,MAAM,mBAE5BmK,EAAKzZ,WAAa,IAAMxT,KAAKysB,UAAUzsB,KAAK8iB,MAAM,iBAAiBrI,GAGpE,IAAI5F,GAAQ7U,KAAK8mB,MAAM3c,GAAG,CAER,UAAdnK,KAAK8iB,OAA0B,IAAN3Y,GAAWnK,KAAK2S,OAAOua,cACnDD,EAAKzZ,WAAa;AAClB3S,GAAY,GAEbb,KAAKmhB,OAAO8L,EAAMpY,EAAO7U,KAAKigB,GAAGI,aAAa,EAAGxf,EAAMmsB,GACvDC,EAAK1gB,UAAUvM,KAAKysB,UAAUzsB,KAAK8iB,MAAM,eAAerI,EAAEza,KAAK8iB,OAC/DnE,EAAE9S,YAAYohB,IAGf1nB,UAAU4nB,iBAAmB,SAASC,EAAMC,GAC3C,GAAIrmB,GAAQ,CACZ,KAAKzB,UAAU0b,YAAY,CAC1B,GAAIqM,GAAU/nB,UAAU2Z,KAAK,OAAO3Z,UAAUud,MAAM,OAChDwK,KAASD,EAAKC,EAAQF,IAC1BpmB,EAAQ7E,KAAKC,OAAOirB,EAAGpkB,UAAUmkB,EAAKnkB,WAAW,OAElD,MAAOjC,IAERzB,UAAUgoB,oBAAsB,WAE/B,MAAOvtB,MAAKkf,KAAKlf,KAAK8iB,MAAM,UAAU,GAAI9Z,MAAKhJ,KAAK+iB,MAAM9Z,aAG3D1D,UAAUioB,cAAgB,WACzB,GAAIC,GAAKztB,KAAKutB,sBACVG,EAAKnoB,UAAU2Z,KAAKuF,IAAIgJ,EAAI,EAAGztB,KAAK8iB;;AACxC,IAAKvd,UAAU0b,YAAY,CAC1B,GAAIqM,GAAU/nB,UAAU2Z,KAAK,OAAO3Z,UAAUud,MAAM,OAChDwK,KAASI,EAAKJ,EAAQG,IAE3B,MAAOC,IAERnoB,UAAUooB,kBAAoB,SAAS9Y,EAAOuY,EAAMC,GAEnD,GAAIO,GAAO/Y,EACP7N,EAAQhH,KAAKmtB,iBAAiBC,EAAMC,EAExCrtB,MAAK6tB,iBAAiBT,EAAMpmB,EAAO,MAAO,EAG1C,KAAK,GAFD8mB,GAAY9mB,EAAQhH,KAAK4nB,kBAEpBzd,EAAE,EAAKnD,EAAFmD,EAASA,IAClBnK,KAAK+mB,SAAS5c,IACjBnK,KAAK8mB,MAAM3c,GAAK,EAChB2jB,KAEA9tB,KAAK8mB,MAAM3c,GAAGhI,KAAK4T,MAAM6X,GAAME,EAAU3jB,IAE1CyjB,GAAM5tB,KAAK8mB,MAAM3c,GACjBnK,KAAKynB,OAAOtd,IAAInK,KAAK8mB,MAAM3c,EAAE,IAAI,IAAInK,KAAKynB,OAAOtd,EAAE,KAAKnK,KAAKihB,YAAY,EAAEjhB,KAAKigB,GAAGE,YAAY,GAEhGngB,MAAKynB,OAAmB,WAAIzgB,EAE5BhH,KAAKynB,OAAOzgB,GAAUhH,KAAK8mB,MAAM9f,EAAM,GAAGhH,KAAKynB,OAAOzgB,EAAM,IAAO;;EAEpEzB,UAAUwoB,oBAAsB,SAASzhB,EAAKuI,EAAOhU,GACpD,GAAI+C,GAAI5D,KAAK2S,MACb3S,MAAKmhB,OAAO7U,EAAKuI,EAAM,EAAGjR,EAAEwjB,cAAcxjB,EAAE+mB,UAAU/mB,EAAEqiB,YAAaplB,EAAKb,KAAKigB,GAAGE,YAAY,EAAG,IAGlG5a,UAAUyoB,eAAiB,SAASC,EAAQC,GAE3C,GAAIC,GAAK,GAAInlB,MAAKzD,UAAU0d,WAC3ByK,EAAK,GAAI1kB,MAAKzD,UAAU4d,WACxBiL,EAAQpuB,KAAKkf,KAAK8K,UAAWzkB,UAAU4Z,gBAEpCyO,EAAO1sB,SAAS+sB,EAAOvhB,MAAMmI,MAAM,IACnC4F,EAAI,GAAIzR,MAAKhJ,KAAKijB,WAClBjc,EAAQhH,KAAKmtB,iBAAiBgB,EAAIT,EACtC1tB,MAAK2tB,kBAAkBC,EAAMO,EAAIT,EACjC,IAAI7sB,GAAK,CAETotB,GAAO1hB,UAAY,EACnB,KAAK,GAAIpC,GAAE,EAAKnD,EAAFmD,EAASA,IAAI,CAI1B,GAHKnK,KAAK+mB,SAAS5c,IAClBnK,KAAK+sB,iBAAiB5iB,EAAEtJ,EAAK4Z,EAAEwT;CAE3BjuB,KAAKihB,YAAY,CACrB,GAAIoN,GAAO3sB,SAAS0G,cAAc,OAC9BkmB,EAAM,kBACN7T,GAAExR,WAAamlB,EAAMnlB,YAAWqlB,EAAM,wBAEtCtuB,KAAK4nB,mBAAqB5nB,KAAK+mB,SAAS5c,KAC3CmkB,GAAO,qBAGRD,EAAO7a,UAAY8a,EAAI,IAAItuB,KAAKysB,UAAU8B,gBAAgB9T,EAAE2T,GAE5DpuB,KAAK+tB,oBAAoBM,EAAQruB,KAAK8mB,MAAM3c,GAAItJ,GAEhDqtB,EAAUriB,YAAYwiB,GACtBruB,KAAK+R,UAAU,cAAcsc,EAAQ5T,IAGtC5Z,GAAMb,KAAK8mB,MAAM3c,GACjBsQ,EAAEza,KAAKkf,KAAKuF,IAAIhK,EAAE,EAAE,OACpBA,EAAIza,KAAKkf,KAAKsP,UAAU/T,KAI1BlV,UAAUgnB,aAAa,WAGtB,GAAKvsB,KAAKysB,UAAUzsB,KAAK8iB,MAAQ,SAAjC,CAEA,GAAInE,GAAI3e,KAAKuf,KAAqB,eAAE,GAChC2O,EAAYluB,KAAKuf,KAAmB,aAAE,GACtC3b,EAAI5D,KAAK2S;;AAEbgM,EAAEpS,UAAY,GAEd2hB,EAAU3hB,UAAY,EAEtB,IAAI9J,IAAQmB,EAAEsgB,WAActgB,EAAE6qB,YAAgB,qBAAuB,KAAQ7qB,EAAEsgB,WAActgB,EAAE8qB,UAAc,mBAAqB,GAClIR,GAAU1a,UAAY,eAAiB/Q,EAEvCzC,KAAK2uB,WACL3uB,KAAK8mB,SACL9mB,KAAKynB,QAAU3S,OAAQ,GACvB9U,KAAKwnB,UAAY,EAEjBxnB,KAAK+f,WAEL,IAAItF,GAAE0T,EACFV,EAAKztB,KAAKutB,sBACbG,EAAKnoB,UAAUioB,eAWhB,IATA/S,EAAI0T,EAAKnuB,KAAKihB,YAAc1b,UAAU2Z,KAAK0P,WAAWnB,GAAMA,EAG5DztB,KAAKijB,UAAUxI,EACfza,KAAKuf,KAAmB,aAAE,GAAGhT,UAAUvM,KAAKysB,UAAUzsB,KAAK8iB,MAAM,SAAS2K,EAAGC,EAAG1tB,KAAK8iB,OAErF9iB,KAAKmjB,UAAYuK,EACjBnoB,UAAUyoB,eAAerP,EAAGuP;AAExBluB,KAAKihB,YACRjhB,KAAK6uB,mBAAmBX,EAAUT,EAAGU,OAGrC,IADAnuB,KAAK8uB,mBAAmBZ,EAAUT,EAAGU,GACjCvqB,EAAEmrB,UAAW,CAChB,GAAIlC,GAAgB,eAEjB7sB,MAAKuf,KAAKsN,KACZ7sB,KAAKuf,KAAKsN,GAAe,GAAG7gB,WAAWG,YAAYnM,KAAKuf,KAAKsN,GAAe,IAC5E7sB,KAAKuf,KAAKsN,GAAiB,KAG5B,IAAImC,GAAUhvB,KAAKuf,KAAsB,gBAAE,GACvCxe,EAAMiuB,EAAQ5Y,aAAepW,KAAKuf,KAAqB,eAAE,GAAGnJ,aAAa,EAEzE6Y,EAAKvtB,SAAS0G,cAAc,MAChC6mB,GAAGzb,UAAYqZ,EACfoC,EAAGviB,MAAMwiB,WAAW,SACpBlvB,KAAKmhB,OAAO8N,EAAI9sB,KAAKof,IAAIvhB,KAAKynB,OAAOznB,KAAKynB,OAAO0H,YAAYnvB,KAAKigB,GAAGG,aAAe,EAAG,GAAI,EAAG,EAAGrf,GACjGmtB,EAAUliB,WAAWmI,aAAa8a,EAAGf;;AAErC,GAAIkB,GAAKH,EAAGxiB,WAAU,EACtB2iB,GAAG5b,UAAYqZ,EAAc,QAC7BuC,EAAG1iB,MAAMwiB,WAAW,SACpBlvB,KAAKmhB,OAAOiO,EAAIpvB,KAAKigB,GAAGE,YAAa,EAAG,EAAGpf,GAE3CkuB,EAAGpjB,YAAYujB,GACfpvB,KAAKuf,KAAKsN,IAAgBoC,EAAGG,GAC7BpvB,KAAKuf,KAAKsN,GAAe,GAAG3Y,QAAUlU,KAAK4hB,OAAOoC,gBAIrDze,UAAUupB,mBAAmB,SAASnrB,EAAE8pB,EAAGU,GAC1C,GAAIvqB,GAAElC,SAAS0G,cAAc,MAC7BxE,GAAE4P,UAAU,kBAGZ,KAAK,GADD0L,GAAO,GAAIlW,MAAK,KAAK,EAAE,EAAEhJ,KAAK2S,OAAOsT,WAAW,EAAE,GAC7C9b,EAAyB,EAAvBnK,KAAK2S,OAAOsT,WAAc9b,EAAInK,KAAK2S,OAAOgY,UAAWxgB,IAAK,CACpE,GAAIklB,GAAG3tB,SAAS0G,cAAc,MAC9BinB,GAAG7b,UAAU,iBACb6b,EAAG3iB,MAAMoI,OAAO9U,KAAK2S,OAAOyU,cAAcpnB,KAAKyf,QAAQ,EAAE,GAAG;;AAC5D,GAAI5K,GAAQ7U,KAAKigB,GAAGE,WAChBngB,MAAK2S,OAAOua,cACfrY,GAAgB,EAChBwa,EAAG7b,WAAa,0BAEjB6b,EAAG3iB,MAAMmI,MAAQA,EAAQ,KACzBwa,EAAG9iB,UAAUhH,UAAUknB,UAAU6C,WAAWpQ,GAE5Ctb,EAAEiI,YAAYwjB,GACdnQ,EAAKlf,KAAKkf,KAAKuF,IAAIvF,EAAK,EAAE,QAE3Bvb,EAAEkI,YAAYjI,GACV5D,KAAK2S,OAAO4c,cACf5rB,EAAE9B,UAAY7B,KAAK2S,OAAOyU,cAAcpnB,KAAK2S,OAAO4c,YAAYvvB,KAAK2S,OAAOsT,cAG9E1gB,UAAU4Z,aAAe,WACxB,MAAG5Z,WAAUoN,OAAO6c,SACZ,GAAIxmB,MAAKzD,UAAUoN,OAAO6c,UAE3B,GAAIxmB,OAGZzD,UAAUsoB,iBAAmB,SAASM,EAAIhhB,EAAGS,EAAM4W,EAAMiL,GACxDzvB,KAAK+mB;AACL/mB,KAAK4nB,kBAAoB,CACzB,IAAIzP,GAAS5S,UAAU,UAAUvF,KAAK8iB,MAEtC,IAAI3K,EAEH,IAAK,GADDuX,GAAW,GAAI1mB,MAAKmlB,GACfhkB,EAAE,EAAKgD,EAAFhD,EAAKA,IACdgO,EAAOuX,KACV1vB,KAAK4nB,mBAAqB,EAC1B5nB,KAAK+mB,SAAS5c,IAAK,EACfslB,GACHtiB,KAEFuiB,EAAWnqB,UAAU2Z,KAAKuF,IAAIiL,EAAUlL,EAAM5W,GAC3CrI,UAAU2Z,KAAKtR,EAAO,YACxB8hB,EAAWnqB,UAAU2Z,KAAKtR,EAAO,UAAU8hB,KAK/CnqB,UAAUoqB,oBAAsB,SAASrjB,EAAKmhB,EAAmBU,GAoBhE,QAASyB,GAAcC,GACtB,GAAIlR,GAAIpZ,UAAUkiB,OAAO3S,MAIzB,OAHyCO,UAAtC9P,UAAUkiB,OAAOE,QAAQkI,EAAM,KACjClR,EAAIpZ,UAAUkiB,OAAOE,QAAQkI,EAAM,IAAMtqB,UAAUkiB,OAAOE,QAAQkI,IAAM,IAElElR,EAtBR,GAAI+O,GAAGnoB,UAAU2Z,KAAKuF,IAAIgJ,EAAG,EAAE,SAC9BqC,EAAa,GAAI9mB,MAAKmlB,GACnB4B,EAAKxqB,UAAU4Z;;AACnBnf,KAAKkf,KAAK8K,UAAU+F,GACpB/vB,KAAKkf,KAAK8K,UAAUmE,EAKpB,KAAK,GAHD6B,GAAK7tB,KAAKglB,KAAKhlB,KAAKC,OAAOsrB,EAAGzkB,UAAUklB,EAAGllB,WAAa,OAAoB,GAC5EgnB,KAEK9lB,EAAE,EAAM,GAAHA,EAAMA,IAAK,CACxB,GAAI+lB,IAAelwB,KAAK8mB,MAAM3c,IAAI,GAAG,CAC3B,KAANA,GAAWnK,KAAK2S,OAAOua,cAC1BgD,GAA0B,GAE3BD,EAAM9lB,GAAG,iBAAiB+lB,EAAW,MAgBtC,IAAK,GAJDC,GAAa,EAEbC,EAAK,0CACLC,KACKlmB,EAAE,EAAK6lB,EAAF7lB,EAAQA,IAAI,CACzBimB,GAAM,MAEN,KAAK,GADDE,GAAanuB,KAAKof,IAAIqO,EAAczlB,GAAK5E,UAAU0a,GAAGU,kBAAmB,GACpEnQ,EAAE,EAAK,EAAFA,EAAKA,IAAK,CACvB4f,GAAM,KAEN,IAAI9B,GAAM,EACHb,GAAHU,EACHG,EAAI,aACIH,GAAIT,EACZY,EAAI,YACIH,EAAGllB,WAAW8mB,EAAG9mB,YACzBqlB,EAAI,WAEDtuB,KAAK4nB,mBAAqB5nB,KAAK+mB,SAASvW,KAC3C8d,GAAO;AAGR8B,GAAM,WAAW9B,EAAI,IAAItuB,KAAKysB,UAAU8D,iBAAiBpC,EAAG4B,GAAI,KAChE,IAAIS,GAAa,iBACbC,EAAa,gBACP,KAANjgB,GAAWxQ,KAAK2S,OAAOua,cAC1BsD,GAAc,yBACdC,GAAc,0BAEVzwB,KAAK4nB,mBAAsB5nB,KAAK+mB,SAASvW,GAI7C4f,GAAM,0BAHNA,GAAM,eAAeK,EAAW,KAAKzwB,KAAKysB,UAAUiE,UAAUvC,GAAI,SAClEiC,GAAM,eAAeI,EAAW,KAAKP,EAAMzf,GAAK,WAAW8f,EAAa,oBAIzED,EAAe5lB,KAAK0jB,EACpB,IAAIwC,GAAMxC,EAAGvD,SACbuD,GAAGnuB,KAAKkf,KAAKuF,IAAI0J,EAAG,EAAE,OAClBA,EAAGvD,UAAY+F,EAAM,IACxBxC,EAAK,GAAInlB,MAAKmlB,EAAGyC,cAAezC,EAAG0C,WAAYF,EAAM,EAAG,GAAI;;CAE9DP,GAAM,QAEN7qB,UAAUkiB,OAAOE,QAAQxd,GAAKgmB,EAC9BA,GAAcP,EAAczlB,GAE7BimB,GAAM,WAENpwB,KAAKijB,UAAY6M,EACjB9vB,KAAKmjB,UAAYgL,EAEjB7hB,EAAIC,UAAU6jB,EAEdpwB,KAAK2uB,UAEL,KAAK,GADDmC,GAAOxkB,EAAI3E,qBAAqB,OAC3BwC,EAAE,EAAGA,EAAEkmB,EAAe1pB,OAAQwD,IAAK,CAC3C,GAAImC,GAAMwkB,EAAQ,EAAF3mB,EAAK,GACjB+U,EAAOmR,EAAelmB,EAC1BnK,MAAK2uB,SAASzP,GAAQ5S,EAEvB,IAAK,GAAInC,GAAE,EAAGA,EAAEkmB,EAAe1pB,OAAQwD,IAAK,CAC3C,GAAI+U,GAAOmR,EAAelmB,EAC1BnK,MAAK+R,UAAU,cAAe/R,KAAK2uB,SAASzP,GAAOA,IAKpD,MAAOlf,MAAKmjB,WAGb5d,UAAUspB,mBAAmB,SAASlrB,EAAE8pB,EAAGU,GAE1C,GAAIT,GAAGnoB,UAAU2Z,KAAKuF,IAAIgJ,EAAG,EAAE,SAG3BsC,EAAKxqB,UAAU4Z,cACnBnf,MAAKkf,KAAK8K,UAAU+F,GACpB/vB,KAAKkf,KAAK8K,UAAUmE,EAEpB,IAAI6B,GAAK7tB,KAAKglB,KAAKhlB,KAAKC,OAAOsrB,EAAGzkB,UAAUklB,EAAGllB,WAAa,OAAoB,GAE5E6L,EAAU3S,KAAK4T,MAAMpS,EAAEib,aAAaoR,GAAQhwB,KAAKigB,GAAGU;;AAKxD,MAHA3gB,MAAKynB,OAAO3S,OAASA,EAAS9U,KAAKigB,GAAGU,kBACtC3gB,KAAKynB,OAAOE,WAELpiB,UAAUoqB,oBAAoBhsB,EAAG8pB,EAAIU,IAG7C5oB,UAAUwrB,SAAW,SAASC,EAAUha,GAEvC,IAAK,GADDia,GAAWjxB,KAAK2S,OAAOue,SAASD,SAC3B9mB,EAAE,EAAGA,EAAE8mB,EAAStqB,OAAQwD,IAChC,GAAG8mB,EAAS9mB,GAAGgnB,QAAUH,EAExB,IAAK,GADDI,GAAUH,EAAS9mB,GAAGinB,QACjB5gB,EAAE,EAAGA,EAAE4gB,EAAQzqB,OAAQ6J,IAC/B,GAAG4gB,EAAQ5gB,GAAGwG,KAAOA,EACpB,MAAOoa,GAAQ5gB,GAAGmR,KAKtB,OAAO,IAERpc,UAAU8rB,iBAAmB,SAASC,EAAWC,GAChD,GAAI9e,GAAOlN,UAAUisB,WAAWF,EAChC,OAAK7e,IACLA,EAAKuG,OAAO,EAAGvG,EAAK9L,QACpB8L,EAAKhI,KAAKxE,MAAMwM,EAAM8e,OACtBhsB,UAAUwM,UAAU,oBACpBxM,UAAUksB,iBACH,IALW;;EAOnBlsB,UAAU4lB,YAAc,SAASlnB,EAAQytB,GACxC,GAAIvnB,GAAGrE,EAAGiL,CAIV,KAFA2gB,EAAQA,MAEHvnB,EAAE,EAAGA,EAAEunB,EAAM/qB,OAAQwD,GAAG,EAC5B,GAAGlG,IAAWytB,EAAMvnB,GACnB,MAAOunB,GAAMvnB,EAAE,EAEjB,IAAIlG,GAA2B,gBAAVA,GAAoB,CAGxC,IAFA8M,KACAjL,GAAKwJ,MAAMtG,KAAK2oB,OAAOC,OAAOC,SACzB1nB,EAAE,EAAGA,EAAErE,EAAEa,OAAQwD,IACjBlG,YAAkB6B,GAAEqE,KACvB4G,EAAS5G,EAAI,GAAIrE,GAAEqE,GAAGlG,GAAU,GAAI6B,GAAEqE,GAExCunB,GAAMjnB,KAAKxG,EAAQ8M,EACnB,KAAK5G,IAAKlG,GACL6tB,OAAOxrB,UAAU8T,eAAenU,MAAMhC,GAASkG,MAClD4G,EAAO5G,GAAK5E,UAAU4lB,YAAYlnB,EAAOkG,GAAIunB,IAGhD,MAAO3gB,IAAU9M,GAElBsB,UAAUymB,WAAa,SAAShf,EAAQ0I,GACvC,IAAK,GAAIsB,KAAOtB,GACXA,EAAO0E,eAAepD,KACzBhK,EAAOgK,GAAOtB,EAAOsB,GAGvB,OAAOhK,IAERzH,UAAU6jB,mBAAqB,SAASnC,GACvC,GAAIzB,GAAMxlB,KAAKijB,UAAUha,UAAyE,KAA9Dge,EAAI/Q,EAAElW,KAAK2S,OAAOmT,UAAqC,IAA1B9lB,KAAKihB,YAAY,EAAEgG,EAAIpR,GAAM;;AAC9F,MAAO,IAAI7M,MAAKhJ,KAAKsoB,eAAe9C,KAGrCjgB,UAAU4e,cAAgB,SAAS4N,GAClC,GAAI9K,GAAMjnB,KAAKqnB,cAAc0K,EAC7B,QACC7S,KAAKlf,KAAKopB,mBAAmBnC,GAC7B+K,QAAQ/K,EAAI+K,UAGdzsB,UAAU0sB,OAAS,SAAS/nB,EAAMsY,GAC7BtY,GAAQA,EAAKmM,QACZrW,KAAK2S,OAAO+Y,MACflrB,OAAO8T,WAAW,WACjBpK,EAAKmM,SACJ,MAEEmM,GAAUtY,EAAKsY,QAAQtY,EAAKsY,SAChCtY,EAAKmM,WAMR9Q,UAAUwiB,uBAAuB,SAASoG,EAAI+D,EAAIxsB,GACjD,GAKCysB,GALGC,EAAYF,EAAI/D,EAChBkE,EAAS3sB,EAAI4sB,kBAAoB5sB,EAAI6sB,iBAAkB,EACvDpa,EAASnY,KAAK,UAAUA,KAAK8iB,OAE7B0P,EAAa,CASjB,KAPI9sB,EAAI+sB,QACPD,EAAaxyB,KAAK0yB,gBAAgBhtB,EAAKyoB,GACvCgE,EAAWnyB,KAAK0yB,gBAAgBhtB,EAAKwsB,IAErCC,EAAWhwB,KAAKC,MAAMgwB,EAAU,GAAG,GAAG,IAAK,IAGxBD,EAAbK,GAAsB;AAC5B,GAAIrrB,GAAQ5B,UAAU2Z,KAAKuF,IAAIyN,GAAKxsB,EAAIsiB,OAAQtiB,EAAIuiB,OAEnDmK,IADGja,GAAUA,EAAO+Z,GACNA,EAAG/qB,EAEJkrB,EAEdH,EAAK/qB,EACLgrB,IAED,MAAOC,IAER7sB,UAAUqkB,4BAA4B,SAASxD,EAAUgM,EAAW1sB,EAAK6iB,GACxE,GAAI4F,GAAK,GAAInlB,MAAKod,GACduM,EAAMpK,EAAO,GAAK,CAGtB,IAAI7iB,EAAI4sB,mBAAqB5sB,EAAI6sB,gBAAgB,CAChD,GAAInE,EAEHA,GADG7F,EACoB,GAAd4F,EAAGjI,WAAciI,EAAG7E,aAAoC,IAAnB5jB,EAAIugB,YAAY,GAEnC,IAAlBvgB,EAAIilB,WAAW,IAAuB,GAAdwD,EAAGjI,WAAciI,EAAG7E,aACtD,IAAIsJ,GAA2C,IAAhCltB,EAAIilB,UAAYjlB,EAAIugB,YAC/B4M,EAAO1wB,KAAKglB,MAAOiL,EAAY,IAAYhE,GAAUwE,EACzDR,IAAaS,GAAQ,KAAQD,GAAW,GAAK,IAG9C,GAICT,GAJGD,EAAK,GAAIlpB,MAAc,EAATod,EAAWgM,EAAUO,GACnCxa,EAASnY,KAAK,UAAUA,KAAK8iB,OAE7B0P,EAAa,CASjB,KAPI9sB,EAAI+sB,QACPD,EAAaxyB,KAAK0yB,gBAAgBhtB,EAAKyoB;AACvCgE,EAAWnyB,KAAK0yB,gBAAgBhtB,EAAKwsB,IAErCC,EAAWhwB,KAAKC,MAAMgwB,EAAU,GAAG,GAAG,IAAK,IAGnBD,EAASQ,GAA3BH,EAAWG,GAAoB,CACrC,GAAIxrB,GAAQ5B,UAAU2Z,KAAKuF,IAAI0J,EAAIzoB,EAAIsiB,OAAO2K,EAAKjtB,EAAIuiB,OACnD9P,IAAUA,EAAOgW,KACpBiE,IAAcjrB,EAAMgnB,GAAIwE,EACxBR,GAAYQ,GAGbxE,EAAKhnB,EACLqrB,GAAYG,EAGb,MAAOP,IAGR7sB,UAAUklB,kBAAoB,WAC7B,MAAGzqB,MAAK2pB,QAAU3pB,KAAK2pB,OAAO3pB,KAAK8iB,OAC3B9iB,KAAK2pB,OAAO3pB,KAAK8iB,OAChB9iB,KAAK8yB,QAAU9yB,KAAK8yB,OAAO9yB,KAAK8iB,OACjC9iB,KAAK8yB,OAAO9yB,KAAK8iB,OAElB,MAGRvd,UAAUwtB,sBAAwB,WACjC,MAAG/yB,MAAK2pB,QAAU3pB,KAAK2pB,OAAO3pB,KAAK8iB,OAC3B9iB,KAAK2pB,OAAO3pB,KAAK8iB,OAAOkQ,WACvBhzB,KAAK8yB,QAAU9yB,KAAK8yB,OAAO9yB,KAAK8iB,OACjC9iB,KAAK8yB,OAAO9yB,KAAK8iB,OAAOqO,OAEzB;;EAGR5rB,UAAU0tB,gBAAkB,WAC3B,GAAIza,GAAQxY,KAAKsZ,UACjB,OAAQtZ,MAAKof,MAAQ5G,EAAM0G,MAAQ1G,EAAM5K,MAE1CrI,UAAU2tB,kBAAoB,WAC7B,GAAI1a,GAAQxY,KAAKsZ,UACjB,OAA6B,QAAtBd,EAAM8K,aAA8CjO,SAAtBmD,EAAM8K,aAE5C/d,UAAU2Z,MACT5C,KAAK,WAGJ,IAAK,GAFD6W,GAAI5tB,UAAU2P,OAAOgK,KAAKkU,YAC1BttB,EAAIP,UAAU2P,OAAOgK,KAAKmU,oBACrBlpB,EAAI,EAAGA,EAAIgpB,EAAExsB,OAAQwD,IAC7BrE,EAAEqtB,EAAEhpB,IAAIA,CAIT,KAAK,GAFDgpB,GAAI5tB,UAAU2P,OAAOgK,KAAKoU,WAC1BxtB,EAAIP,UAAU2P,OAAOgK,KAAKqU,mBACrBppB,EAAI,EAAGA,EAAIgpB,EAAExsB,OAAQwD,IAC7BrE,EAAEqtB,EAAEhpB,IAAIA,GAEV6f,UAAU,SAAS9K,GAClB,GAAIhT,GAAM,GAAIlD,MAAKkW;;AAQnB,MAPAA,GAAKiH,SAAS,GACdjH,EAAKsU,WAAW,GAChBtU,EAAKuU,WAAW,GAChBvU,EAAKwU,gBAAgB,GACjBxU,EAAKgH,aACPhH,EAAK0L,UAAY1e,EAAI0e,WAAa1L,EAAK2R,WAAa3kB,EAAI2kB,YAAc3R,EAAK0R,cAAgB1kB,EAAI0kB,gBAChG1R,EAAKmH,QAAQnH,EAAKyU,UAAY,MAAkB,GAAKzU,EAAKgH,aACpDhH,GAERwK,UAAU,SAASxK,GAClB,OAAQA,EAAKjW,UAAU,IAAgC,GAAzBiW,EAAKsJ,qBAAwB,OAE5DoG,WAAW,SAAS1P,GACnB,GAAIiL,GAAMjL,EAAK0U,QAKf,OAJIruB,WAAUoN,OAAOkhB,kBACR,IAAR1J,EAAWA,EAAM,EAChBA,KAECnqB,KAAKgqB,UAAUhqB,KAAKykB,IAAIvF,EAAK,GAAGiL,EAAM,SAE9C2J,YAAY,SAAS5U,GAEpB,MADAA,GAAK6U,QAAQ,GACN/zB,KAAKgqB,UAAU9K;AAEvB8U,WAAW,SAAS9U,GAEnB,MADAA,GAAK+U,SAAS,GACPj0B,KAAK8zB,YAAY5U,IAEzBsP,UAAU,SAAStP,GAClB,MAAOlf,MAAKgqB,UAAU9K,IAEvBgV,UAAU,SAAShV,EAAMiV,GACxB,GAAIC,GAAQ,GAAIprB,MAAKkW,EAAKjW,UAMvB,OAJHmrB,GAAML,QAAQK,EAAMxJ,UAAYuJ,GAC5BA,GAAO,IAAOjV,EAAKgH,YAAckO,EAAMlO,aACzCkO,EAAMxJ,UAAY1L,EAAK0L,WAAawJ,EAAMvD,WAAa3R,EAAK2R,YAAcuD,EAAMxD,cAAgB1R,EAAK0R,gBACtGwD,EAAM/N,QAAQ+N,EAAMT,UAAY,MAAkB,GAAKS,EAAMlO,aACpDkO,GAEX3P,IAAI,SAASvF,EAAKiV,EAAIvmB,GACrB,GAAIwmB,GAAM,GAAIprB,MAAKkW,EAAKjW,UACxB,QAAO2E,GACN,IAAK,MACJwmB,EAAQ7uB,UAAU2Z,KAAKgV,UAAUE,EAAOD,EACxC,MACD,KAAK,OACJC,EAAQ7uB,UAAU2Z,KAAKgV,UAAUE,EAAa,EAAND;;AACxC,KACD,KAAK,QAASC,EAAMH,SAASG,EAAMvD,WAAWsD,EAAM,MACpD,KAAK,OAAQC,EAAMC,QAAQD,EAAMxD,cAAcuD,EAAM,MACrD,KAAK,OAKJC,EAAM/N,QAAQ+N,EAAMT,UAAkB,GAANQ,EAAW,GAAK,IAChD,MACD,KAAK,SACJC,EAAM/N,QAAQ+N,EAAMT,UAAkB,GAANQ,EAAW,IAC3C,MACD,SACC,MAAO5uB,WAAU2Z,KAAK,OAAOtR,GAAMsR,EAAKiV,EAAIvmB,GAE9C,MAAOwmB,IAERE,SAAS,SAASC,GACjB,MAAQ,IAAJA,EAAe,IAAIA,EAChBA,GAERC,KAAK,SAAStV,GACb,MAAO,IAAIlW,MAAKkW,EAAKjW,YAEtBwrB,YAAY,SAASC,EAAOC,GA0B3B,MAzBAD,GAAOA,EAAOzsB,QAAQ,aAAa,SAASvE,GAC3C,OAAOA,GACN,IAAK,KAAM,MAAO,6CAClB,KAAK,KAAM,MAAO;;AAClB,IAAK,KAAM,MAAO,oBAClB,KAAK,KAAM,MAAO,yBAClB,KAAK,KAAM,MAAO,qDAClB,KAAK,KAAM,MAAO,wBAClB,KAAK,KAAM,MAAO,oDAClB,KAAK,KAAM,MAAO,mDAClB,KAAK,KAAM,MAAO,wDAClB,KAAK,KAAM,MAAO,uDAClB,KAAK,KAAM,MAAO;;AAClB,IAAK,KAAM,MAAO,iCAClB,KAAK,KAAM,MAAO,qBAClB,KAAK,KAAM,MAAO,8CAClB,KAAK,KAAM,MAAO,gDAClB,KAAK,KAAM,MAAO,oCAClB,KAAK,KAAM,MAAO,oCAClB,KAAK,KAAM,MAAO,gDAClB,KAAK,KAAM,MAAO,8DAClB,SAAS,MAAOA,MAGdixB,IAAKD,EAAOA,EAAOzsB,QAAQ,aAAa;AACrC,GAAI2sB,UAAS,OAAO,WAAYF,EAAO,OAE/CG,YAAY,SAASH,EAAOC,GAG3B,IAAK,GAFDG,GAAK,4CACL1Q,EAAKsQ,EAAO9O,MAAM,cACbzb,EAAE,EAAGA,EAAEia,EAAKzd,OAAQwD,IAC5B,OAAOia,EAAKja,IACX,IAAK,KACL,IAAK,KAAM2qB,GAAM,eAAe3qB,EAAE,OACjC,MACD,KAAK,KACL,IAAK,KAAM2qB,GAAM,gBAAgB3qB,EAAE,UAClC,MACD,KAAK,KAAM2qB,GAAM,eAAe3qB,EAAE,aAAaA,EAAE,kBAChD,MACD,KAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACF2qB,GAAM,eAAe3qB,EAAE,OACzB,MACD,KAAK,KACF2qB,GAAM,eAAe3qB,EAAE,OACzB,MACD,KAAK,KAAM2qB,GAAM,eAAe3qB,EAAE;;AACjC,KACD,KAAK,KACL,IAAK,KAAM2qB,GAAM,2BAA2B3qB,EAAE,mCAC7C,MACD,KAAK,KAAM2qB,GAAM,eAAe3qB,EAAE,OACjC,MACD,KAAK,KAAM2qB,GAAM,sDAAsD3qB,EAAE,QACxE,MACD,KAAK,KAAM2qB,GAAM,qDAAqD3qB,EAAE,SAM1E,GAAI6I,GAAM,2CAEV,OADI2hB,KAAK3hB,EAAM,aAAaA,EAAK,KAC1B,GAAI4hB,UAAS,OAAO,0BAA0BE,EAAK,oBAAoB9hB,EAAK,OAEpF+hB,WAAY,SAASX,GACpB,IAAIA,EAAO,OAAO,CAClB,IAAIY,GAAOZ,EAAMR;;AACJ,IAAToB,IACHA,EAAO,EAER,IAAIC,GAAiB,GAAIjsB,MAAKorB,EAAMnrB,UACpCgsB,GAAelB,QAAQK,EAAMxJ,WAAa,EAAIoK,GAC9C,IAAIE,GAAcD,EAAerE,cAC7BuE,EAAehzB,KAAKC,OAAQ6yB,EAAetB,UAAY,GAAI3qB,MAAKksB,EAAa,EAAG,GAAGvB,WAAa,OAChGyB,EAAc,EAAIjzB,KAAK4T,MAAOof,EAAe,EACjD,OAAOC,IAERC,cAAe,SAASjB,GACvB,MAAOp0B,MAAK+0B,WAAW/0B,KAAKs1B,eAAelB,KAE5CkB,eAAgB,SAASpW,GACxB,MAAO,IAAIlW,MAAKkW,EAAKqW,iBAAkBrW,EAAKsW,cAAetW,EAAKuW,aAAcvW,EAAKwW,cAAexW,EAAKyW,gBAAiBzW,EAAK0W,mBAG/HrwB,UAAU2P,QACTgK,MACCoU,YAAY,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY;AAC1HF,aAAa,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC1FyC,UAAU,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC5EC,WAAW,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEtD3gB,QACCuP,qBAAqB,QACrBqR,QAAQ,MACRC,SAAS,OACTC,UAAU,QACVzS,UAAU,YACV0S,UAAU,OACVC,YAAY,SACZC,aAAa,UACbC,UAAU,OACVC,YAAY,SACZpO,gBAAgB,GAChBnD,iBAAiB;AACjBwR,oBAAoB,cACpBC,aAAa,cACbC,SAAS,WAGTC,kBAAkB,wDAClBC,kBAAkB,eAClBC,iBAAiB,WACjBC,sBAAsB,UACtBC,mBAAoB,cACpBC,uBAAwB,kBAGxBC,WAAW,SACX9X,KAAK,OACL+X,YAAY,cAGZC,SAAS,OAGTC,gBAAiB,SAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbliB,WAAW;AACXG,eAAe,WAqBjBhQ,UAAUoN,QACT4kB,aAAc,WACdC,WAAY,QACZC,UAAW,WACXC,UAAW,KACXC,SAAU,YACVC,UAAW,QACXlH,UAAW,KACXmH,SAAU,iBACVC,SAAU,iBACVjQ,iBAAgB,EAChB/B,UAAW,EAEX+N,gBAAiB,EACjB5N,WAAY,EACZ0E,UAAW,GACXzG,UAAU,EACVuK,YAAa,EACbC,UAAW,EACXqJ,YAAa,EACbvR,gBAAiB,EACjBsF,eAAgB,EAChBC,kBAAmB,EACnBiM,qBAAoB,EACpBC,oBAAmB,EAEnBC,uBAAuB,EACvBC,oBAAqB;AACrBC,qBAAsB,GAEtBrJ,WAAU,EACVsJ,uBAAwB,EAExBC,eAAe,EACf1L,iBAAiB,EACjBpK,QAAQ,EAER+V,YAAY,EACZ7M,OAAM,EACN8M,WAAU,EACVC,WAAW,IACXC,qBAAoB,EAEpBtQ,kBAAkB,EAElBuQ,gBAAgB,EAChBrO,gBAAgB,EAChBsO,YAAa,YAAa,eAC1BC,cAAe,eAAgB,YAAa,eAC5CC,cAAe,eAAgB,kBAC/BC,eAAgB,kBAChB7H,UACCD,WACE3tB,KAAM,cAAewR,OAAQ,IAAKqc,OAAQ,OAAQ9tB,KAAM,WAAYgT,OAAO;GAC3E/S,KAAM,OAAQwR,OAAQ,GAAIzR,KAAM,OAAQ8tB,OAAQ,UAGnD6H,2BAA2B,EAC3B9L,aAAa,EAEbhP,WAAY,QACZ+a,aAAc,GAEf1zB,UAAUknB,aACVlnB,UAAUqa,eAAe,WACxB,GAAIzK,GAAS5P,UAAU2P,OAAOC,MAC9BA,GAAO+jB,aAAgB/jB,EAAO+gB,UAC9B/gB,EAAOgkB,eAAkBhkB,EAAOghB,YAChChhB,EAAOikB,eAAkBjkB,EAAOmhB,WAGhC,IAAI7b,GAAElV,UAAU2Z,KAAKuV,YACjB7wB,EAAE2B,UAAUoN,OACZ0mB,EAAI,SAAS31B,EAAEC,GAClB,IAAK,GAAIC,KAAKD,GACRD,EAAEE,KAAIF,EAAEE,GAAGD,EAAEC,IAEpBy1B,GAAE9zB,UAAUknB,WACXkL,SAASld,EAAE7W,EAAE2zB,cACbC,WAAW/c,EAAE7W,EAAE4zB,YACfE,UAAU,SAAS4B,EAAGC;AACrB,MAAOh0B,WAAUknB,UAAUkL,SAAS2B,GAAI,YAAY/zB,UAAUknB,UAAUkL,SAASpyB,UAAU2Z,KAAKuF,IAAI8U,EAAG,GAAG,SAE3GC,eAAe/e,EAAE7W,EAAE2zB,cACnBkC,iBAAiBhf,EAAE7W,EAAE8zB,WACrBgC,gBAAgBjf,EAAE7W,EAAE+zB,UACpBrI,WAAW7U,EAAE7W,EAAEg0B,WACf+B,YAAYlf,EAAE7W,EAAEg0B,WAChBgC,WAAWnf,EAAE7W,EAAEg0B,WACflH,UAAUjW,EAAE7W,EAAE8sB,WACdmH,SAAStyB,UAAU2Z,KAAK2V,YAAYjxB,EAAEi0B,SAASj0B,EAAE20B,YACjDsB,YAAYpf,EAAE7W,EAAE6zB,UAAU7zB,EAAE20B,YAC5BuB,WAAWrf,EAAE7W,EAAEi0B,SAASj0B,EAAE20B,YAC1BT,SAASvyB,UAAU2Z,KAAK2V,YAAYjxB,EAAEk0B,UACtCiC,aAAa,SAASvU,EAAMC,EAAIrT;AAC/B,MAAO7M,WAAUknB,UAAUmN,WAAWpU,GAAO,MAAMjgB,UAAUknB,UAAUmN,WAAWnU,IAEnFuU,WAAW,SAASxU,EAAMC,EAAIrT,GAC7B,MAAOA,GAAGuB,MAEXsmB,YAAY,SAASzU,EAAMC,EAAIrT,GAC9B,MAAO,IAERme,iBAAiB,SAAS9V,GACzB,MAAO,IAER8T,gBAAgB,SAAS9T,GACxB,MAAO,IAERyf,eAAe,SAAS1U,EAAMC,EAAIrT,GACjC,MAAO7M,WAAUknB,UAAUmN,WAAWpU,GAAO,KAE9C2U,eAAe,SAAS3U,EAAMC,EAAIrT,GACjC,MAAOA,GAAGuB,MAEXymB,kBAAoB,SAASlb,EAAMlY,GAClC,MAAO,gBAAgBA,EAAM,gBAE9BqzB,kBAAoB,SAAS7U,EAAOC,EAAKhlB,GACxC,MAAO,IAER65B,oBAAsB,SAAS9U,EAAOC,EAAKhlB;AAC1C,MAAO,MAGTT,KAAK+R,UAAU,wBAKhBxM,UAAUoR,IAAM,WAEf,MADK3W,MAAKu6B,QAAOv6B,KAAKu6B,OAAQ,GAAKvxB,OAAQC,WACpCjJ,KAAKu6B,SAEbh1B,UAAUi1B,WACVj1B,UAAUk1B,SAAW,WACpBz6B,KAAKw6B,WACLx6B,KAAK06B,WAEL16B,KAAKqjB,SAAW,KAChBrjB,KAAKyiB,WAAa,KAClBziB,KAAK6jB,SAAW,KAChB7jB,KAAK+jB,WAAa,KAClB/jB,KAAKqoB,UAAY,KAEjBroB,KAAK26B,aACL36B,KAAK+R,UAAU,kBAEhBxM,UAAUuM,SAAW,SAASiU,EAAYK,EAAUzS,EAAMpB,EAAIqoB,GAC7D,IAAKz0B,UAAUQ,OACd,MAAO3G,MAAKulB,aACb,IAAInT,GAAK2T,CACe,IAApB5f,UAAUQ,SACbyL,EAAKwoB;AACLxoB,EAAG2T,WAAaA,EAChB3T,EAAGgU,SAAWA,EACdhU,EAAGuB,KAAOA,EACVvB,EAAGG,GAAKA,GAETH,EAAGG,GAAKH,EAAGG,IAAMhN,UAAUoR,MAC3BvE,EAAGuB,KAAOvB,EAAGuB,MAAQ,GAEO,gBAAjBvB,GAAG2T,aAAyB3T,EAAG2T,WAAa/lB,KAAKysB,UAAUqL,SAAS1lB,EAAG2T,aACxD,gBAAf3T,GAAGgU,WAAuBhU,EAAGgU,SAAWpmB,KAAKysB,UAAUqL,SAAS1lB,EAAGgU,UAE9E,IAAI3L,GAA4D,KAAvDza,KAAK2S,OAAOkT,gBAAkB7lB,KAAK2S,OAAOmT,UAC/C1T,GAAG2T,WAAW9c,WAAamJ,EAAGgU,SAASnd,WAC1CmJ,EAAGgU,SAASC,QAAQjU,EAAGgU,SAASnd,UAAYwR,GAE7CrI,EAAGsU,OAAS1mB,KAAK66B,cAAczoB,EAE/B,IAAIyZ,IAAU7rB,KAAKw6B,QAAQpoB,EAAGG,GAK9B,OAJAvS,MAAKw6B,QAAQpoB,EAAGG,IAAMH,EACtBpS,KAAK86B,cAAc1oB;AACdpS,KAAKsmB,UACTtmB,KAAK+R,UAAU8Z,EAAS,eAAiB,kBAAmBzZ,EAAGG,GAAIH,IAC7DA,EAAGG,IAEXhN,UAAU2f,YAAc,SAAS3S,EAAIjK,GACpC,GAAI8J,GAAKpS,KAAKw6B,QAAQjoB,IACjBjK,GAAYtI,KAAK+R,UAAU,uBAAwBQ,EAAIH,KAASpS,KAAK+R,UAAU,gCAAiCQ,EAAIH,OAErHA,IACHpS,KAAKyiB,WAAa,WACXziB,MAAKw6B,QAAQjoB,GACpBvS,KAAK86B,cAAc1oB,IAGpBpS,KAAK+R,UAAU,kBAAmBQ,EAAIH,MAEvC7M,UAAUsd,SAAW,SAAStQ,GAC7B,MAAOvS,MAAKw6B,QAAQjoB,IAErBhN,UAAUw1B,SAAW,SAASxoB,EAAIyoB,GAC7BA,EAAKzoB,KACRyoB,EAAKzoB,GAAKA,GAEXvS,KAAKw6B,QAAQjoB,GAAMyoB,GAEpBz1B,UAAUylB,aAAe,SAASzY,EAAI0oB;AACrC,IAAK,GAAI9wB,GAAInK,KAAKk7B,UAAUv0B,OAAS,EAAGwD,GAAK,EAAGA,IAC3CnK,KAAKk7B,UAAU/wB,GAAGmG,aAAa,aAAeiC,GACjD0oB,EAAOj7B,KAAKk7B,UAAU/wB,GAAIA,IAE7B5E,UAAU41B,cAAgB,SAAS5oB,EAAI6oB,GACtC,GAAI7oB,GAAM6oB,EAAV,CACA,GAAIhpB,GAAKpS,KAAKw6B,QAAQjoB,EAClBH,KACHA,EAAGG,GAAK6oB,EACRp7B,KAAKw6B,QAAQY,GAAUhpB,QAChBpS,MAAKw6B,QAAQjoB,IAErBvS,KAAKgrB,aAAazY,EAAI,SAAS0Y,GAC9BA,EAAEtW,aAAa,WAAYymB,KAExBp7B,KAAKyiB,YAAclQ,IAAIvS,KAAKyiB,WAAa2Y,GACzCp7B,KAAKqjB,UAAY9Q,IAAIvS,KAAKqjB,SAAW+X,GAEzCp7B,KAAK+R,UAAU,mBAAoBQ,EAAI6oB,MAGxC,WAcC,IAAK,GAbDC,IAAS,OAAQ,OAAQ,aAAc,YAAa,WAAY,WAChEC,EAAgB,SAASh4B;AAC5B,MAAO,UAASiP,GAAM,MAAQhN,WAAUsd,SAAStQ,GAAKjP,KAEnDi4B,EAAgB,SAASj4B,GAC5B,MAAO,UAASiP,EAAIlI,GACnB,GAAI+H,GAAK7M,UAAUsd,SAAStQ,EAC5BH,GAAG9O,GAAQ+G,EACX+H,EAAG4F,UAAW,EACd5F,EAAGsU,OAAS1mB,KAAK66B,cAAczoB,GAC/B7M,UAAUu1B,cAAc1oB,GAAI,KAGrBjI,EAAI,EAAGA,EAAIkxB,EAAM10B,OAAQwD,GAAK,EACtC5E,UAAU,WAAa81B,EAAMlxB,EAAI,IAAMmxB,EAAcD,EAAMlxB,IAC3D5E,UAAU,WAAa81B,EAAMlxB,EAAI,IAAMoxB,EAAcF,EAAMlxB,OAI7D5E,UAAUu1B,cAAgB,SAAS1oB,EAAIopB,GAClCx7B,KAAKy7B,kBAAkBrpB,GAC1BpS,KAAKisB,mBAELjsB,KAAK07B,YAAYtpB,EAAGG,KAEtBhN,UAAUk2B,kBAAoB,SAASrpB,GAEtC,GAAIupB,GAAoBvpB,EAAG2T,WAAa/lB,KAAKmjB,WAAanjB,KAAKijB,UAAY7Q,EAAGgU;;AAE9E,GAAGuV,EAAiB,CAGnB,GAAIC,GAAqB57B,KAAKihB,aAAiB7O,EAAGgU,SAASF,YAAclmB,KAAK2S,OAAOsT,YAAc7T,EAAGgU,SAASF,WAAalmB,KAAK2S,OAAOgY,WAClIvY,EAAG2T,WAAWG,YAAclmB,KAAK2S,OAAOsT,YAAc7T,EAAG2T,WAAWG,WAAalmB,KAAK2S,OAAOgY,SAEnG,IAAGiR,EACF,OAAO,CAIP,IAAI/V,IAAkBzT,EAAGgU,SAASnd,UAAYmJ,EAAG2T,WAAW9c,WAAa,KACxE4yB,EAAkB,IAAM77B,KAAK2S,OAAOgY,UAAY3qB,KAAK2S,OAAOsT,WAE7D,OAAQJ,GAAiBgW,EAI1B,OAAO,GAGTt2B,UAAUs1B,cAAgB,SAASzoB,GAClC,GAAI0pB,GAAQ1pB,EAAGgU,SAASwE,UAAYxY,EAAG2T,WAAW6E,SAElD,OAAKkR,IAGQ,EAARA,IAAYA,EAAQ35B,KAAKglB,MAAM/U,EAAGgU,SAASnd,UAAYmJ,EAAG2T,WAAW9c,WAAa;AACrE,GAAT6yB,IAAe1pB,EAAGgU,SAASF,aAAe9T,EAAGgU,SAASkD,eAAiBlX,EAAG2T,WAAWG,YAAc9T,EAAG2T,WAAWuD,eAHlHlX,EAAG2T,WAAW8K,YAAcze,EAAGgU,SAASyK,YAAcze,EAAG2T,WAAW6K,eAAiBxe,EAAGgU,SAASwK,eAO1GrrB,UAAUw2B,mBAAqB,SAASC,GAEvC,GAAI9hB,KAEJ,KAAK,GAAI3H,KAAMvS,MAAKw6B,QACfx6B,KAAKy7B,kBAAkBz7B,KAAKw6B,QAAQjoB,OAClCypB,GAAch8B,KAAKw6B,QAAQjoB,GAAImU,SAC/B1mB,KAAKi8B,aAAa1pB,EAAIvS,KAAKw6B,QAAQjoB,KACtC2H,EAAMzP,KAAKzK,KAAKw6B,QAAQjoB,GAE5B,OAAO2H,IAER3U,UAAU02B,aAAe,SAAS1pB,EAAIH,GACrC,GAAI8pB,GAASl8B,KAAK,UAAYA,KAAK8iB,MACnC;MAAO,GAAWoZ,EAAO3pB,EAAIH,IAAM,GAEpC7M,UAAU42B,oBAAsB,SAAS/pB,GACxC,QAASA,EAAGsU,QAEbnhB,UAAU0mB,iBAAmB,SAASmQ,EAAKC,GAC1C,IAAKD,EAAK,CACT,GAAIp8B,KAAKs8B,YAER,YADAt8B,KAAKqsB,cAAe,EAGrBrsB,MAAKqsB,cAAe,EAEpBrsB,KAAK26B,aACLyB,EAAMp8B,KAAK+7B,qBAAqB/7B,KAAKihB,aAAejhB,KAAK2S,OAAOoc,YAEjE,IAAI,GAAI5kB,GAAG,EAAGoyB,EAAMH,EAAIz1B,OAAY41B,EAAJpyB,EAASA,IACxCnK,KAAKw8B,mBAAmBJ,EAAIjyB,GAG7B,IAAInK,KAAK2S,OAAOoc,YAAc/uB,KAAKihB,YAAa,CAI/C,IAAK,GAFDwb,MACAC,KACKvyB,EAAI,EAAGA,EAAIiyB,EAAIz1B,OAAQwD,IAC3BnK,KAAKm8B,oBAAoBC,EAAIjyB,IAChCsyB,EAAIhyB,KAAK2xB,EAAIjyB,IAEbuyB,EAAIjyB,KAAK2xB,EAAIjyB,GAIfnK,MAAK28B,mBAAqB38B,KAAKuf,KAAoB,cAAE;AACrDvf,KAAKihB,aAAc,EACnBjhB,KAAK48B,YAAYF,EAAKL,GACtBr8B,KAAKihB,aAAc,EAGnBjhB,KAAK28B,mBAAqB38B,KAAKuf,KAAmB,aAAE,GACpDvf,KAAKihB,aAAc,EACnBjhB,KAAK48B,YAAYH,EAAKJ,OAGtBr8B,MAAK28B,mBAAqB38B,KAAKuf,KAAmB,aAAE,GACpDvf,KAAK48B,YAAYR,EAAKC,IAKxB92B,UAAUs3B,gBAAkB,SAASt8B,GACpC,GAAI2e,GAAO3Z,UAAU4e,cAAc5jB,GAAG2e,IAClC3Z,WAAUwM,UAAU,mBAAoBmN,KAE5C3Z,UAAUya,eAAed,EAAM,QAGhC3Z,UAAUu3B,mBAAqB,SAAS1qB,GAKvC,IAAI,GAJA/E,GAASrN,KAAK28B,mBACdI,EAAW/8B,KAAKmrB,YAAY/Y,GAGxBqI,EAAIrI,EAAG4qB,MAAOviB,EAAIrI,EAAG6qB,MAAOxiB,IAAI;AAEvCsiB,EAASC,MAAQviB,EACjBsiB,EAASE,MAAQxiB,EAAE,CAEnB,IAAIyE,GAAO3Z,UAAU2Z,KACjBge,EAAO33B,UAAU0d,SACrBia,GAAOhe,EAAKuF,IAAIyY,EAAMH,EAASI,OAAQ,QACvCD,EAAOhe,EAAKuF,IAAIyY,EAAMH,EAASC,MAAO,MACtC,IAAIh2B,GAAQzB,UAAU63B,UAAUF,EAAMhe,EAAKuF,IAAIyY,EAAM,EAAG,QAAQv2B,OAE5DsgB,EAAMjnB,KAAKq9B,mBAAmBN,GAC9BO,EAAQrW,EAAIsW,GAAKtW,EAAIpR,EAErBzI,EAAK1L,SAAS0G,cAAc,MAChCgF,GAAG8G,QAAU,SAAS3T,GAAGgF,UAAUs3B,gBAAgBt8B,GAAGE,QACtD2M,EAAGoG,UAAY,iBACfpG,EAAGV,MAAM3L,IAAMkmB,EAAI/Q,EAAI,KACvB9I,EAAGV,MAAM7L,KAAOomB,EAAIpR,EAAI,KACxBzI,EAAGV,MAAMmI,MAAQyoB,EAAO,KACxBlwB,EAAGb,UAAYhH,UAAUknB,UAAU2N,kBAAkB8C,EAAMl2B,GAC3DhH,KAAKk7B,UAAUzwB,KAAK2C,GAEpBC,EAAOxB,YAAYuB,KAIrB7H,UAAUi3B,mBAAqB,SAASjqB;AACvC,GAAIA,EAAJ,CACA,GAAIH,EAEHA,GADgB,gBAAR,GACHpS,KAAKw6B,QAAQjoB,GAEbA,EACFH,IACJA,EAAGsU,OAASnhB,UAAUs1B,cAAczoB,MAErC7M,UAAUa,YAAY,iBAAkBb,UAAUi3B,oBAClDj3B,UAAUa,YAAY,eAAgBb,UAAUi3B,oBAEhDj3B,UAAUq3B,YAAc,SAASR,EAAKC,GACrCD,EAAMp8B,KAAKw9B,mBAAmBpB,EAAKC,EAEnC,KAAK,GAAIlyB,GAAI,EAAGA,EAAIiyB,EAAIz1B,OAAQwD,IAC/B,GAAInK,KAAKihB,YACR,GAAsB,SAAnB1b,UAAUud,MACZ9iB,KAAKy9B,iBAAiBrB,EAAIjyB,QACtB,CAEJ,GAAIuzB,GAAUn4B,UAAUoN,OAAOgrB,gBAC5BD,KAAoB,EAARA,GAAatB,EAAIjyB,GAAGyzB,QAAUF,EAE5C19B,KAAKy9B,iBAAiBrB,EAAIjyB,IACNkL,SAAZqoB,GAAyBtB,EAAIjyB,GAAGyzB,SAAWF,GAEnDn4B,UAAUu3B,mBAAmBV,EAAIjyB;;KASnCnK,MAAK69B,aAAazB,EAAIjyB,KAGzB5E,UAAUu4B,wBAA0B,SAASC,GAC5C,IAAK,GAAI5zB,GAAI,EAAGA,EAAI4zB,EAAMp3B,OAAQwD,IACjC,GAA8D,KAAzD4zB,EAAM5zB,GAAGqJ,WAAa,IAAI9Q,QAAQ,oBACtC,MAAOq7B,GAAM5zB,EAIf,OAAO4zB,GAAM,IAGdx4B,UAAUi4B,mBAAqB,SAASpB,EAAKC,GAC5C,GAAI2B,GAAKh+B,KAAKigB,GAAGge,WACbC,EAAQl+B,KAAKynB,OAAOE,QACpBhJ,EAAI3e,KAAKynB,OAAOE,SAAW,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7CpQ,EAAOvX,KAAKuf,KAAmB,aAAE,EAOrC,IAFC6c,EAHIp8B,KAAKihB,YAGHjhB,KAAKm+B,yBAAyB/B,EAAKC,GAFnCr8B,KAAKo+B,wBAAwBhC,EAAKC,GAIrCr8B,KAAKihB,YACR,GAAIob,EACHr8B,KAAKynB,OAAOE,QAAUuW,MAClB,CACJ,GAAIG,GAAM9mB,EAAKjN,UACf,IAAI+zB,EAAIrO,KAAM;AACb,IAAK,GAAI7lB,GAAI,EAAGA,EAAIk0B,EAAIrO,KAAKrpB,OAAQwD,IAAK,CACzCwU,EAAExU,IACF,IAAI4zB,GAAQM,EAAIrO,KAAK7lB,GAAG4zB,MACpBO,EAAat+B,KAAKynB,OAAO3S,OAAS9U,KAAKigB,GAAGU,iBAC9C,IAAKhC,EAAExU,GAAM6zB,EAAKM,EAAY,CAG7B,GAAIC,GAAUD,CACkB,GAA7Bt+B,KAAK2S,OAAOgrB,mBAAuB39B,KAAK2S,OAAOgrB,kBAAoBhf,EAAExU,IAAMnK,KAAK2S,OAAOgrB,iBACzFY,EAAU5f,EAAExU,GAAK6zB,GACPh+B,KAAK2S,OAAOgrB,iBAAmB,GAAKK,EAAKM,IACnDC,GAAWv+B,KAAK2S,OAAOgrB,iBAAmB,GAAKK,EAGhD,KAAK,GAAIxtB,GAAI,EAAGA,EAAIutB,EAAMp3B,OAAQ6J,IACjCutB,EAAMvtB,GAAGhG,WAAW,GAAGkC,MAAMoI,OAASypB,EAAU,KAKlD5f,EAAExU,IAAMwU,EAAExU,EAAI,IAAM,GAAK5E,UAAUu4B,wBAAwBC,GAAO3nB,aAGnE,GADAuI,EAAE6f,QAAQ,GACNH,EAAIryB,WAAWoK,aAAeioB,EAAIryB,WAAWyH,eAAiBlO,UAAUkiB,OAAOgX,YAAcl5B,UAAU0a,GAAGG,aAAc;AAE3H,GAAIse,GAAiBn5B,UAAUkiB,OAC9BkX,EAAYD,EAAeA,EAAevP,YAC1CyP,EAAcF,EAAe/W,QAAQkX,OAEtCF,IAAcp5B,UAAU0a,GAAGG,cAAgB,EAC3CpgB,KAAK2tB,kBAAkBgR,EAAW3+B,KAAKijB,UAAWjjB,KAAKmjB,WACvD5d,UAAUkiB,OAAOE,QAAUiX,EAE3B5+B,KAAKmhB,OAAOnhB,KAAKuf,KAAqB,eAAE,GAAIof,EAAW3+B,KAAKigB,GAAGI,cAC/D9a,UAAUyoB,eAAehuB,KAAKuf,KAAqB,eAAE,IACrDha,UAAUoqB,oBAAoB3vB,KAAKuf,KAAmB,aAAE,GAAIvf,KAAKutB,sBAAuBvtB,KAAKijB,WAE7Fyb,EAAeD,YAAa,OAK7B,IAFKrC,EAAIz1B,QAA4D,WAAlD3G,KAAKuf,KAAoB,cAAE,GAAG7S,MAAMwiB,aACtDvQ,EAAE,GAAK,IACJyd,EAAIz1B,QAAkB,IAARgY,EAAE,GAAU;AAE7B,GAGImgB,IAHST,EAAIryB,WAAWxB,YAGCmU,EAAE,GAAK,GAAKqf,EAAK,GAE1Ce,EAAwBD,EACxBE,EAA4BF,EAAwB,IACpD9+B,MAAK2S,OAAO0lB,yBACf0G,EAAwB58B,KAAK+kB,IAAI4X,EAAuB9+B,KAAK2S,OAAO0lB,wBACpE2G,EAA4BD,EAAwB,MAGrDxnB,EAAK7K,MAAM3L,IAAOf,KAAKuf,KAAsB,gBAAE,GAAGnJ,aAAepW,KAAKuf,KAAqB,eAAE,GAAGnJ,aAAe2oB,EAA0B,KACzIxnB,EAAK7K,MAAMoI,OAAU9U,KAAKof,KAAKhJ,aAAelV,SAASqW,EAAK7K,MAAM3L,IAAK,KAAOf,KAAKigB,GAAGO,YAAc,GAAM,IAE1G,IAAIye,GAAoBj/B,KAAKuf,KAAoB,cAAE,EACnD0f,GAAkBvyB,MAAMoI,OAASkqB,EACjCC,EAAkBvyB,MAAMwiB,WAAsB,IAARvQ,EAAE,GAAW,SAAW,SAG9D,IAAIugB,GAAiBl/B,KAAKuf,KAAoB,cAAE,EAChD2f,GAAexyB,MAAMoI,OAASkqB,EAC9BE,EAAexyB,MAAMwiB,WAAsB,IAARvQ,EAAE,GAAW,SAAW;AAC3DugB,EAAe1rB,UAAYmL,EAAE,GAAK,qBAAuB,2BACzD3e,KAAKwnB,WAAa7I,EAAE,GAAK,GAAKqf,EAC3Bh+B,KAAK2S,OAAO0lB,yBACdr4B,KAAKwnB,UAAYrlB,KAAK+kB,IAAIlnB,KAAK2S,OAAO0lB,uBAAwBr4B,KAAKwnB,YAEpE7I,EAAE,GAAK,EAEHogB,GAAyBD,IAC5BvnB,EAAK7K,MAAM3L,IAAOG,SAASqW,EAAK7K,MAAM3L,KAAO,EAAK,KAElDk+B,EAAkBvyB,MAAMyyB,UAAY,OAGpCD,EAAexyB,MAAMsH,SAAW,QAChCkrB,EAAexyB,MAAM3L,IAAM,GAC3Bm+B,EAAexyB,MAAM7L,KAAO,KAOjC,MAAOu7B,IAER72B,UAAUmlB,gBAAkB,SAAStY,GACpC,MAAOjQ,MAAK4T,OAAO3D,EAAG2T,WAAW9c,UAAYjJ,KAAKijB,UAAUha,WAAa,QAE1E1D,UAAU65B,2BAA6B,SAAShtB;AAC/C,GAAIgU,GAAWhU,EAAGgU,QAClB,IAAIpmB,KAAK2S,OAAO0sB,sBAAuB,CACtC,GAAIC,IAAeltB,EAAGgU,SAAWhU,EAAG2T,YAAc,GAC9CuZ,GAAct/B,KAAKu/B,uBACtBnZ,EAAWpmB,KAAKkf,KAAKuF,IAAI2B,EAAUpmB,KAAKu/B,qBAAuBD,EAAa,WAG9E,MAAOlZ,IAER7gB,UAAU64B,wBAA0B,SAAShC,EAAKC,GACjDD,EAAIoD,KAAK,SAAS97B,EAAGC,GACpB,MAAID,GAAEqiB,WAAW9c,WAAatF,EAAEoiB,WAAW9c,UACnCvF,EAAE6O,GAAK5O,EAAE4O,GAAK,EAAI,GACnB7O,EAAEqiB,WAAapiB,EAAEoiB,WAAa,EAAI,IAE1C,IAAI8M,MACA4M,IAEJz/B,MAAKu/B,qBAAuBp9B,KAAKglB,KAAgC,GAA3BnnB,KAAKigB,GAAGC,iBAAwBlgB,KAAK2S,OAAOyU,aAElF,KAAK,GAAIjd,GAAI,EAAGA,EAAIiyB,EAAIz1B,OAAQwD,IAAK,CACpC,GAAIiI,GAAKgqB,EAAIjyB,GAGTgkB,EAAK/b,EAAG2T,WACR2H,EAAKtb,EAAGgU,SAERsZ,EAAKvR,EAAGjI,WACRyZ,EAAKjS,EAAGxH;;AAGZ,GADA9T,EAAG4qB,MAAQh9B,KAAK0qB,gBAAgBtY,GAC5BpS,KAAK+mB,SAAS3U,EAAG4qB,OAEpBZ,EAAIpjB,OAAO7O,EAAE,GACbA,QAHD,CASA,GAFK0oB,EAAKzgB,EAAG4qB,SAAQnK,EAAKzgB,EAAG4qB,YAExBX,EAAM,CACVjqB,EAAGwtB,QAAS,CAIZ,KAFA,GAAI1lB,GAAQ2Y,EAAKzgB,EAAG4qB,OAEb9iB,EAAMvT,QAAQ,CACpB,GAAIk5B,GAAO3lB,EAAMA,EAAMvT,OAAS,GAC5Bm5B,EAAa9/B,KAAKo/B,2BAA2BS,EACjD,MAAIC,EAAW72B,WAAamJ,EAAG2T,WAAW9c,WAGzC,KAFAiR,GAAMlB,OAAOkB,EAAMvT,OAAS,EAAG,GAOjC,IAAK,GAFDo5B,GAAa7lB,EAAMvT,OACnBq5B,GAAY,EACPxvB,EAAI,EAAGA,EAAI0J,EAAMvT,OAAQ6J,IAAK,CACtC,GAAIqvB,GAAO3lB,EAAM1J,GACbsvB,EAAa9/B,KAAKo/B,2BAA2BS,EACjD,IAAIC,EAAW72B,WAAamJ,EAAG2T,WAAW9c,UAAW,CACpD+2B,GAAY,EACZ5tB,EAAGwrB,QAAUiC,EAAKjC,QAClBmC,EAAavvB,EACb4B,EAAGwtB,QAAS,CACZ,QAOF,GAHI1lB,EAAMvT,SACTuT,EAAMA,EAAMvT,OAAS,GAAGi5B,QAAS;CAE7BI,EACJ,GAAI9lB,EAAMvT,OACT,GAAIuT,EAAMvT,QAAUuT,EAAMA,EAAMvT,OAAS,GAAGi3B,QAAS,CACpD,GAAK1jB,EAAMA,EAAMvT,OAAS,GAAGi3B,QAG5B,IAAKptB,EAAI,EAAGA,EAAI0J,EAAMvT,OAAQ6J,IAAK,CAElC,IAAK,GADDyvB,IAAa,EACRC,EAAI,EAAGA,EAAIhmB,EAAMvT,OAAQu5B,IACjC,GAAIhmB,EAAMgmB,GAAGtC,SAAWptB,EAAG,CAC1ByvB,GAAa,CACb,OAGF,IAAKA,EAAY,CAChB7tB,EAAGwrB,QAAUptB,CACb,YAZF4B,GAAGwrB,QAAU,CAedxrB,GAAGwtB,QAAS,MACN,CACN,GAAIO,GAAcjmB,EAAM,GAAG0jB,OAC3B,KAAKptB,EAAI,EAAGA,EAAI0J,EAAMvT,OAAQ6J,IACzB0J,EAAM1J,GAAGotB,QAAUuC,IACtBA,EAAcjmB,EAAM1J,GAAGotB,QAEzBxrB,GAAGwrB,QAAUuC,EAAc,EAC3B/tB,EAAGwtB,QAAS,MAIbxtB,GAAGwrB,QAAU,CAGf1jB,GAAMlB,OAAO+mB,EAAYA,GAAc7lB,EAAMvT,OAAS,EAAI,EAAGyL,GAEzD8H,EAAMvT,QAAUuT,EAAMkmB,WAAa,IACtClmB,EAAMkmB,UAAYlmB,EAAMvT,OACxByL,EAAGiuB,OAASnmB,EAAMvT,QAElByL,EAAGiuB,OAAUjuB,EAAS,OAAIA,EAAGiuB,OAAS,GAIpCX,EAAK1/B,KAAK2S,OAAOsT,YAAc0Z,GAAM3/B,KAAK2S,OAAOgY,aAGpD8U,EAAch1B,KAAK2H;AACnBgqB,EAAIjyB,GAAKiI,EAAKpS,KAAKsgC,YAAYluB,GAE3BstB,EAAK1/B,KAAK2S,OAAOsT,aACpB7T,EAAG2T,WAAWI,SAASnmB,KAAK2S,OAAOsT,YACnC7T,EAAG2T,WAAWyN,WAAW,IAEtBmM,GAAM3/B,KAAK2S,OAAOgY,YACrBvY,EAAGgU,SAASoN,WAAW,GACvBphB,EAAGgU,SAASD,SAASnmB,KAAK2S,OAAOgY,YAG9BvY,EAAG2T,WAAa3T,EAAGgU,UAAYsZ,GAAM1/B,KAAK2S,OAAOgY,aACpDyR,EAAIpjB,OAAO7O,EAAG,GACdA,MAKH,IAAKkyB,EAAM,CACV,IAAK,GAAIlyB,GAAI,EAAGA,EAAIiyB,EAAIz1B,OAAQwD,IAC/BiyB,EAAIjyB,GAAGk2B,OAASxN,EAAKuJ,EAAIjyB,GAAG6yB,OAAOoD,SAEpC,KAAK,GAAIj2B,GAAI,EAAGA,EAAIs1B,EAAc94B,OAAQwD,IACzCs1B,EAAct1B,GAAGk2B,OAASxN,EAAK4M,EAAct1B,GAAG6yB,OAAOoD,UAGzD,MAAOhE,IAER72B,UAAUg7B,YAAc,SAASnE,GAChCA,EAAIoD,KAAK,SAAS97B,EAAGC,GACpB,MAAID,GAAEqiB,WAAW9c,WAAatF,EAAEoiB,WAAW9c,UACtCvF,EAAEgjB,SAAW/iB,EAAE+iB,OAAe,GAC7BhjB,EAAEgjB,QAAU/iB,EAAE+iB,OAAe,GAC3BhjB,EAAE6O,GAAK5O,EAAE4O,GAAK,EAAI,GAEnB7O,EAAEqiB,WAAapiB,EAAEoiB,WAAa,EAAI;;IAG3CxgB,UAAU44B,yBAA2B,SAAS/B,EAAKC,GAClDr8B,KAAKugC,YAAYnE,EAgBjB,KAAK,GAJDrW,GAXA/K,KACAwlB,yBASAjf,EAAMvhB,KAAKynB,OAAOE,QAElB8Y,EAAOzgC,KAAK8mB,MAAMngB,OAClB+5B,KAEKv2B,EAAI,EAAGA,EAAIiyB,EAAIz1B,OAAQwD,IAAK,CACpC,GAAIiI,GAAKgqB,EAAIjyB,GACToI,EAAKH,EAAGG,EACPmuB,GAAYnuB,KAChBmuB,EAAYnuB,IACXouB,aAAa,EACbC,YAAY,GAGd,IAAIC,GAAaH,EAAYnuB,GACzB4b,EAAMpI,GAAc3T,EAAG2T,WACvB2H,EAAKtb,EAAGgU,QAER+H,GAAKnuB,KAAKijB,YACb4d,EAAWF,aAAc,EACzBxS,EAAKnuB,KAAKijB,WAEPyK,EAAK1tB,KAAKmjB,YACb0d,EAAWD,YAAa,EACxBlT,EAAK1tB,KAAKmjB,UAGX,IAAI2d,GAAW9gC,KAAK+gC,kBAAkB5S,GAAI,EAAO/b,EAIjD,IAHAA,EAAG4qB,MAAQ8D,EAAWL,GAGlBzgC,KAAK+mB,SAAS3U,EAAG4qB,SAAU5qB,EAAGsU,OAAlC,CAEA,GAAIsa,GAAWhhC,KAAK+gC,kBAAkBrT,GAAI,EAAMtb,IAAOquB;;AACvDruB,EAAG6qB,MAAS+D,EAAWP,GAASA,EAChCruB,EAAG6uB,QAAUD,EAAWF,EAGxB1uB,EAAG+qB,OAASh7B,KAAK4T,OAAO/V,KAAKsoB,eAAe6F,EAAGllB,UAAW,GAAKjJ,KAAKijB,UAAUha,YAAc,MAAsBw3B,GAGlH,IAEIS,GAFAhnB,EAAQsmB,EAAMpuB,EAAG+qB,OAIrB,KAAK+D,EAAa,EAAGA,EAAahnB,EAAMvT,UACnCuT,EAAMgnB,GAAYjE,OAAS7qB,EAAG4qB,OADakE,KAQhD,GAJK9uB,EAAGwrB,SAAYvB,IACnBjqB,EAAGwrB,QAAUsD,GAGV9uB,EAAG4qB,MAAQ5qB,EAAG6uB,SAAWR,EAC5B1a,EAAa,KACb/K,EAAIvQ,KAAK2H,GACT8H,EAAMgnB,GAAc9uB,EAEpBmP,EAAInP,EAAG+qB,QAAUjjB,EAAMvT,OAAS,EAChCyL,EAAG+uB,aAAeN,EAAWF,YAC7BvuB,EAAGgvB,YAAcP,EAAWD,eAP7B,CASC,GAAIpM,GAAOx0B,KAAKsgC,YAAYluB,EAC5BoiB,GAAKjiB,GAAKH,EAAGG,GACbiiB,EAAKyM,QAAUR,EAAOruB,EAAG4qB,MACzBxI,EAAKyI,MAAQwD,EACbjM,EAAKwI,MAAQ5qB,EAAG4qB,MAChBxI,EAAK2I,OAAS/qB,EAAG+qB,OACjB3I,EAAKoJ,QAAUxrB,EAAGwrB,QAClBpJ,EAAKpO,SAAWpmB,KAAKkf,KAAKuF,IAAI0J,EAAIqG,EAAKyM,QAAS;AAChDzM,EAAK2M,aAAeN,EAAWF,YAC3BE,EAAWF,cACdE,EAAWF,aAAc,GAG1B3lB,EAAIvQ,KAAK+pB,GACTta,EAAMgnB,GAAc1M,EACpBzO,EAAayO,EAAKpO,SAElB7E,EAAInP,EAAG+qB,QAAUjjB,EAAMvT,OAAS,EAChCwD,MAIF,MAAO6Q,IAERzV,UAAU87B,YAAc,WACvB,GAAI39B,GAAI,GAAIsF,MAAKhJ,KAAK+lB,YAClBpiB,EAAI,GAAIqF,MAAKhJ,KAAKomB,SACtBpmB,MAAK+lB,WAAariB,EAClB1D,KAAKomB,SAAWziB,GAEjB4B,UAAU+6B,YAAc,SAASluB,GAEhC,MADApS,MAAKqhC,YAAY/6B,UAAY8L,EACtB,GAAIpS,MAAKqhC,aAGjB97B,UAAU21B,aACV31B,UAAUo1B,WAAa,WACtB,IAAK,GAAIxwB,GAAI,EAAGA,EAAInK,KAAKk7B,UAAUv0B,OAAQwD,IAAK,CAC/C,GAAIzE,GAAM1F,KAAKk7B,UAAU/wB,EACrBzE,GAAIsG,YAAYtG,EAAIsG,WAAWG,YAAYzG;;CAEhD1F,KAAKk7B,cAEN31B,UAAUqd,YAAc,SAASrQ,GAChC,GAAIH,GAAKpS,KAAK6iB,SAAStQ,EACvBvS,MAAK07B,YAAYnpB,GAEbH,GAAMpS,KAAKy7B,kBAAkBrpB,IAAOpS,KAAKi8B,aAAa1pB,EAAIH,KAAQpS,KAAKihB,aAAejhB,KAAK2S,OAAOoc,WAAa3c,EAAGsU,UACjH1mB,KAAK2S,OAAOmY,cACf9qB,KAAKisB,mBAEsB,SAAxBjsB,KAAKsZ,WAAW1L,MAAoB5N,KAAKsZ,WAAWsK,SAAY5jB,KAAK66B,cAAczoB,GAGrFpS,KAAKisB,kBAAkB7Z,IAAK,GAF5BpS,KAAKisB,qBAOT1mB,UAAUm2B,YAAc,SAASnpB,GAChCvS,KAAKgrB,aAAazY,EAAI,SAASrI,EAAMC,GAChCD,EAAK8B,YACR9B,EAAK8B,WAAWG,YAAYjC,GAC7B3E,UAAU21B,UAAUliB,OAAO7O,EAAG;;IAGhC5E,UAAU+7B,aAAe,SAASpiB,GACjC,GAAIqiB,GAAuB,GAAlBriB,EAAKgH,WAAkBhH,EAAKoK,YACrC,OAASnnB,MAAKC,OAAY,GAALm/B,EAAU,IAAgC,GAAzBvhC,KAAK2S,OAAOsT,WAAkB,GAAK,KAAQjmB,KAAK2S,OAAOyU,aAAe,OAAiD,GAA3BpnB,KAAK2S,OAAOyU,eAE/I7hB,UAAUi8B,cAAgB,SAASpvB,EAAIqvB,GACtCA,EAAaA,GAAc,CAC3B,IAAIF,GAAgC,GAA3BnvB,EAAG2T,WAAWG,WAAkB9T,EAAG2T,WAAWuD,aACnDoY,EAA+B,GAAzBtvB,EAAGgU,SAASF,WAAkB9T,EAAGgU,SAASkD,cAA+C,GAA7B/jB,UAAUoN,OAAOgY,UACnF5pB,EAAMf,KAAKshC,aAAalvB,EAAG2T,YAE3BjR,EAAS3S,KAAKof,IAAIkgB,GAAaC,EAAKH,GAAMvhC,KAAK2S,OAAOyU,aAAe,GACzE,QACCrmB,IAAKA,EACL+T,OAAQA,IAGVvP,UAAUs4B,aAAe,SAASzrB;AACjC,GAAIuvB,GAAOp8B,UAAU0a,GAAGM,WACpBqhB,EAAe5hC,KAAK2S,OAA4B,sBAAI,EAAIgvB,CAC5D,MAAIvvB,EAAG4qB,MAAQ,GAAf,CAEA,GAAI3vB,GAAS9H,UAAUs8B,cAAczvB,EAAG4qB,MACxC,IAAK3vB,EAAL,CAEA,GAAIy0B,GAAQ9hC,KAAKwhC,cAAcpvB,EAAI7M,UAAU0a,GAAGC,kBAC5Cnf,EAAM+gC,EAAM/gC,IACf+T,EAASgtB,EAAMhtB,OAEZitB,EAAW3vB,EAAGiuB,QAAU,EACxB2B,EAAY5vB,EAAGwrB,SAAW,EAE1B/oB,EAAQ1S,KAAK4T,OAAO1I,EAAOqR,YAAckjB,GAAeG,GACxDlhC,EAAOmhC,EAAYntB,EAAQ,CAE/B,IADKzC,EAAGwtB,SAAQ/qB,GAAiBktB,EAAWC,GACxChiC,KAAK2S,OAAOulB,sBAAuB,CACtC,GAAI+J,GAAQjiC,KAAK2S,OAAOwlB,oBACpB+J,EAASliC,KAAK2S,OAAOylB,oBACzBv3B,GAAOmhC,EAAYC,EAAQC,CAC3B,IAAIC,GAAS/vB,EAAS,QAAK2vB,EAAWC,EAAY,GAAKC,EAAQC,EAAS,EAAI,CAC5ErtB,GAAQ1S,KAAK4T,MAAM1I,EAAOqR,YAAckjB,EAAc/gC,EAAOshC,GAG9D,GAAI1nB,GAAIza,KAAKoiC,cAAchwB,EAAIwvB,EAAc/gC,EAAME,EAAK8T,EAAOC,EAAQ1C,EAAGiwB,YAAa98B,UAAUknB,UAAUsN,aAAa3nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,GAAK7M,UAAUknB,UAAUuN,WAAW5nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU;;AAOpN,GALApS,KAAKk7B,UAAUzwB,KAAKgQ,GACpBpN,EAAOxB,YAAY4O,GAEnB5Z,EAAOA,EAAOK,SAASmM,EAAOX,MAAM7L,KAAM,IAAM+gC,EAE5C5hC,KAAKqjB,UAAYjR,EAAGG,GAAI,CAE3BkI,EAAE/N,MAAM41B,OAAS,EACjBztB,EAAQ1S,KAAKof,IAAI1M,EAAQ,EAAGtP,UAAU0a,GAAGS,cACzCjG,EAAI/Y,SAAS0G,cAAc,OAC3BqS,EAAE9F,aAAa,WAAYvC,EAAGG,IAC9BvS,KAAKmhB,OAAO1G,EAAG5F,EAAOC,EAAS,GAAIjU,EAAME,EAAM,IAC/C0Z,EAAEjH,UAAY,8BAEd,IAAI+uB,GAAWh9B,UAAUknB,UAAUwN,YAAY7nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,EAExEmwB,KACF9nB,EAAEjH,WAAa,IAAM+uB,EAEtB,IAAIhJ,GAAK73B,SAAS0G,cAAc,MAChCpI,MAAKmhB,OAAOoY,EAAI1kB,EAAQ,EAAGC,EAAS,IACpCykB,EAAG7sB,MAAM81B,SAAW,2CAEpB/nB,EAAE5O,YAAY0tB;AACdv5B,KAAKuf,KAAmB,aAAE,GAAG1T,YAAY4O,GACzCza,KAAKk7B,UAAUzwB,KAAKgQ,GAEpB8e,EAAGhtB,UAAY,oCAAsC6F,EAAGuB,KAAO,cAC3D3T,KAAK0f,WAAU6Z,EAAGjvB,WAAWoC,MAAMoI,OAASA,EAAS,GAAK,MAC9D9U,KAAKyiC,QAAUlJ,EAAGjvB,WAClBtK,KAAKyiC,QAAQlvB,UAAY,SAAShT,GACjC,IAAKA,GAAKE,OAAOiiC,SAAU,OAAO,CAClC,IAAI1vB,IAAQzS,GAAKE,OAAOyS,OACpBF,IAAQzN,UAAU4U,KAAKyG,WAAWrb,UAAUoU,UAAS,GACrD3G,GAAQzN,UAAU4U,KAAK0G,aAAatb,UAAUoU,UAAS,IAE5D3Z,KAAKyiC,QAAQ92B,cAAgB,SAAUpL,GAEtC,OADCA,GAAKE,OAAO4S,cAAe,GACrB,GAER9N,UAAU0sB,OAAOsH,EAAGjvB,YAAY;AAEhCtK,KAAKuf,KAAmB,aAAE,GAAGxd,WAAa,EAE3C,GAA2B,IAAvB/B,KAAKigB,GAAGM,YAAoBvgB,KAAKyiB,YAAcrQ,EAAGG,GAAI,CACrDvS,KAAK2S,OAAOulB,uBAAyBl4B,KAAK+jB,aAC7CtJ,EAAE/N,MAAM41B,OAAS,EAKlB,KAAK,GAJDK,GAAQ3iC,KAAK2S,OAAO,UAAa3S,KAAKqjB,UAAYjR,EAAGG,GAAM,OAAS,WACpEqwB,EAAY,GACZC,EAAYzwB,EAAG0wB,MAAS,qBAAuB1wB,EAAG0wB,MAAQ,IAAO,GACjEA,EAAS1wB,EAAG2wB,UAAa,UAAY3wB,EAAG2wB,UAAY,IAAO,GACtD54B,EAAI,EAAGA,EAAIw4B,EAAMh8B,OAAQwD,IACjCy4B,GAAa,6BAA+BD,EAAMx4B,GAAK,YAAc04B,EAAgBC,EAAQ,YAAc9iC,KAAKkV,OAAOC,OAAOwtB,EAAMx4B,IAAM,UAC3I,IAAIzE,GAAM1F,KAAKoiC,cAAchwB,EAAIvR,EAAO8gC,EAAO,EAAG5gC,EAAK4gC,EAAqB,GAAfgB,EAAMh8B,OAAc,GAAK,EAAG,GAAI,eAAiBk8B,EAAgBC,EAAQ,iCAAkCF,GAAW;;AACnLl9B,EAAIgH,MAAM7L,KAAOA,EAAO8gC,EAAO,EAC/B3hC,KAAKuf,KAAmB,aAAE,GAAG1T,YAAYnG,GACzC1F,KAAKk7B,UAAUzwB,KAAK/E,GAElB1F,KAAK2S,OAAOgmB,gBAAkB34B,KAAK6jB,UAAYzR,EAAGG,IACpDvS,KAAKgjC,uBAAuB5wB,MAG9B7M,UAAU68B,cAAgB,SAAUhwB,EAAIyD,EAAGK,EAAGuI,EAAGE,EAAGjS,EAAOu2B,EAAUC,EAAUC,GAC9E,GAAI1oB,GAAI/Y,SAAS0G,cAAc,OAC3BmK,EAAKH,EAAGG,GACR6wB,EAAK,EAAW,oCAAsC,gBAEtDC,EAAM99B,UAAUknB,UAAUwN,YAAY7nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,EAClEixB,KAAKD,EAAKA,EAAK,IAAMC,EAEzB,IAAIR,GAAYzwB,EAAG0wB,MAAS,cAAgB1wB,EAAG0wB,MAAQ,IAAO,GAC1DA,EAAS1wB,EAAG2wB,UAAa,SAAW3wB,EAAG2wB,UAAY,IAAO,GAE1D3S,EAAO,kBAAoB7d,EAAK,YAAc6wB,EAAK,mCAAqCltB,EAAI,YAAcL,EAAI,cAAgB4I,EAAI,GAAK,cAAgBE,EAAI,OAASjS,GAAS,IAAM;;AACvL+N,EAAElO,UAAY6jB,CAEd,IAAIkT,GAAY7oB,EAAEhO,WAAU,GAAMnC,UAElC,KAAK64B,GAAU59B,UAAUg+B,YAAYD,EAAWlxB,EAAIqM,EAAGE,EAAGskB,EAAUC,GACnE,MAAOI,EAEPA,GAAY7oB,EAAEnQ,UAEd,IAAIk5B,GAAa,yDAA2D/kB,EAAI,GAAK,MAAQokB,EAAW,iBACxGW,IAAc,gDAAkDX,EAAgBC,EAAQ,KAAOG,EAAW,SAC1GO,GAAc,wCAA0C/kB,GAAKze,KAAKyf,QAAU,EAAI,KAAO,eAAiBd,GAAK3e,KAAKyf,QAAU,GAAK,IAAM,GAAK,MAAQojB,EAAgBC,EAAQ,KAAOI,EAAW,QAE9L,IAAIO,GAAe,6BASpB,OARKN,KACHM,EAAe,qBAAuBA,GAEvCD,GAAc,eAAiBC,EAAe,oBAAsBhlB,EAAI,GAAK,OAAS0kB,EAAS,oBAAsB,IAAWN,EAAgBC,EAAQ;AAExJQ,EAAU/2B,UAAYi3B,EAGhBF,GAER/9B,UAAUg+B,YAAc,WACvB,OAAO,GAERh+B,UAAUs8B,cAAgB,SAAS9X,GAClC,MAAkB,OAAd/pB,KAAK8iB,MAAuB9iB,KAAKuf,KAAmB,aAAE,GAAGjV,WACtDtK,KAAKuf,KAAmB,aAAE,GAAG/U,WAAWuf,IAEhDxkB,UAAUw7B,kBAAoB,SAAS7hB,EAAMwkB,GAC5C,GAAI3Z,GAAM5nB,KAAK4T,OAAO/V,KAAKsoB,eAAepJ,EAAM,GAAKlf,KAAKijB,WAAa,MAGvE,OADIygB,IAAQ1jC,KAAKkf,KAAKwK,UAAUxK,IAAO6K,IAChCA,GAKRxkB,UAAUo+B,eAAiB,SAASC,EAAOC,EAAWC,GACrD,IAAI9jC,KAAKumB,YACR,MAAOqd,EACJ5jC,MAAKumB,YAAYwd,aAGpBH,EAAQ5jC,KAAKumB,YAAYwd,aAFzB/jC,KAAKumB,YAAYwd,aAAeH;;AAKjC,IADA,GAAII,GAAQH,EAAYD,EACjBI,EAAQH,EAAaC,GAC3BF,IACAI,GAASH,CAGV,OADAD,GAAQzhC,KAAKof,IAAIqiB,EAAO,IAIzBr+B,UAAU83B,mBAAqB,SAASjrB,GACvC,GAAIyD,GAAI7V,KAAKynB,OAAOrV,EAAG4qB,OACnBO,EAAKv9B,KAAKynB,OAAOrV,EAAG6qB,MACpBM,IAAM1nB,IAAG0nB,EAAKv9B,KAAKynB,OAAOrV,EAAG6qB,MAAQ,GACzC,IAAIe,GAAKh+B,KAAKigB,GAAGge,WAEb2F,EAAQxxB,EAAGwrB,OACf,IAAGxrB,EAAGG,IAAMvS,KAAK6jB,SAAS,CACzB,GAAIya,GAAat+B,KAAKynB,OAAOE,QAAQvV,EAAG+qB,OAAS,GAAKn9B,KAAKynB,OAAOE,QAAQvV,EAAG+qB,QAASn9B,KAAKigB,GAAGU,iBAC9FijB,GAAQr+B,UAAUo+B,eAAeC,EAAO5F,EAAIM,GAE7C,GAAI2F,GAAkBL,EAAQ5F,EAC1B9nB,EAAIlW,KAAKynB,OAAOE,QAAQvV,EAAG+qB,SAAWn9B,KAAKynB,OAAO3S,OAAU9U,KAAKigB,GAAGK,mBAAqB,EAAK,GAAM2jB,CACxG,QAAQpuB,EAAEA,EAAG0nB,GAAGA,EAAIrnB,EAAEA,IAGvB3Q,UAAUk4B,iBAAmB,SAAUrrB;AACtC,GAAI/E,GAASrN,KAAK28B,mBACd1V,EAAMjnB,KAAKq9B,mBAAmBjrB,GAE9B8D,EAAI+Q,EAAI/Q,EACRL,EAAIoR,EAAIpR,EACR0nB,EAAKtW,EAAIsW,GAGT2G,EAAgB,EAIpB,IAAK3G,EAAL,CAEA,GAAI4G,GAAY5+B,UAAUoN,OAAOqlB,qBAAqC,SAAdh4B,KAAK8iB,SAC1D1Q,EAAGsU,QAAUnhB,UAAUoN,OAAOslB,oBAE7Bxd,EAAI/Y,SAAS0G,cAAc,OAC3Bg8B,EAAchyB,EAAGgI,eAAe,iBAAmBhI,EAAG+uB,aACzDkD,EAAejyB,EAAGgI,eAAe,gBAAkBhI,EAAGgvB,YAEnDkD,EAAcH,IAAc/xB,EAAGsU,QAAU0d,GACzCG,EAAeJ,IAAc/xB,EAAGsU,QAAU2d,GAE1CjB,EAAK,wBACJhxB,EAAGsU,QAAUyd,KACjBf,EAAK,sBAEHgB,IACFhB,GAAM,6BAEJiB,IACFjB,GAAM;AAEJkB,IACFJ,GAAiB,+DAEfK,IACFL,GAAiB,4DAGlB,IAAIb,GAAM99B,UAAUknB,UAAUwN,YAAY7nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,EAClEixB,KACHD,GAAM,IAAMC,EAGb,IAAIR,GAAYzwB,EAAG0wB,MAAS,cAAgB1wB,EAAG0wB,MAAQ,IAAO,GAC1DA,EAAS1wB,EAAG2wB,UAAa,SAAW3wB,EAAG2wB,UAAY,IAAO,GAE1DyB,GACH,oBACA,OAAStuB,EAAI,KACb,QAAUL,EAAI,KACd,UAAY0nB,EAAK1nB,EAAI,IAAM,KAC3BitB,EACAD,EACCzwB,EAAGiwB,aAAe,IAClBhoB,KAAK,KAEH+V,EAAO,kBAAoBhe,EAAGG,GAAK,YAAc6wB,EAAK,YAAYoB,EAAW,IAC7EL,KACH/T,GAAQ8T,GAEuB,SAA7B3+B,UAAU+T,WAAW1L,OACvBwE,EAAK7M,UAAUsd,SAASzQ,EAAGG;AAGxBH,EAAGsU,SACN0J,GAAQ7qB,UAAUknB,UAAUyN,eAAe9nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,IACxEge,GAAQ7qB,UAAUknB,UAAU0N,eAAe/nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,GAAM,SAC7Ege,GAAQ,SAER3V,EAAElO,UAAY6jB,EAEdpwB,KAAKk7B,UAAUzwB,KAAKgQ,EAAEnQ,YACtB+C,EAAOxB,YAAY4O,EAAEnQ,cAGtB/E,UAAUgd,cAAgB,SAASrY,GAElC,IADA,GAAIqI,GAAK,KACFrI,IAASqI,GAAMrI,EAAKoG,cAC1BiC,EAAKrI,EAAKoG,aAAa,YACvBpG,EAAOA,EAAK8B,UAEb,OAAOuG,IAGRhN,UAAU4f,KAAO,SAAS5S,GACrBvS,KAAKqjB,UAAY9Q,IACrBvS,KAAK2Z,UAAS,EAAOpH,GACrBvS,KAAKqjB,SAAW9Q,EAChBvS,KAAK4iB,YAAYrQ,KAElBhN,UAAUoU,SAAW,SAAS/L,EAAM2E;AACnC,IAAIA,GAAMvS,KAAKqjB,UAAY9Q,EAA3B,CACA,GAAIH,GAAKpS,KAAK6iB,SAAS7iB,KAAKqjB,SACxBjR,KACCxE,IAAMwE,EAAGuB,KAAO3T,KAAKyiC,QAAQp4B,OACjCrK,KAAKqjB,SAAW,KAChBrjB,KAAKyiC,QAAU,KACfziC,KAAK4iB,YAAYxQ,EAAGG,IACpBvS,KAAKykC,iBAAiBryB,EAAIxE,MAG5BrI,UAAUk/B,iBAAmB,SAASryB,EAAIxE,GACrC5N,KAAKyjB,YACH7V,EAIJ5N,KAAK+R,UAAU,gBAAiBK,EAAGG,GAAIH,IAHnCA,GACHpS,KAAKklB,YAAY9S,EAAGG,IAAI,GAI1BvS,KAAKyjB,WAAa,MAEd7V,GACH5N,KAAK+R,UAAU,kBAAmBK,EAAGG,GAAIH,KAK5C7M,UAAU63B,UAAY,SAAShQ,EAAMC,GACpC,GAAItc,KACJ,KAAK,GAAIrN,KAAK1D,MAAKw6B,QAAS,CAC3B,GAAIpoB,GAAKpS,KAAKw6B,QAAQ92B,EAClB0O,MAAUgb,IAASC,GAAQjb,EAAG2T,WAAasH,GAAMjb,EAAGgU,SAAWgH,IAClErc,EAAOtG,KAAK2H;;CAEd,MAAOrB,IAERxL,UAAUm/B,iBAAmB,SAASnyB,GACrC,GAAKA,EAAL,CAGA,IAAK,GADDoyB,GAAkBp/B,UAAU21B,UACvB/wB,EAAE,EAAGA,EAAEw6B,EAAgBh+B,OAAQwD,IAAK,CAC5C,GAAIy6B,GAAiBD,EAAgBx6B,EACrC,IAAIy6B,EAAet0B,aAAa,aAAeiC,EAC9C,MAAOqyB,GAGT,MAAO,QAERr/B,UAAUs/B,UAAY,SAAStyB,EAAI3E,GAClC,GAAIwE,GAAmB,gBAANG,IAA+B,gBAANA,GAAkBhN,UAAUsd,SAAStQ,GAAMA,CAGrF,IAFA3E,EAAOA,GAAMrI,UAAUud,MAElB1Q,KAAOpS,KAAKiS,WAAW,yBAA4BjS,KAAK+R,UAAU,wBAAyBK,EAAIxE,KAApG,CAGA,GAAI2hB,GAAchqB,UAAUoN,OAAO4c,WACnChqB,WAAUoN,OAAO4c,YAAcnd,EAAG2T,WAAWG,UAC7C,IAAI0G,GAAkBrnB,UAAUoN,OAAOia;;AACvCrnB,UAAUoN,OAAOia,iBAAkB,CAEnC,IAAIkY,GAAiB1yB,EAAG0wB,MACpBiC,EAAsB3yB,EAAG2wB,SACzBx9B,WAAUoN,OAAOqmB,4BACpB5mB,EAAG0wB,MAAQv9B,UAAUoN,OAAOqyB,sBAC5B5yB,EAAG2wB,UAAYx9B,UAAUoN,OAAOsyB,4BAGjC1/B,UAAUya,eAAe,GAAIhX,MAAKoJ,EAAG2T,YAAanY,GAElDwE,EAAG0wB,MAAQgC,EACX1yB,EAAG2wB,UAAYgC,EACfx/B,UAAUoN,OAAO4c,YAAcA,EAC/BhqB,UAAUoN,OAAOia,gBAAkBA,EAE/BrnB,UAAUokB,QAAUpkB,UAAUokB,OAAO/b,KACxCrI,UAAUga,KAAKyE,aAAa,GAAGniB,UAAYf,eAAeyE,UAAUm/B,iBAAiBtyB,EAAGG,KAAOzR,eAAeyE,UAAUga,KAAKyE,aAAa,IAAM;AAGjJze,UAAUwM,UAAU,uBAAwBK,EAAIxE,MAGjDrI,UAAU2/B,oBAAsB,SAASC,GACxC,IAAGA,EAAEn5B,WAAL,CACA,GAAIo5B,GAAO7/B,UAAUga,KAAmB,aAAE,GAEtC8lB,EAAQD,EAAKE,SACdD,GAAM7xB,WAAa6xB,EAAM7xB,UAAU9Q,QAAQ,oBAAsB,GAAK2iC,EAAME,kBAC9EF,EAAQA,EAAME,iBAEXF,GAAyD,IAAhDA,EAAM7xB,UAAU9Q,QAAQ,qBACpC2iC,EAAMx5B,YAAYs5B,KAIpB5/B,UAAUigC,wBAA0B,SAASL,EAAG1kC,GAC/C,GAAIglC,GAAOlgC,UAAUi8B,cAAc/gC,EAAO,EAC1C0kC,GAAEz4B,MAAM3L,IAAM0kC,EAAK1kC,IAAM,KACzBokC,EAAEz4B,MAAMoI,OAAS2wB,EAAK3wB,OAAS,MAGhCvP,UAAUy9B,uBAAyB,SAASviC;AAC3C,GAAI0kC,GAAIzjC,SAAS0G,cAAc,MAE/B+8B,GAAExwB,aAAa,WAAYlU,EAAM8R,IACjCvS,KAAKk7B,UAAUzwB,KAAK06B,GACpBnlC,KAAKwlC,wBAAwBL,EAAG1kC,EAEhC,IAAImT,GAAM5T,KAAKysB,UAAU4N,kBAAkB55B,EAAMslB,WAAYtlB,EAAM2lB,SAAU3lB,GACzE2vB,EAAOpwB,KAAKysB,UAAU6N,oBAAoB75B,EAAMslB,WAAYtlB,EAAM2lB,SAAU3lB,EAChF0kC,GAAE3xB,UAAY,kBACXI,IACFuxB,EAAE3xB,WAAa,IAAMI,GACnBwc,IACF+U,EAAE54B,UAAY6jB,GACfpwB,KAAKklC,oBAAoBC,IAE1B5/B,UAAUm1B,WACVn1B,UAAU6mB,MAAQ,SAAS3lB,EAAK2mB,GAG/B,GAFA3mB,EAAMA,GAAOzG,KAAK0lC,UAElB,CAKAj/B,IAA4B,IAApBA,EAAI/D,QAAQ,KAAa,IAAM,KAAO,cAAe,GAAKsG,OAAQwf;AACtExoB,KAAK2S,OAAOgzB,gBAAkBl/B,GAAO,QAAUzG,KAAK2W,MACxD,IAAI0W,EAGJ,IAFAD,EAAOA,GAAQptB,KAAK+iB,MAEhB/iB,KAAKmsB,WAAY,CACpB,GAAIyZ,GAAK5lC,KAAKysB,UAAUoN,WAGxB,KADAzM,EAAOptB,KAAKkf,KAAKlf,KAAKmsB,WAAa,UAAU,GAAInjB,MAAKokB,EAAKnkB,YACpDmkB,EAAOptB,KAAKijB,WAAWmK,EAAOptB,KAAKkf,KAAKuF,IAAI2I,EAAM,GAAIptB,KAAKmsB,WAClEkB,GAAKD,CAGL,KADA,GAAIyY,IAAa,EACVxY,EAAKrtB,KAAKmjB,WAChBkK,EAAKrtB,KAAKkf,KAAKuF,IAAI4I,EAAI,EAAGrtB,KAAKmsB,YAC3BnsB,KAAK06B,QAAQkL,EAAGxY,KAAUyY,EAC7BzY,EAAOptB,KAAKkf,KAAKuF,IAAI2I,EAAM,EAAGptB,KAAKmsB,YAAkB0Z,GAAa,CAGpE,IAAIC,GAAUzY,CACd,GACCA,GAAKyY,EACLA,EAAU9lC,KAAKkf,KAAKuF,IAAI4I,EAAI,GAAIrtB,KAAKmsB,kBAC7B2Z,EAAU1Y,GAAQptB,KAAK06B,QAAQkL,EAAGE,IAE3C,IAAU1Y,GAANC,EACH,OAAO,CAER,KADA9mB,WAAWC,IAAIC,EAAM,SAAWm/B,EAAGxY,GAAQ,OAASwY,EAAGvY,GAAK,SAAS0Y;AAAIxgC,UAAUygC,QAAQD,KAC7E1Y,EAAPD,GACNptB,KAAK06B,QAAQkL,EAAGxY,KAAS,EACzBA,EAAOptB,KAAKkf,KAAKuF,IAAI2I,EAAM,EAAGptB,KAAKmsB,gBAGpC5lB,YAAWC,IAAIC,EAAK,SAASs/B,GAAIxgC,UAAUygC,QAAQD,IAEpD,OADA/lC,MAAK+R,UAAU,aACR,IAERxM,UAAUygC,QAAU,SAASC,GAC5B,GAAI7J,GACAl3B,GAAQ,CACZ,IAAIlF,KAAKkmC,UAA6B,OAAjBlmC,KAAKkmC,SACzB,IACC9J,EAAMp8B,KAAKA,KAAKkmC,UAAUhqB,MAAM+pB,EAAOhmC,OAAO+H,cAC9C,MAAOzH,GACP2E,GAAQ,MAGTk3B,GAAMp8B,KAAKmmC,cAAcF,GACrB7J,IACHl3B,GAAQ,EAIPA,KACFlF,KAAK+R,UAAU,eAAgBk0B,EAAOhmC,SACtCm8B,MAGD72B,UAAU6gC,iBAAiBhK,GAE3Bp8B,KAAK+R,UAAU,aAEhBxM,UAAU6gC,iBAAmB,SAAShK;AACrCp8B,KAAKsmB,UAAW,EAChBtmB,KAAKs8B,aAAc,CACnB,KAAK,GAAInyB,GAAI,EAAGA,EAAIiyB,EAAIz1B,OAAQwD,IAC1BnK,KAAK+R,UAAU,kBAAmBqqB,EAAIjyB,MAC3CnK,KAAK8R,SAASsqB,EAAIjyB,GAEnBnK,MAAKs8B,aAAc,EACft8B,KAAKqsB,cAAcrsB,KAAKisB,mBAE5BjsB,KAAKsmB,UAAW,EACZtmB,KAAKqmC,aAAarmC,KAAKqmC,cAC3BrmC,KAAKqmC,YAAc,MAEpB9gC,UAAU+gC,YAAc,SAAS7lC,GAChCA,EAAMkT,KAAQlT,EAAMkT,MAAQlT,EAAM8lC,WAAc,GAChD9lC,EAAMslB,WAAaxgB,UAAUihC,WAAW/lC,EAAMslB,YAC9CtlB,EAAM2lB,SAAW7gB,UAAUihC,WAAW/lC,EAAM2lB,WAG7C7gB,UAAUihC,WAAa,SAAStnB,GAC/B,MAAIA,GAEc,gBAARA,GACF3Z,UAAUknB,UAAUoL,SAAS3Y,GACzB,GAAIlW,MAAKkW,GAHb;;EAMT3Z,UAAUkhC,QACVlhC,UAAUkhC,KAAKvqB,MAAQ,SAAS3E,MACZ,gBAARA,QACVhS,UAAUmhC,MAAQr0B,KAAK,IAAMkF,KAAO,KACpCA,KAAQhS,UAAe,MAAIA,UAAUmhC,MAAMnvB,MAAQhS,UAAUmhC,MAAMjsB,GAAKlV,UAAUmhC,UAG/EnvB,KAAKovB,eACRlhC,OAAO6U,aAAe/C,KAAKovB,aAE5B,IAAIC,aAAerhC,UAAUmhC,OAASnhC,UAAUmhC,MAAME,YAAerhC,UAAUmhC,MAAME,eACjFC,oBAAqB,CACzB,KAAK,GAAI7vB,OAAO4vB,aACf,GAAIA,YAAYxsB,eAAepD,KAAM,CACpC6vB,oBAAqB,CACrB,IAAItV,YAAaqV,YAAY5vB,KACzB4G,IAAMrY,UAAUisB,WAAWxa;;AAC/B,IAAK4G,IAAK,QACVA,KAAI5E,OAAO,EAAG4E,IAAIjX,OAClB,KAAK,GAAI6J,GAAI,EAAGA,EAAI+gB,WAAW5qB,OAAQ6J,IAAK,CAC3C,GAAIs2B,QAASvV,WAAW/gB,GACpB9K,KAAQsR,IAAK8vB,OAAOz8B,MAAOsX,MAAOmlB,OAAOnlB,MAC7C,KAAK,GAAIolB,cAAcD,QACtB,GAAIA,OAAO1sB,eAAe2sB,YAAa,CACtC,GAAkB,SAAdA,YAAuC,SAAdA,WAC5B,QACDrhC,KAAIqhC,YAAcD,OAAOC,YAG3BnpB,IAAInT,KAAK/E,MAIRmhC,oBACHthC,UAAUwM,UAAU,mBAGrB,KAAK,GADDqqB,QACKjyB,EAAI,EAAGA,EAAIoN,KAAK5Q,OAAQwD,IAAK,CACrC,GAAI1J,OAAQ8W,KAAKpN,EACjB5E,WAAU+gC,YAAY7lC,OACtB27B,IAAI3xB,KAAKhK,OAEV,MAAO27B,MAER72B,UAAU2W,MAAQ,SAAS3E,EAAMlU;AAChCrD,KAAKkmC,SAAW7iC,EAChBrD,KAAKgmC,SAAS/lC,QAAS+H,aAAcuP,MAEtChS,UAAUyhC,KAAO,SAASvgC,EAAKY,GACX,gBAARA,KACVrH,KAAKkmC,SAAW7+B,EAChBA,EAAOlB,UAAU,IAGlBnG,KAAK0lC,UAAYj/B,EACjBzG,KAAKqmC,YAAch/B,EACnBrH,KAAKosB,MAAM3lB,EAAKzG,KAAK+iB,QAGtBxd,UAAU0hC,YAAc,SAASr5B,GACpB,OAARA,IAAeA,EAAO,IAC1B5N,KAAKmsB,WAAave,GAGnBrI,UAAUisB,WAAa,SAASluB,EAAM4jC,GACrC,MAAIA,IACHlnC,KAAKwxB,WAAWluB,GAAQ4jC,EAAMrI,MAAM,GAC7B7+B,KAAKwxB,WAAWluB,KAExBtD,KAAKwxB,WAAWluB,GAAStD,KAAKwxB,WAAWluB,OAClCtD,KAAKwxB,WAAWluB,KAExBiC,UAAU4hC,aACV5hC,UAAU4gC,cAAgB,SAASF,GAClC,GAAI10B,EACJ,KAAK00B,EAAO3+B,cAAe;AAC1B,GAAI8/B,GAAanB,EAAOhmC,OAAO+H,YAC/Bi+B,GAAS,GAAItmC,qBAAoB,cACjCsmC,EAAOl+B,cAAcq/B,GAItB,GADA71B,EAAM00B,EAAO3+B,cAAc,QACR,QAAfiK,EAAIvL,QAAmB,MAAO,KAClC,IAAIqhC,GAAO91B,EAAIjB,aAAa,eACxB+2B,KACH5hC,OAAO6U,aAAe+sB,EAGvB,KAAK,GADD/hB,GAAO2gB,EAAOt8B,QAAQ,kBACjBQ,EAAI,EAAGA,EAAImb,EAAK3e,OAAQwD,IAAK,CACrC,GAAIm9B,GAAOhiB,EAAKnb,GAAGmG,aAAa,OAC5BsN,EAAM5d,KAAKwxB,WAAW8V,EAC1B,IAAK1pB,EAAL,CACAA,EAAI5E,OAAO,EAAG4E,EAAIjX,OAElB,KAAK,GADD4gC,GAAOtB,EAAOt8B,QAAQ,UAAW2b,EAAKnb,IACjCqG,EAAI,EAAGA,EAAI+2B,EAAK5gC,OAAQ6J,IAAK,CAIrC,IAAK,GAHDg3B,GAAMD,EAAK/2B,GACX6qB,EAAQmM,EAAIp9B,WACZ1E,GAAQsR,IAAKuwB,EAAK/2B,GAAGF,aAAa,SAAUqR,MAAO4lB,EAAK/2B,GAAGF,aAAa,UACnE4vB,EAAI,EAAGA,EAAI7E,EAAM10B,OAAQu5B,IAAK;AACtC,GAAIuH,GAAOpM,EAAM6E,EACI,UAAjBuH,EAAKv4B,UAAwC,SAAjBu4B,EAAKv4B,WAErCxJ,EAAI+hC,EAAKv4B,UAAYu4B,EAAKl9B,WAE3BqT,EAAInT,KAAK/E,KAGP4f,EAAK3e,QACRpB,UAAUwM,UAAU,mBAGrB,KAAK,GADD21B,GAAKzB,EAAOt8B,QAAQ,cACfQ,EAAI,EAAGA,EAAIu9B,EAAG/gC,OAAQwD,IAAK,CACnC,GAAIw9B,GAAM3nC,KAAK4nC,eAAeF,EAAGv9B,GACjCnK,MAAKmnC,UAAUQ,EAAIrkC,MAAQqkC,EAAIh0B,KAGhC,GAAIyoB,KACJ7qB,GAAM00B,EAAOt8B,QAAQ,UAErB,KAAK,GAAIQ,GAAI,EAAGA,EAAIoH,EAAI5K,OAAQwD,IAAK,CACpC,GAAIiI,GAAKgqB,EAAIjyB,GAAKnK,KAAK4nC,eAAer2B,EAAIpH,GAC1C5E,WAAU+gC,YAAYl0B,GAEvB,MAAOgqB,IAER72B,UAAUqiC,eAAiB,SAAS19B,GAEnC,IAAK,GADDpE,MACKqE,EAAI,EAAGA,EAAID,EAAKE,WAAWzD,OAAQwD,IAC3CrE,EAAEoE,EAAKE,WAAWD,GAAG7G,MAAQ4G,EAAKE,WAAWD,GAAGE;;AAEjD,IAAK,GAAIF,GAAI,EAAGA,EAAID,EAAKM,WAAW7D,OAAQwD,IAAK,CAChD,GAAI09B,GAAQ39B,EAAKM,WAAWL,EACN,IAAlB09B,EAAMC,WACThiC,EAAE+hC,EAAM7hC,SAAW6hC,EAAMv9B,WAAau9B,EAAMv9B,WAAWC,UAAY,IAKrE,MAFKzE,GAAE6N,OAAM7N,EAAE6N,KAAOzJ,EAAKI,WAAaJ,EAAKI,WAAWC,UAAY,IAE7DzE,GAERP,UAAUa,YAAY,QAAS,WAC9B,GAAIpG,KAAK2S,OAAOo1B,gBAAiB,EAAM,CACtC,GAAIjiC,EACJA,GAAI9F,KAAK2S,OAAOo1B,aAAermC,SAAS0G,cAAc,OACtDtC,EAAE0N,UAAY,cACd1N,EAAE4G,MAAM7L,KAAOsB,KAAKC,OAAOpC,KAAK8gB,GAAK,KAAO,GAAK,KACjDhb,EAAE4G,MAAM3L,IAAMoB,KAAKC,OAAOpC,KAAK+gB,GAAK,IAAM,GAAK,KAC/C/gB,KAAKof,KAAKvT,YAAY/F,MAGxBP,UAAUa,YAAY,QAAS;AAC9B,GAAIN,GAAI9F,KAAK2S,OAAOo1B,YAChBjiC,IAAiB,gBAALA,KACd9F,KAAKof,KAAKjT,YAAYrG,GACtB9F,KAAK2S,OAAOo1B,cAAe,KAI9BxiC,UAAUyiC,MACT9rB,MAAM,SAASzZ,GACd,GAAI8U,GAAO9U,EAAImjB,MAAMqiB,OAAOjoC,KAAKkoC,QAAQ,SAASloC,KAAKmoC,MAAM,IAC7D,IAAK5wB,EAAK5Q,OAAV,CAGA4Q,EAAK,GAAGA,EAAK,GAAGtP,QAAQ,uBAAuB,KAE/CsP,EAAK,GAAGA,EAAK,GAAGtP,QAAQ,gBAAgB,IAMxC,KAHA,GACI2d,GADAwiB,KAEAC,EAAUJ,OAAO,MAAMjoC,KAAKsoC,QAAQ,gBAAgBtoC,KAAKuoC,MAAM,IAAI,KACjC,QAA9B3iB,EAAMyiB,EAAQG,KAAKjxB,KAAgB,CAI1C,IAHA,GACIkxB,GADAloC,KAEAmoC,EAAU,mBAC4B,QAAlCD,EAAMC,EAAQF,KAAK5iB,EAAM,MAChC5lB,KAAK2oC,YAAYF,EAAMlvB,WAAWhZ,EAC/BA,GAAEoW,MAAQpW,EAAEgS,KAAIhS,EAAEgS,GAAKhS,EAAEoW;AAC7ByxB,EAAS39B,KAAKlK,GAEf,MAAO6nC,KAERO,YAAY,SAASlmC,EAAIiD,GACxB,GAAI+U,GAAIhY,EAAIC,QAAQ,IACnB,IAAO,IAAH+X,EAAJ,CAED,GAAInX,GAAOb,EAAIgM,OAAO,EAAEgM,GAAGlY,cACvB8H,EAAQ5H,EAAIgM,OAAOgM,EAAE,GAAGxS,QAAQ,QAAQ,KAAKA,QAAQ,WAAW,GAC1D,YAAN3E,EACHA,EAAK,OACS,WAANA,GACRA,EAAO,aACP+G,EAAQrK,KAAK4oC,WAAWv+B,EAAM,EAAE,IAElB,SAAN/G,IACRA,EAAO,WACP+G,EAAQrK,KAAK4oC,WAAWv+B,EAAM,EAAE,IAEjC3E,EAAIpC,GAAM+G,IAEXu+B,WAAW,SAASv+B,EAAMw+B,EAAGC,GAC5B,GAAIhjC,GAAIuE,EAAMzC,MAAM,IAChB9B,GAAE,KACL+iC,EAAG/iC,EAAE,GAAG2I,OAAO,EAAE,GACjBq6B,EAAGhjC,EAAE,GAAG2I,OAAO,EAAE,GAElB,IAAIiZ,GAAK5hB,EAAE,GAAG2I,OAAO,EAAE,GACnBs6B,EAAK7nC,SAAS4E,EAAE,GAAG2I,OAAO,EAAE,GAAG,IAAI,EACnCgf,EAAK3nB,EAAE,GAAG2I,OAAO,EAAE,EACvB,OAAIlJ,WAAUoN,OAAO4lB,aAAezyB,EAAE,GAC9B,GAAIkD,MAAKA,KAAKggC,IAAIthB,EAAGqhB,EAAGtb,EAAGob,EAAGC,IAE/B,GAAI9/B,MAAK0e,EAAGqhB,EAAGtb,EAAGob,EAAGC;;EAE7BZ,QAAQ,kBACRI,QAAQ,eACRC,MAAM,aACNJ,MAAM,iBAEP5iC,UAAU0jC,sBACV1jC,UAAU2jC,YAAc,SAAS5lC,GAChC,GAAIqP,GAAS3S,KAAK2S,OAAOue,SAASD,SAC9B9mB,EAAG,CACP,KAAKA,EAAGA,EAAIwI,EAAOhM,QACdgM,EAAOxI,GAAG7G,MAAQA,EADI6G,KAG3B,GAAI6nB,GAAUrf,EAAOxI,EAChB5E,WAAU4jC,WACd5jC,UAAU6jC,aACX,IAAInb,GAASvsB,SAAS+T,eAAeuc,EAAQzf,IACzCrI,EAAO+jB,EAAOob,YAEdt4B,GACHihB,QAASA,EACT/D,OAAQA,EACR/jB,KAAMA,EACNo/B,SAAS,SAASl3B,GACjB,MAAO7M,WAAUgkC,YAAYvX,EAAQ3uB,MAAMmmC,UAAUt/B,EAAOkI,MAAS4f,IAEtEyX,SAAS,SAASp/B,EAAO+H,GACxB,MAAO7M,WAAUgkC,YAAYvX,EAAQ3uB,MAAMqmC,UAAUx/B,EAAMG,EAAQ+H,MAAS4f;;GAI1E1xB,EAAUiF,UAAU0jC,mBAAmB,OAAOjX,EAAQ3uB,KAAK,WAC/D,OAAO/C,GAAQA,EAAQyQ,GAAQA,GAEhCxL,UAAU0jC,mBAAmBU,qBAAuB,SAAS54B,GAE5D,MADAA,GAAO64B,QAAU74B,EAAO7G,KACjB6G,GAERxL,UAAU0jC,mBAAmBY,mBAAqB,SAAS94B,GAE1D,MADAA,GAAO64B,QAAU74B,EAAO7G,KAAKvC,qBAAqB,UAAU,GACrDoJ,GAERxL,UAAU0jC,mBAAmBa,qBAAuB,SAAS/4B,GAE5D,MADAA,GAAO64B,QAAU74B,EAAO7G,KAAKvC,qBAAqB,YAAY,GACvDoJ,GAERxL,UAAU0jC,mBAAmBc,iBAAmB,SAASh5B,GAExD,MADAA,GAAO64B,QAAU74B,EAAO7G,KAAKvC,qBAAqB;AAC3CoJ,GAERxL,UAAUgkC,aACTS,UACEvX,OAAQ,SAASwX,GACjB,GAAIn1B,IAAQm1B,EAAIn1B,QAAQ,MAAM,IAC9B,OAAO,6DAA6DA,EAAO,aAE5E40B,UAAU,SAASx/B,EAAKG,EAAM+H,EAAGO,GAChCzI,EAAKqC,UAAYlC,GAAO,IAEzBm/B,UAAU,SAASt/B,EAAKkI,EAAGO,GAC1B,MAAOzI,GAAKqC,WAAW,IAExB8J,MAAO,SAASnM,MAGjBggC,UACCzX,OAAO,SAASwX,GACf,GAAIn1B,IAAQm1B,EAAIn1B,QAAQ,OAAO,IAC/B,OAAO,4CAA4CA,EAAO,kCAE3D40B,UAAU,SAASx/B,EAAKG,EAAM+H,GAC7BlI,EAAKI,WAAWD,MAAMA,GAAO,IAE9Bm/B,UAAU,SAASt/B,EAAKkI;AACvB,MAAOlI,GAAKI,WAAWD,OAExBgM,MAAM,SAASnM,GACd,GAAIxG,GAAEwG,EAAKI,UAAY/E,WAAU0sB,OAAOvuB,GAAG,KAG7C8e,QACCiQ,OAAO,SAASwX,GAGf,IAAK,GAFDn1B,IAAQm1B,EAAIn1B,QAAQ,MAAM,KAC1Bsb,EAAK,4CAA4Ctb,EAAO,kCACnD3K,EAAE,EAAGA,EAAI8/B,EAAI7Y,QAAQzqB,OAAQwD,IACrCimB,GAAM,kBAAkB6Z,EAAI7Y,QAAQjnB,GAAG6M,IAAI,KAAKizB,EAAI7Y,QAAQjnB,GAAGwX,MAAM,WAEtE,OADAyO,IAAM,mBAGPsZ,UAAU,SAASx/B,EAAKG,EAAM+H,EAAG63B,GAChC,GAAIznB,GAAStY,EAAKI,YACbkY,EAAO2nB,eAAiBF,EAAIG,WAChC5nB,EAAO4nB,SAAWH,EAAIG,SACtB5nB,EAAO2nB,eAAgB,GAEJ,mBAAT9/B,KACVA,GAASmY,EAAO4O,QAAQ,QAAQ/mB;AACjCmY,EAAOnY,MAAMA,GAAO,IAErBm/B,UAAU,SAASt/B,EAAKkI,GACvB,MAAOlI,GAAKI,WAAWD,OAExBgM,MAAM,SAASnM,GACd,GAAIxG,GAAEwG,EAAKI,UAAY/E,WAAU0sB,OAAOvuB,GAAG,KAG7C2mC,MACC5X,OAAO,SAASwX,GACVA,EAAIK,cAERL,EAAIK,aAAe,QAAS,KAAM,KAAM,OAGzCL,EAAIM,qBACJ,IAAID,GAAcL,EAAIK,YAElBE,EAAMjlC,UAAUoN,OAChB83B,EAAKzqC,KAAKkf,KAAK8K,UAAUzkB,UAAU4Z,gBACnCurB,EAAO,KAAOC,EAAQ,CACvBplC,WAAUoN,OAAOi4B,oBACnBF,EAAO,GAAGF,EAAI7f,UAAU,EACxBggB,EAAQ,GAAGH,EAAIvkB,WACfwkB,EAAGtkB,SAASqkB,EAAIvkB,YAIjB,KAAK,GAFDmK,GAAO,GAEFya,EAAI,EAAGA,EAAIP,EAAY3jC,OAAQkkC,IAAK,CAC5C,GAAIC,GAAcR,EAAYO,EAO9B,QAJIA,EAAI,IACPza,GAAQ,KAGD0a,GACP,IAAK;AACJb,EAAIM,mBAAmB,GAAKM,EAE5Bza,GAAM,UAEN,KAAK,GADD2a,GAAON,EAAG7Z,cAAc,EACnBzmB,EAAE,EAAO,GAAJA,EAAQA,IACrBimB,GAAM,mBAAmB2a,EAAK5gC,GAAG,MAAM4gC,EAAK5gC,GAAG,WAChDimB,IAAM,YACN,MACD,KAAK,KACJ6Z,EAAIM,mBAAmB,GAAKM,EAE5Bza,GAAM,UACN,KAAK,GAAIjmB,GAAE,EAAO,GAAJA,EAAQA,IACrBimB,GAAM,kBAAkBjmB,EAAE,KAAKnK,KAAKkV,OAAOgK,KAAKoU,WAAWnpB,GAAG,WAC/DimB,IAAQ,WACR,MACD,KAAK,KACJ6Z,EAAIM,mBAAmB,GAAKM,EAE5Bza,GAAM,UACN,KAAK,GAAIjmB,GAAE,EAAO,GAAJA,EAAQA,IACrBimB,GAAM,kBAAkBjmB,EAAE,KAAKA,EAAE,WAClCimB,IAAQ,WACR,MACD,KAAK,QACJ6Z,EAAIM,mBAAmB,GAAKM,EAE5Bza,GAAQ,UACR,IAAIjmB,GAAIwgC,EACJK,EAAQP,EAAG7f;;AAGf,IAFAqf,EAAIgB,gBAEIP,EAAFvgC,GAAO,CACZ,GAAIkgC,GAAKrqC,KAAKysB,UAAUkN,YAAY8Q,EACpCra,IAAM,kBAAkBjmB,EAAE,KAAKkgC,EAAK,YACpCJ,EAAIgB,aAAaxgC,KAAKN,GACtBsgC,EAAGpkB,QAAQokB,EAAGxhC,UAAgC,GAAtBjJ,KAAK2S,OAAOmT,UAAa,IACjD,IAAI8C,GAAQ6hB,EAAG7f,WAAWogB,EAAO,EAAE,CACnC7gC,GAAO,GAALye,EAAQ,GAAiB,GAAd6hB,EAAGvkB,WAAcukB,EAAGnhB,aAElC8G,GAAQ,aAKX,MAAO,wFAAwFA,EAAK,iFAAiFA,EAAK,UAE3LsZ,UAAU,SAASx/B,EAAKG,EAAM+H,EAAGO,GAsDhC,QAASu4B,GAAsB/X,EAAEhpB,EAAEsQ,GAKlC,IAAK,GAJD0wB,GAAcx4B,EAAOs4B,aACrBG,EAA4B,GAAb3wB,EAAEyL,WAAczL,EAAE6O,aACjC+hB,EAAcD,EACdE,GAAc,EACTpL,EAAE,EAAGA,EAAEiL,EAAYxkC,OAAQu5B,IAAK;AACxC,GAAIqL,GAAMJ,EAAYjL,EACtB,IAAIqL,IAAQH,EAAc,CACzBE,GAAc,CACd,OAESF,EAANG,IACHF,EAAcE,GAGhBpY,EAAEhpB,EAAEvE,EAAI,IAAIyE,MAAM,EAAc+gC,EAAaC,EACxCC,GAAeD,IACnBlY,EAAEhpB,EAAEvE,EAAI,IAAI4lC,cAAgB,IAE7BrY,EAAEhpB,EAAEvE,EAAI,IAAIyE,MAAMoQ,EAAEmQ,UACpBuI,EAAEhpB,EAAEvE,EAAI,IAAIyE,MAAMoQ,EAAEoW,WACpBsC,EAAEhpB,EAAEvE,EAAI,IAAIyE,MAAMoQ,EAAEmW,cA1ErB,GAGI7K,GAAYK,EAHZokB,EAAMjlC,UAAUoN,OAChBwgB,EAAEjpB,EAAKvC,qBAAqB,UAC5B/B,EAAM+M,EAAO43B,kBAGjB,IAAGC,EAAI/T,SAAU,CAChB,IAAKvsB,EAAKuhC,UAAU,CACnB,GAAIrb,GAAO,mFAAmF7qB,UAAU2P,OAAOC,OAAOshB,SAAS,wBAC1HlxB,WAAUoN,OAAO+4B,YACrBtb,EAAOlmB,EAAKq7B,gBAAgBh5B,UAAU6jB;AACvClmB,EAAKq7B,gBAAgBh5B,UAAU6jB,EAC/BlmB,EAAKuhC,WAAU,EAEhB,GAAIE,GAAMzhC,EAAKq7B,gBAAgB59B,qBAAqB,SAAS,EAC7DgkC,GAAMC,QAAqD,IAA1CrmC,UAAU2Z,KAAKwK,UAAUtX,EAAG2T,aAA2D,IAAxCxgB,UAAU2Z,KAAKwK,UAAUtX,EAAGgU,UAE5F+M,EAAEvtB,EAAI,IAAIimC,SAASF,EAAMC,QACzBzY,EAAGvtB,EAAI,GAAKutB,EAAExsB,OAAO,GAAIklC,SAASF,EAAMC,QAExCD,EAAMz3B,QAAU,WACf,GAAGy3B,EAAMC,QAAS,CACjB,GAAIlmC,KACJH,WAAUgkC,YAAYc,KAAKb,UAAUt/B,EAAKxE,EAAIiN,GAE9CoT,EAAaxgB,UAAU2Z,KAAK8K,UAAUtkB,EAAIqgB,YAC1CK,EAAW7gB,UAAU2Z,KAAK8K,UAAUtkB,EAAI0gB,YAEnCA,IAAaL,IAAgBK,IAAaL,IAA0C,IAA3B3T,EAAGgU,SAASF,YAAiD,IAA7B9T,EAAGgU,SAASkD,iBACzGlD,EAAW7gB,UAAU2Z,KAAKuF,IAAI2B,EAAU,EAAG;;KAE5CL,GAAa,KACbK,EAAW,IAGZ+M,GAAEvtB,EAAI,IAAIimC,SAASF,EAAMC,QACzBzY,EAAGvtB,EAAI,GAAKutB,EAAExsB,OAAO,GAAIklC,SAASF,EAAMC,QAExCV,EAAsB/X,EAAE,EAAEpN,GAAY3T,EAAG2T,YACzCmlB,EAAsB/X,EAAE,EAAE/M,GAAUhU,EAAGgU,WAIzC,GAAGokB,EAAIsB,eAAiBtB,EAAI3kB,eAM3B,IAAI,GALAkmB,GAA0B,WAC7BhmB,EAAa,GAAI/c,MAAKmqB,EAAEvtB,EAAI,IAAIyE,MAAM8oB,EAAEvtB,EAAI,IAAIyE,MAAM8oB,EAAEvtB,EAAI,IAAIyE,MAAM,EAAE8oB,EAAEvtB,EAAI,IAAIyE,OAClF+b,EAAW,GAAIpd,MAAK+c,EAAW4N,UAA+C,GAAlCpuB,UAAUoN,OAAOkT,eAAsB,KACnFqlB,EAAsB/X,EAAG,EAAG/M,IAErBjc,EAAE,EAAK,EAAFA,EAAKA,IACjBgpB,EAAEhpB,GAAGigC,SAAW2B,CA4BlBb,GAAsB/X,EAAE,EAAE/gB,EAAG2T,YAC7BmlB,EAAsB/X,EAAE,EAAE/gB,EAAGgU,WAE9BojB,UAAU,SAASt/B,EAAMkI,EAAIO,GAC5B,GAAIwgB,GAAIjpB,EAAKvC,qBAAqB,UAC9B/B,EAAM+M,EAAO43B,kBAKjB,IAHAn4B,EAAG2T,WAAW,GAAI/c,MAAKmqB,EAAEvtB,EAAI,IAAIyE,MAAM8oB,EAAEvtB,EAAI,IAAIyE,MAAM8oB,EAAEvtB,EAAI,IAAIyE,MAAM,EAAE8oB,EAAEvtB,EAAI,IAAIyE;AACnF+H,EAAGgU,SAAS,GAAIpd,MAAKmqB,EAAEvtB,EAAI,GAAG,GAAGyE,MAAM8oB,EAAEvtB,EAAI,GAAG,GAAGyE,MAAM8oB,EAAEvtB,EAAI,GAAG,GAAGyE,MAAM,EAAE8oB,EAAEvtB,EAAI,GAAG,GAAGyE,QAEpF8oB,EAAEvtB,EAAI,IAAIyE,QAAS8oB,EAAEvtB,EAAI,GAAG,GAAGyE,MAAO,CAE1C,GAAI2hC,GAAWhsC,KAAK6iB,SAAS7iB,KAAKujB,aAC/ByoB,KACF55B,EAAG2T,WAAaimB,EAASjmB,WACzB3T,EAAGgU,SAAW4lB,EAAS5lB,UAMzB,MAFIhU,GAAGgU,UAAUhU,EAAG2T,aACnB3T,EAAGgU,SAAS7gB,UAAU2Z,KAAKuF,IAAIrS,EAAG2T,WAAWxgB,UAAUoN,OAAOmT,UAAU,YAExEC,WAAY,GAAI/c,MAAKoJ,EAAG2T,YACxBK,SAAU,GAAIpd,MAAKoJ,EAAGgU,YAGxB/P,MAAM,SAASnM,GACd3E,UAAU0sB,OAAO/nB,EAAKvC,qBAAqB,UAAU,OAIxDpC,UAAU0mC,UAAU,SAAS1qC;AAC5B,GAAIA,EAAI,CACPA,EAAImL,MAAMgH,QAAQ,OAElB,IAAIw4B,GAAa1rC,OAAOsB,aAAaJ,SAASD,KAAKI,WAAWH,SAASE,gBAAgBC,UACnFsqC,EAAc3rC,OAAOwB,aAAaN,SAASD,KAAKM,YAAYL,SAASE,gBAAgBG,WAErFqqC,EAAc5rC,OAAO2V,aAAazU,SAASE,gBAAgBgd,YAE5DstB,GACF3qC,EAAImL,MAAM3L,IAAIoB,KAAKC,MAAM8pC,EAAW/pC,KAAKof,KAAK6qB,EAAY7qC,EAAI6U,cAAc,EAAG,IAAI,KAEnF7U,EAAImL,MAAM3L,IAAIoB,KAAKC,MAAMD,KAAKof,KAAM6qB,EAAY7qC,EAAI6U,cAAc,EAAI,GAAK,GAAG,KAG5E1U,SAASE,gBAAgByqC,YAAc3qC,SAASD,KAAKwU,YACvD1U,EAAImL,MAAM7L,KAAKsB,KAAKC,MAAM+pC,GAAazqC,SAASD,KAAKwU,YAAY1U,EAAI0U,aAAa,GAAG,KAErF1U,EAAImL,MAAM7L,KAAKsB,KAAKC,OAAOV,SAASD,KAAKwU,YAAY1U,EAAI0U,aAAa,GAAG;;CAExEjW,KAAKssC,cAET/mC,UAAU8f,aAAa,SAAS9S,GAC/B,GAAKA,EAAL,CACA,IAAKvS,KAAK+R,UAAU,oBAAoBQ,IAGvC,YAFIvS,KAAKyjB,aACRzjB,KAAKyjB,WAAa,MAGpB,IAAIliB,GAAMvB,KAAKopC,aACfppC,MAAKisC,UAAU1qC,GACfvB,KAAKusC,eAAeh6B,EAAGhR,GACvBvB,KAAK+R,UAAU,cAAcQ,MAE9BhN,UAAUgnC,eAAiB,SAASh6B,EAAIhR,GACvC,GAAI6Q,GAAKpS,KAAK6iB,SAAStQ,GACnB4gB,EAAI5xB,EAAIoG,qBAAqB,OAC7BpC,WAAUknB,UAAU+f,iBACvBrZ,EAAE,GAAG5mB,UAAY,GACjB4mB,EAAE,GAAG5mB,UAAYhH,UAAUknB,UAAU+f,gBAAgBp6B,EAAG2T,WAAY3T,EAAGgU,SAAUhU,KAEjF+gB,EAAE,GAAG5mB,UAAYvM,KAAKysB,UAAUsN,aAAa3nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU;AACzE+gB,EAAE,GAAG5mB,WAAavM,KAAKysB,UAAU0N,eAAe/nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,IAAO,IAAI3D,OAAO,EAAG,IAIlG,KAAK,GADDw7B,GAAMjqC,KAAK2S,OAAOue,SAASD,SACtB9mB,EAAI,EAAGA,EAAI8/B,EAAItjC,OAAQwD,IAAK,CACpC,GAAIsiC,GAAcxC,EAAI9/B,GAClBD,EAAOxI,SAAS+T,eAAeg3B,EAAYl6B,IAAI82B,YAC/CqD,EAAQ1sC,KAAKupC,YAAYkD,EAAYppC,MACrCgH,EAAoCgL,SAA3BjD,EAAGq6B,EAAYtb,QAAyB/e,EAAGq6B,EAAYtb,QAAUsb,EAAYE,aAC1FD,GAAMhD,UAAUriC,KAAKrH,KAAMkK,EAAMG,EAAO+H,EAAIq6B,GACxCxC,EAAI9/B,GAAGkM,OACVq2B,EAAMr2B,MAAMhP,KAAKrH,KAAMkK,GAGzB3E,UAAUge,aAAehR,GAE1BhN,UAAUqnC,cAAc,SAASx6B,GAEhC,IAAK,GADD63B,GAAMjqC,KAAK2S,OAAOue,SAASD,SACtB9mB,EAAE,EAAGA,EAAI8/B,EAAItjC,OAAQwD,IAAK,CAClC,GAAID,GAAOxI,SAAS+T,eAAew0B,EAAI9/B,GAAGoI;;AAC1CrI,EAAMA,EAAKA,EAAKm/B,YAAYn/B,CAC5B,IAAIwiC,GAAM1sC,KAAKupC,YAAYU,EAAI9/B,GAAG9G,MAC9BiO,EAAIo7B,EAAMlD,UAAUniC,KAAKrH,KAAKkK,EAAKkI,EAAI63B,EAAI9/B,GAC5B,SAAf8/B,EAAI9/B,GAAGgnB,SACV/e,EAAG63B,EAAI9/B,GAAGgnB,QAAQ7f,GAEpB,MAAOc,IAER7M,UAAUsnC,gBAAgB,SAASt1B,GAClC,CAAA,GAAIhF,GAAGhN,UAAUge,aACbnR,EAAGpS,KAAK6iB,SAAStQ,EACbvS,MAAKopC,cAEbppC,KAAKgsB,WAAW5Z,EAAImF,GAEpBvX,KAAK+6B,SAAS3oB,EAAGG,GAAGH,GACpBpS,KAAKykC,iBAAiBryB,GAAG,GACzBpS,KAAKisB,oBAEN1mB,UAAUunC,cAAc,SAASv6B,GAChCvS,KAAK+sC,UAAU/sC,KAAKopC,eACpBppC,KAAKujB,aAAe,KACpBvjB,KAAK+R,UAAU,uBAEhBxM,UAAUwnC,UAAU,SAASxrC;AACxBA,IAAKA,EAAImL,MAAMgH,QAAQ,QAC3B1T,KAAKgtC,cAENznC,UAAUynC,WAAW,WAChBhtC,KAAKitC,QACRjtC,KAAKitC,OAAOjhC,WAAWG,YAAYnM,KAAKitC,QACzCjtC,KAAKitC,OAAO,MAEb1nC,UAAU+mC,WAAW,WACpB,IAAGtsC,KAAKitC,OAAR,CAGAjtC,KAAKitC,OAAOvrC,SAAS0G,cAAc,OACnCpI,KAAKitC,OAAOz5B,UAAU,eACtB,IAAI05B,GAAyC73B,SAApB3T,SAASoT,OAAwBpT,SAASoT,OAASpT,SAASD,KAAK2U,aACtF+2B,EAAmBzrC,SAAwB,gBAAIA,SAASE,gBAAgB6R,aAAe,CAC3FzT,MAAKitC,OAAOvgC,MAAMoI,OAAS3S,KAAKof,IAAI2rB,EAAkBC,GAAkB,KACxEzrC,SAASD,KAAKoK,YAAY7L,KAAKitC;;GAEhC1nC,UAAU6nC,cAAc,WACvB,GAAI71B,GAAOvX,KAAK4sC,iBAAkB5sC,KAAKgsB,WAAWhsB,KAAK6iB,SAAS7iB,KAAKujB,kBACjEvjB,KAAKiS,WAAW,gBAAmBjS,KAAK+R,UAAU,eAAe/R,KAAKujB,aAAchM,EAAMvX,KAAKyjB,gBAEnGzjB,KAAK6sC,gBAAgBt1B,GACrBvX,KAAK8sC,kBAENvnC,UAAU8nC,cAAgB,SAAS96B,EAAIhR,GACtCvB,KAAKujB,aAAehR,EACpBvS,KAAKstC,kBAAmB,EAExBttC,KAAKutC,eAAiBvtC,KAAKmpC,UAC3BnpC,KAAKmpC,UAAY5nC,EACjBvB,KAAKisC,UAAU1qC,IAEhBgE,UAAUioC,YAAc,SAAS5/B,EAAMrM,GACtCvB,KAAKykC,iBAAiBl/B,UAAUsd,SAAS7iB,KAAKujB,cAAc3V;AACxDA,GACHrI,UAAU0mB,mBACXjsB,KAAK+sC,UAAUxrC,GAEXvB,KAAKstC,mBACRttC,KAAKmpC,UAAYnpC,KAAKutC,eACtBvtC,KAAKstC,kBAAmB,GAEzBttC,KAAKutC,eAAiBvtC,KAAKujB,aAAe,MAE3Che,UAAUksB,cAAgB,WACrBlsB,UAAU4jC,YAAc5jC,UAAU+nC,kBACrC/nC,UAAU4jC,UAAUn9B,WAAWG,YAAY5G,UAAU4jC,WACtD5jC,UAAU4jC,UAAY,MAEvB5jC,UAAUkoC,gBAAgB,WACzBztC,KAAK+R,UAAU,iBAAiB/R,KAAKujB,aAAcvjB,KAAKyjB,aACxDzjB,KAAKwtC,aAAY,GACjBxtC,KAAK8sC;AAENvnC,UAAUmoC,sBAAsB,WAC/B1tC,KAAKopC,cAAcl1B,QAAQ,SAAS3T,GACnC,GAAI8hB,GAAI9hB,EAAEA,EAAEyM,OAAOvM,MAAMsM,UAEzB,IADKsV,EAAI7O,YAAW6O,EAAIA,EAAIkjB,iBACxBljB,GAAOA,EAAI7O,UACd,OAAO6O,EAAI7O,WACV,IAAK,eACJjO,UAAU6nC,eACV,MACD,KAAK,iBACJ,GAAIxpC,GAAE2B,UAAU2P,OAAOC,OAAO4P,gBAE9Bxf,WAAUyf,gBAAgBphB,EAAG2B,UAAU2P,OAAOC,OAAO8P,uBAAwB,WAC5E1f,UAAU2f,YAAY3f,UAAUge,cAChChe,UAAUke,WAAa,KACvBle,UAAUunC,iBAGX,MACD,KAAK;AACJvnC,UAAUkoC,iBACV,MAED,SACC,GAAIprB,EAAI/R,aAAa,cACpB/K,UAAUwM,UAAU,oBAAqBsQ,EAAI7O,UAAW6O,EAAK9hB,QACvD,CACN,GAAIotC,GAAOjB,EAAOkB,CACgC,KAA9CvrB,EAAI7O,UAAU9Q,QAAQ,uBAC0B,IAA/C2f,EAAI7O,UAAU9Q,QAAQ,uBACzBirC,EAAQtrB,EAAIrW,WAAWsE,aAAa,SACpCs9B,EAAMvrB,EAAIrW,WAAWA,aAErB2hC,EAAQtrB,EAAI/R,aAAa,SACzBs9B,EAAMvrB,EAAIrW,WACVqW,EAAMA,EAAI/X,aAGRqjC,IACHjB,EAAQnnC,UAAUgkC,YAAYhkC,UAAUoN,OAAOue,SAASD,SAAS0c,GAAOtqC,MACxEqpC,EAAMmB,aAAaF,EAAOtrB,EAAKurB,EAAKA,EAAIvE,iBAM9CrpC,KAAKopC,cAAc71B,UAAU,SAAShT;AACrC,QAAQA,GAAGE,OAAOyS,SACjB,IAAK3N,WAAU4U,KAAKyG,UACnB,IAAKrgB,GAAGE,OAAOiiC,SAAU,MACzBn9B,WAAU6nC,eACV,MACD,KAAK7nC,WAAU4U,KAAK0G,YACnBtb,UAAUkoC,qBAOdloC,UAAUuoC,gBAAgB,WACzB,GAAIrzB,GAAIza,KAAKmpC,SACb,IAAK1uB,EAAL,CAEA,GAAIszB,GAAMtzB,EAAEjQ,WAAW,EACvBujC,GAAIrhC,MAAMoI,OAAO,MACjBi5B,EAAIrhC,MAAMoI,OAAOi5B,EAAIt6B,aAAa,KAClCgH,EAAE/N,MAAMoI,OAAOi5B,EAAIt6B,aAAalO,UAAU0a,GAAG+tB,2BAA2B,KACxED,EAAIrhC,MAAMoI,OAAOi5B,EAAIt6B,aAAa,OAGnClO,UAAU0oC,iBAAmB,WAC5Bx9B,YAAY/O,SAASD,KAAM,YAAa8D,UAAU2oC;AAClDz9B,YAAY/O,SAASD,KAAM,UAAW8D,UAAU4oC,aAChD5oC,UAAU0oC,iBAAmB,cAE9B1oC,UAAU2oC,gBAAkB,SAAS3tC,GACpC,GAAIgF,UAAU6oC,cAAc,CACtB1sC,SAAS2sC,mBACb3sC,SAASD,KAAK+R,WAAa,oBAC3B9R,SAAS2sC,kBAAmB,EAE7B,IAAIC,GAAK/oC,UAAU6jC,cACfmF,EAAOhuC,GAAGA,EAAEyM,QAASzM,EAAE+mB,MAAO/mB,EAAEgnB,QAAQ9mB,MAAMkM,QAASlM,MAAMoM,QACjEyhC,GAAG5hC,MAAM3L,IAAMwE,UAAUipC,UAAU,GAAGD,EAAI,GAAGhpC,UAAU6oC,cAAc,GAAG,KACxEE,EAAG5hC,MAAM7L,KAAO0E,UAAUipC,UAAU,GAAGD,EAAI,GAAGhpC,UAAU6oC,cAAc,GAAG;;GAG3E7oC,UAAUkpC,cAAgB,SAASluC,GAClC,GAAI+tC,GAAK/oC,UAAU6jC,aACnB7jC,WAAUipC,WAAattC,SAASotC,EAAG5hC,MAAM7L,KAAK,IAAKK,SAASotC,EAAG5hC,MAAM3L,IAAI,KACzEwE,UAAU6oC,cAAiB7tC,GAAGA,EAAEyM,QAASzM,EAAE+mB,MAAO/mB,EAAEgnB,QAAQ9mB,MAAMkM,QAASlM,MAAMoM,UAElFtH,UAAU4oC,YAAc,WACnB5oC,UAAUipC,YACbjpC,UAAUipC,UAAYjpC,UAAU6oC,eAAgB,EAChD1sC,SAASD,KAAK+R,UAAY9R,SAASD,KAAK+R,UAAUvL,QAAQ,oBAAoB,IAC9EvG,SAAS2sC,kBAAmB,IAG9B9oC,UAAU6jC,YAAY,WACrB,IAAKppC,KAAKmpC,UAAU,CACnB,GAAI1uB,GAAE/Y,SAAS0G,cAAc;;AAC7BqS,EAAEjH,UAAU,gBACRjO,UAAUoN,OAAO+4B,YACpBjxB,EAAEjH,WAAW,uBACVjO,UAAUgkC,YAAYmF,YACzBj0B,EAAEjH,WAAW,sBAEV,cAAcm7B,KAAKtlC,UAAUC,aAChCmR,EAAEjH,WAAW,YACdiH,EAAE/N,MAAMwiB,WAAW,QAInB,KAAK,GAHDkB,GAAOpwB,KAAK4uC,mBAEZp5B,EAAUxV,KAAK2S,OAAOmmB,aACjB3uB,EAAI,EAAGA,EAAIqL,EAAQ7O,OAAQwD,IACnCimB,GAAM,4CAA4C5a,EAAQrL,GAAG,oCAAoCqL,EAAQrL,GAAG,gBAAgB5E,UAAU2P,OAAOC,OAAOK,EAAQrL,IAAI,cAEjKqL,GAAUxV,KAAK2S,OAAOomB;;AACtB,IAAK,GAAI5uB,GAAI,EAAGA,EAAIqL,EAAQ7O,OAAQwD,IACnCimB,GAAM,6CAA6C5a,EAAQrL,GAAG,yDAAyDqL,EAAQrL,GAAG,gBAAgB5E,UAAU2P,OAAOC,OAAOK,EAAQrL,IAAI,cAEvLimB,IAAM,SACN3V,EAAElO,UAAU6jB,EACR7qB,UAAUoN,OAAO2lB,gBACpB7d,EAAEnQ,WAAWM,YAAcrF,UAAUkpC,cACrCh0B,EAAEnQ,WAAWqB,cAAgB,WAAY,OAAO,GAChD8O,EAAEnQ,WAAWoC,MAAMwd,OAAS,UAC5B3kB,UAAU0oC,oBAGXvsC,SAASD,KAAK0S,aAAasG,EAAE/Y,SAASD,KAAK6I,YAC3CtK,KAAKmpC,UAAU1uB,CAEf,IAAIwvB,GAAIjqC,KAAK2S,OAAOue,SAASD;;AAC7Bb,EAAK,EACL,KAAK,GAAIjmB,GAAE,EAAGA,EAAI8/B,EAAItjC,OAAQwD,IAAK,CAClC,GAAIuiC,GAAM1sC,KAAKupC,YAAYU,EAAI9/B,GAAG9G,KAClC,IAAKqpC,EAAL,CACAzC,EAAI9/B,GAAGoI,GAAG,QAAQvS,KAAK2W,KACvB,IAAIzL,GAAS,EACT++B,GAAI9/B,GAAGe,SACTA,EAAS,yCAAyCf,EAAE,mCAAmC8/B,EAAI9/B,GAAGe,OAAO,gBAAgBlL,KAAKkV,OAAOC,OAAO,UAAU80B,EAAI9/B,GAAGe,QAAQ,gBAG/JlL,KAAK2S,OAAO+4B,YACftb,GAAM,iCAGP,IAAIye,GAAa7uC,KAAKkV,OAAOC,OAAO,WAAW80B,EAAI9/B,GAAG7G,KAC7B,iBAAfurC,KACTA,EAAa5E,EAAI9/B,GAAG7G,MAErB8sB,GAAM,YAAY6Z,EAAI9/B,GAAGoI,GAAG,8BAA8BrH,EAAO2jC,EAAW,SAASnC,EAAMja,OAAOprB,KAAKrH,KAAKiqC,EAAI9/B;AAChHimB,GAAM,UAIP,IAAK,GADD0e,GAAGr0B,EAAE9S,qBAAqB,OACrBwC,EAAE,EAAGA,EAAE2kC,EAAGnoC,OAAQwD,IAAK,CAC/B,GAAI4kC,GAAOD,EAAG3kC,EACd,IAAsB,iBAAlB4kC,EAAKv7B,UAA8B,CACtCu7B,EAAKxiC,UAAY6jB,CACjB,QAKFpwB,KAAK8tC,kBAEL9tC,KAAK0tC,sBAAsB1tC,MAC3Bya,EAAE/N,MAAMgH,QAAQ,OAChB+G,EAAE/N,MAAMwiB,WAAW,UAEpB,MAAOlvB,MAAKmpC,WAGb5jC,UAAUa,YAAY,kBAAmB,SAAS4oC,EAAQ5T,GACtDp7B,KAAKujB,cAAgByrB,IACvBhvC,KAAKujB,aAAe6X,KAGtB71B,UAAUqpC,mBAAmB;AAE7BrpC,UAAUua,mBAAqB,WACL,SAArB9f,KAAK2S,OAAO+Y,QACf1rB,KAAK2S,OAAO+Y,MAAQ1rB,KAAK2S,OAAO+Y,QACe,IAAvCriB,UAAUC,UAAU5G,QAAQ,WACI,IAArC2G,UAAUC,UAAU5G,QAAQ,SACY,IAAxC2G,UAAUC,UAAU5G,QAAQ,YACU,IAAtC2G,UAAUC,UAAU5G,QAAQ,WAE5B1C,KAAK2S,OAAO+Y,QACf1rB,KAAKigB,GAAGG,aAAe,EACnB5f,OAAO6I,UAAU4lC,kBACpBjvC,KAAKkvC,eAAe,gBAAiB,gBAAiB,eAAgB,SAAS98B,GAC9E,MAAIA,GAAG+8B,aAAe/8B,EAAGg9B,qBAA8B,KAChDh9B,GACL,SAASA,GACX,OAASA,GAAMA,EAAG+8B,aAAe/8B,EAAGg9B;;GAErCpvC,KAAKof,KAAKyC,WAAa,cAEvB7hB,KAAKkvC,eAAe,YAAa,aAAc,YAAa,SAAS98B,GACpE,MAAIA,GAAGi9B,SAAWj9B,EAAGi9B,QAAQ1oC,OAAS,EAAU,KAC5CyL,EAAGi9B,QAAQ,IACLriC,OAAOoF,EAAGpF,OAAQsa,MAAMlV,EAAGi9B,QAAQ,GAAG/nB,MAAOC,MAAMnV,EAAGi9B,QAAQ,GAAG9nB,OAEnEnV,GACN,WAAY,OAAO,MAIzB7M,UAAU2pC,cAAgB,SAASI,EAAOC,EAAUp3B,GAMnD,QAASq3B,GAAiBC,EAASnsC,EAAMoD,GAExC+J,YAAYg/B,EAASnsC,EAAM,SAAS/C,GACnC,MAAGgF,WAAU2tB,qBACL,EAEAxsB,EAASnG,KAKnB,QAASmvC,GAAsBC,EAAMC,EAAMprB,EAAMqrB,GAChD,GAAKF,GAASC,EAAd,CAGA,IADA,GAAI9pC,GAAI6pC,EAAK3iC,OACPlH,GAAKA,GAAKP,UAAU6Z,MACzBtZ,EAAIA,EAAEkG,UAEP,IAAGlG,GAAKP,UAAU6Z,KAAlB,CAKA,GAAIsI,GAAKvlB,KAAK2T,IAAI65B,EAAKpoB,MAAQqoB,EAAKroB,OAChCuoB,EAAK3tC,KAAK2T,IAAI65B,EAAKroB,MAAQsoB,EAAKtoB;;AAC3BuoB,EAALnoB,GAAeooB,EAAGtrB,KAAUkD,GAAOooB,EAAGpoB,EAAK,KAC1CioB,EAAKroB,MAAQsoB,EAAKtoB,MACrB/hB,UAAUqc,OAAO0C,sBAEjB/e,UAAUqc,OAAOyC,yBAIpB,QAAS0rB,GAAYxvC,GACpB,GAAI2X,GAAM3S,UAAU+T,WAAWwK,UAC9BksB,EAAWzqC,UAAUokB,OAASpkB,UAAUokB,OAAOpkB,UAAUud,QAAS,EAE/DmtB,EAAkB1qC,UAAU0mB,gBACtB,WAAP/T,GAAmB83B,IAErBzqC,UAAU0mB,iBAAmB,WAM5B,IAAI,GALA1Z,GAAKhN,UAAU+T,WAAWsK,QAC1BxR,EAAK7M,UAAUsd,SAAStQ,GACxBye,EAAWgf,EAAShd,WAEpBoJ,EAAM72B,UAAU63B,UAAUhrB,EAAG2T,WAAY3T,EAAGgU,UACxCjc,EAAI,EAAGA,EAAIiyB,EAAIz1B,OAAQwD,IAC3BiyB,EAAIjyB,GAAG6mB,IAAa5e,EAAG4e,KACzBoL,EAAIpjB,OAAO7O,EAAG,GACdA,IAGFiI,GAAGwrB,QAAUxB,EAAIz1B,OAAS;AAC1ByL,EAAGiuB,OAASjE,EAAIz1B,OAEhB3G,KAAK48B,aAAaxqB,GAAK7M,UAAU+T,WAAW1L,QAK9CrI,UAAUyc,eAAezhB,GAEf,UAAP2X,GAAmB83B,IACrBzqC,UAAU0mB,iBAAmBgkB,GAiI/B,QAASC,GAAY3vC,GACpBgF,UAAU4qC,mBACNrsB,IACHve,UAAU4c,aAAcotB,EAAShvC,GAAGE,QACpC8E,UAAUwc,mBAAoB,GAE/Bxc,UAAUse,SAAW,KACrBte,UAAUwe,WAAW,KACrBxe,UAAU8iB,UAAU,KAEpBpR,aAAam5B,GACbtsB,EAAYusB,GAAc,EAC1BC,GAAc,EAhNf,GACI56B,GAAQ66B,EAASH,EAAOtsB,EAAWwsB,EAAaD,EAChDG,GAFoD,IAAxCnnC,UAAUC,UAAU5G,QAAQ,YAA2D,IAAvC2G,UAAUC,UAAU5G,QAAQ,UAEzE,EAoEnB8sC,GAAiB9tC,SAASD,KAAM6tC,EAAM,GAAI,SAAS/uC;AAClD,IAAI4X,EAAO5X,GAAX,CAEA,GAAIujB,EAMH,MALAisB,GAAYR,EAAShvC,IACrBgF,UAAUkrC,qBACNlwC,EAAEiL,gBACLjL,EAAEiL,iBACHjL,EAAE8S,cAAe,GACV,CASR,IAFAk9B,EAAUhB,EAAShvC,GAEd8vC,EAGL,MAAKE,SAOD76B,EAAO1I,QAAUujC,EAAQvjC,QAAW7K,KAAK2T,IAAIJ,EAAO4R,MAAQipB,EAAQjpB,OAAS,GAAOnlB,KAAK2T,IAAIJ,EAAO6R,MAAQgpB,EAAQhpB,OAAS,KAChI+oB,GAAc,EACdr5B,aAAam5B,UARbE,GAAc,MAahBd,EAAiBxvC,KAAKuf,KAAmB,aAAE,GAAI,SAAU2wB,GACzDV,EAAiBxvC,KAAKuf,KAAmB,aAAE,GAAI,cAAe2wB,GAC9DV,EAAiBxvC,KAAKuf,KAAmB,aAAE,GAAI,cAAe,SAAShf,GACtE,MAAI8vC,IACC9vC,GAAKA,EAAEiL,gBACVjL,EAAEiL,kBACFjL,GAAGE,OAAO4S,cAAe,GACnB,GAJR,SAODm8B,EAAiBxvC,KAAKuf,KAAmB,aAAE,GAAI+vB,EAAM,GAAI,SAAS/uC;AACjE,IAAI4X,EAAO5X,GAAX,CAEA,GAAImwC,EAMJ,IALA5sB,EAAYwsB,GAAc,EAC1BD,GAAc,EACd9qC,UAAUwc,mBAAoB,EAC9B2uB,EAAaH,EAAUhB,EAAShvC,IAE3BmwC,EAEJ,YADAJ,GAAc,EAKf,IAAI/B,GAAM,GAAIvlC,KAEd,KAAKsnC,IAAgBxsB,GAAkC,IAArByqB,EAAMiC,EAUvC,MATAjrC,WAAUqc,OAAOoC,aAAa0sB,GAC9BlwC,OAAO8T,WAAW,WACjB/O,UAAU6c,cAAcsuB,IACtB,IAECnwC,EAAEiL,gBACLjL,EAAEiL,iBACHjL,EAAE8S,cAAe,EACjB9N,UAAUorC,kBAAmB,GACtB,CAMR,IAJAH,EAAejC,GAIX+B,IAAexsB,GAAcve,UAAUoN,OAAO8lB,WAAlD,CAGA,GAAImY,GAAUrrC,UAAUgd,cAAc7gB,SAASmvC,eAC3CC,EAAWvrC,UAAUgd,cAAcmuB,EAAW1jC,QAC9C+jC,EAAar7B,EAAQnQ,UAAUgd,cAAc7M,EAAO1I,QAAU,IAElE,IAAG4jC,GAAWE,GAAYF,GAAWE,GAAYF,GAAWG,EAS3D,MAPGxwC,GAAEiL,gBACJjL,EAAEiL;AAEHjL,EAAE8S,cAAe,EACjB9N,UAAU0c,oBAAqB,EAC/B1c,UAAUqc,OAAOoC,aAAa0sB,GAC9Bh7B,EAASg7B,GACF,CAIRN,GAAQ97B,WAAW,WAElBwP,GAAY,CACZ,IAAI9W,GAAS0I,EAAO1I,MAChBA,IAAUA,EAAOwG,WAAqD,IAAxCxG,EAAOwG,UAAU9Q,QAAQ,cAC1DsK,EAASA,EAAOu4B,iBAEjBhgC,UAAU2c,eAAexM,EAAQ1I,GAC7BzH,UAAUwe,YAAsC,UAAxBxe,UAAUwe,YAErCxe,UAAUylB,aAAazlB,UAAUse,SAAU,SAAS3Z,EAAMC,GAEzDD,EAAKwC,MAAMgH,QAAQ,OACnBnO,UAAU21B,UAAUliB,OAAO7O,EAAG,KAQ5B5E,UAAUoN,OAAO6lB,WACpBjzB,UAAUyrC,mBACXzrC,UAAUyc,eAAetM,IACxBnQ,UAAUoN,OAAO8lB;AAEnB/iB,EAASg7B,MAgBVlB,EAAiBxvC,KAAKuf,KAAmB,aAAE,GAAI+vB,EAAM,GAAI,SAAS/uC,GACjE,MAAI4X,GAAO5X,GAAX,QAEKujB,GACJ4rB,EAAsBh6B,EAAQ66B,EAAS,IAAK,KAEzCzsB,IACHve,UAAU0c,oBAAqB,GAEhCiuB,EAAY3vC,GACRgF,UAAUorC,kBACbprC,UAAUorC,kBAAmB,EACzBpwC,EAAEiL,gBACLjL,EAAEiL,iBACHjL,EAAE8S,cAAe,GACV,GALR,UASD5C,YAAY/O,SAASD,KAAM6tC,EAAM,GAAIY,IAGtC3qC,UAAUyrC,iBAAmB,WAC5BzrC,UAAU4qC,kBAEV,IAAIc,GAAS1rC,UAAU2rC,YAAcxvC,SAAS0G,cAAc,MAC5D6oC,GAAOz9B,UAAU,iBAEjBjO,UAAUkrC,mBAAmB,GAE7B/uC,SAASD,KAAKoK,YAAYolC;;EAE3B1rC,UAAUkrC,mBAAqB,SAASn0B,GACvC,GAAI20B,GAAS1rC,UAAU2rC,WACvB,IAAID,EAAO,CACV,GAAI5G,GAAO,EACX,IAAI9kC,UAAUse,WAAavH,EAAK,CAC/B,GAAIlK,GAAK7M,UAAUsd,SAAStd,UAAUse,SAClCzR,KACHi4B,EAAO,SAAWj4B,EAAGsU,OAASnhB,UAAUknB,UAAUsN,aAAa3nB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,GAAI7M,UAAUknB,UAAUkL,SAASvlB,EAAG2T,WAAY3T,EAAGgU,SAAUhU,IAAO,UAGrI,UAAxB7M,UAAUwe,YAAkD,YAAxBxe,UAAUwe,WACjDktB,EAAO1kC,WAAahH,UAAU2P,OAAOmiB,gBAAkB,kBAAkBgT,EAEzE4G,EAAO1kC,WAAahH,UAAU2P,OAAOoiB,cAAgB,gBAAgB+S;;GAGxE9kC,UAAU4qC,iBAAmB,WAC5B,GAAIc,GAAS1rC,UAAU2rC,WACnBD,IAAUA,EAAOjlC,aACpBilC,EAAOjlC,WAAWG,YAAY8kC,GAC9B1rC,UAAU2rC,YAAc,IAI1B3rC,UAAUiX,SAAS,SAAS20B,GAC3BA,EAAG/3B,UAAU,wBAAwB,GAAG,gBAAgB,mBAExDpZ,KAAKoxC,gBAAkB,SAAS7+B,GAC/B,MAAOvS,MAAKklB,YAAY3S,GAAI,IAE7BvS,KAAKoG,YAAY,eAAe,SAASmM,IACnCvS,KAAKsmB,UAAYtmB,KAAKqxC,SAAS9+B,IACnC4+B,EAAG74B,WAAW/F,GAAG,EAAK,cAExBvS,KAAKoG,YAAY,+BAAgC,SAASmM,GACzD,GAAKvS,KAAKqxC,SAAS9+B,GAAnB;AACA,GAAI/K,GAAE2pC,EAAG73B,SAAS/G,EAElB,OAAO,YAAH/K,GAAiBxH,KAAKyjB,YAAe0tB,EAAG74B,WAAW/F,GAAG,IAAgB,GACnE,WAAH/K,GAAsB,EAChB,gBAAHA,GAA2B,GAElC2pC,EAAG74B,WAAW/F,GAAG,EAAK,YACV,MAEbvS,KAAKoG,YAAY,iBAAiB,SAASmM,IACrCvS,KAAKsmB,UAAYtmB,KAAKqxC,SAAS9+B,IACnC4+B,EAAG74B,WAAW/F,GAAG,EAAK,aAGxB4+B,EAAGr3B,YAAY,SAASvH,EAAGxC,GAC1B,GAAIqC,GAAGpS,KAAK0F,IAAImd,SAAStQ,GACrBgF,IAEJ,KAAK,GAAI7T,KAAK0O,GACU,IAAnB1O,EAAEhB,QAAQ,OACV0P,EAAG1O,IAAM0O,EAAG1O,GAAG6xB,eAClBhe,EAAK7T,GAAK1D,KAAK0F,IAAI+mB,UAAUqN,WAAW1nB,EAAG1O,IAE3C6T,EAAK7T,GAAK0O,EAAG1O,GAGf,OAAO6T,IAER45B,EAAGl4B,iBAAiB,aAEpBk4B,EAAG/qC,YAAY,iBAAkBb,UAAU+rC;AAC3CH,EAAG/qC,YAAY,iBAAkBb,UAAU+rC,kBAC3CH,EAAG/qC,YAAY,iBAAkB,SAASmrC,EAAKh/B,GAC9CvS,KAAK0F,IAAIoT,YAAYvG,EAAIvS,KAAKgE,aAAc,gBAC5ChE,KAAK0F,IAAIwf,YAAY3S,MAKvBhN,UAAU8rC,SAAS,SAAS9+B,GAC3B,OAAO,GAGRhN,UAAUuT,YAAY,SAASvG,EAAGjP,EAAK+G,GAClCkI,EACHvS,KAAK6iB,SAAStQ,GAAIjP,GAAM+G,EAExBrK,KAAKmnC,UAAU7jC,GAAM+G,GAEvB9E,UAAUqT,YAAY,SAASrG,EAAGjP,GACjC,MAAOiP,GAAGvS,KAAK6iB,SAAStQ,GAAIjP,GAAMtD,KAAKmnC,UAAU7jC,IAElDiC,UAAUisC,sBAAsB,SAASj/B,EAAG7F,GAC3C1M,KAAKgrB,aAAazY,EAAG,SAAS0Y,GAC7BA,EAAEve,MAAM81B,SAAS,IAAI91B,GAEtB,IAAI0F,GAAKpS,KAAK6iB,SAAStQ;;AACvBH,EAAgB,YAAE1F,EAClB1M,KAAK86B,cAAc1oB,IAGpB7M,UAAU+rC,iBAAmB,SAASC,EAAIh/B,GACzC,GAAIgF,GAAQhS,UAAUqiC,eAAe2J,EAAIjnC,WACzCiN,GAAK5D,KAAQ4D,EAAK5D,MAAM4D,EAAKgvB,UAC7BhvB,EAAKwO,WAAaxgB,UAAUknB,UAAUoL,SAAStgB,EAAKwO,YACpDxO,EAAK6O,SAAW7gB,UAAUknB,UAAUoL,SAAStgB,EAAK6O,UAElD7gB,UAAUuM,SAASyF,IAEpBhS,UAAUksC,gBACTC,kBAAmB,EAAE,GACrBC,uBAAwB,EAAE,GAC1BjG,WAAY,EAAE,GAEdtkB,cAAe,GAAG,IAClB4d,uBAAwB,UAAW,UACnCC,4BAA6B,UAAW,WAGzC1/B,UAAUqsC;AACT5D,4BAA6B,GAAG,IAChC5sB,YAAa,GAAG,IAChB6c,YAAa,GAAG,KAGjB14B,UAAUssC,WAAa,SAAShiC,EAAK0H,EAAMu6B,GAC1C,IAAK,GAAI96B,KAAOO,GACQ,mBAAZ1H,GAAImH,KACdnH,EAAImH,GAAOO,EAAKP,GAAK86B,KAExBvsC,UAAU+Z,WAAa,WACtB,IAAK/Z,UAAUusC,KAEd,IAAK,GADDC,GAAQrwC,SAASiG,qBAAqB,QACjCwC,EAAI,EAAGA,EAAI4nC,EAAMprC,OAAQwD,IAAK,CACtC,GAAImH,GAAMygC,EAAM5nC,GAAG6nC,KAAKpsB,MAAM,+BAC9B,IAAItU,EAAI,CACP/L,UAAUusC,KAAOxgC,EAAI,EACrB,QAOH,GAAI2gC,GAAM,CAmBV,KAlBI1sC,UAAUusC,MAA4B,YAAnBvsC,UAAUusC,MAAyC,WAAnBvsC,UAAUusC,OAAoBG,EAAM,GAG3FjyC,KAAK6xC,WAAWtsC,UAAUoN,OAAQpN,UAAUksC,eAAgBQ;AAC5DjyC,KAAK6xC,WAAWtsC,UAAU0a,GAAI1a,UAAUqsC,SAAUK,GAE3B,SAAnB1sC,UAAUusC,OACbvsC,UAAU0a,GAAGI,aAAe,GAC5B9a,UAAUknB,UAAU6C,WAAa,SAASpQ,GACzC,GAAIgI,GAAMhI,EAAKoK,YACfpC,GAAY,GAANA,EAAW,IAAIA,EAAMA,CAC3B,IAAIkJ,GAAO,6BAA8BlR,EAAKgH,WAAY,0CACrBgB,EAAK,SAC1C,OAAOkJ,MAKL6hB,EAAJ,CAGA,GAAIC,GAAQ3sC,UAAUoN,OAAOw/B,YACzBD,KAAOA,EAAME,QAAU,IAE3B7sC,UAAUknB,UAAUyN,eAAiB,SAAS1U,EAAMC,EAAIrT,GACvD,MAAO,QAAQ7M,UAAUknB,UAAUmN,WAAWpU,GAAO,SAItDjgB,UAAUa,YAAY,mBAAoB;AAEzC,GAAIquB,GAAclvB,UAAU2Z,KAAKuV,YAAY,KACzClvB,WAAUknB,UAAU4lB,iBACvB9sC,UAAUknB,UAAU4lB,eAAiB9sC,UAAUknB,UAAUiE,UAE1D,IAAI4hB,GAAgB/sC,UAAUknB,UAAU4lB,cAiBxC,IAhBA9sC,UAAUknB,UAAUiE,UAAY,SAASxR,GACxC,GAAkB,SAAdlf,KAAK8iB,MAAkB,CAC1B,GAAInB,GAAQ8S,EAAYvV,EAOxB,OANsB,IAAlBA,EAAK0L,YACRjJ,EAAQpc,UAAU2P,OAAOgK,KAAKoU,WAAWpU,EAAK2R,YAAc,IAAMlP,IAE9DzC,IAAS3Z,UAAU2Z,KAAK8K,UAAU,GAAIhhB,SAC1C2Y,EAAQpc,UAAU2P,OAAOC,OAAOuP,qBAAuB,IAAM/C,GAEvDA,EAEP,MAAO2wB,GAAcjrC,KAAKrH,KAAMkf,IAK9B3Z,UAAUoN,OAAO++B,iBAAiB,CAKrC,IAAK,GAJDa,GAAehtC,UAAUga,KAAsB,gBAAE,GAAG5X,qBAAqB,OACzE6qC,EAAU,KAEV9H,EAAO,IACFvgC,EAAE,EAAGA,EAAEooC,EAAa5rC,OAAQwD,IAAK;AACzC,GAAImC,GAAMimC,EAAapoC,GACnB7G,EAAOgJ,EAAIgE,aAAa,OAC5B,IAAIhN,EAEH,OADAgJ,EAAII,MAAMy1B,MAAQ,OACV7+B,GACP,IAAK,UACJgJ,EAAII,MAAM7L,KAAO,OACjByL,EAAIkH,WAAa,oBACjB,MACD,KAAK,WACJlH,EAAII,MAAM7L,KAAO,MACjB,MACD,KAAK,YACJyL,EAAII,MAAM7L,KAAO,QACjByL,EAAIkH,WAAa,mBACjB,MACD,SACClH,EAAII,MAAM7L,KAAO6pC,EAAK,KACtBp+B,EAAIkH,WAAa,0BACjBk3B,EAAOA,EAAO,GAAKp+B,EAAI2J,gBAIgC,MAArD3J,EAAIkH,WAAa,IAAI9Q,QAAQ,qBAChC4J,EAAIN,YAAczG,UAAUga,KAAsB,gBAAE,KAEpDizB,EAAUlmC,GAMVkmC,IACFA,EAAQ9lC,MAAM7L,KAAO6pC,EAAK,SAK7BnlC,UAAU+Z,WAAa;;GAIpB9e,OAAOiyC,SAEX,SAAWC,GAEV,GAAIC,KACJD,GAAEE,GAAGC,cAAgB,SAASlgC,GAC7B,GAAuB,gBAAb,GAMH,CACN,GAAImgC,KAqBJ,OApBA9yC,MAAK+yC,KAAK,WACT,GAAI/yC,MAAQA,KAAKsQ,eACXtQ,KAAKsQ,aAAa,gBAAgB,CACtC,IAAK,GAAI0G,KAAOrE,GACN,QAALqE,IACHzR,UAAUoN,OAAOqE,GAAOrE,EAAOqE,GAE5BhX,MAAK2H,qBAAqB,OAAOhB,SACrC3G,KAAKuM,UAAY;AACjBvM,KAAKwT,WAAa,sBAEnBjO,UAAU+W,KAAKtc,KAAMuF,UAAUoN,OAAOuM,KAAM3Z,UAAUoN,OAAO/E,MACzD+E,EAAO4E,MACVhS,UAAU2W,MAAMvJ,EAAO4E,MAExBu7B,EAAMroC,KAAKlF,cAKO,IAAjButC,EAAMnsC,OAAqBmsC,EAAM,GAC9BA,EA5BP,MAAIH,GAAQhgC,GACJggC,EAAQhgC,GAAQ1M,MAAMjG,aAE7B0yC,GAAExtC,MAAM,UAAayN,EAAS,6CAgC/B8/B,QAGH,WAsCC,QAASO,GAAYztC,EAAW2Z,EAAMtR,GAClCsR,IACF3Z,EAAUwd,MAAQ7D,GAChBtR,IACFrI,EAAUud,MAAQlV,GAxCpB,GAAIoS,GAAiBza,UAAUya,eAC9B0M,EAAannB,UAAUmnB,WACpBumB,EAAoB,KACvBC,EAAkB,KAEfC,EAAsB,SAASj0B,EAAMtR,GACxC,GAAI0P,GAAOtd,IACXQ,QAAOyW,aAAai8B,GACpB1yC,OAAOyW,aAAag8B,GAEpBD,EAAYhzC,KAAMkf,EAAMtR,GAExBslC,EAAkB5+B,WAAW;AAEvBgJ,EAAKvL,UAAU,sBAAuBuL,EAAKwF,MAAOxF,EAAKyF,MAAOnV,GAAQ0P,EAAKwF,MAAO5D,GAAQ5B,EAAKyF,UACpG2J,EAAWrlB,KAAKiW,EAAM4B,EAAMtR,GAC5B0P,EAAKvL,UAAU,gBAAiBuL,EAAKwF,MAAOxF,EAAKyF,QAEjDviB,OAAOyW,aAAag8B,GACpBC,EAAkB,IAChB3tC,UAAUoN,OAAOsmB,eAEjBma,EAAkB,SAASl0B,EAAMtR,GACpC,GAAI0P,GAAOtd,KACVqzC,EAAMltC,SAEP6sC,GAAYhzC,KAAMkf,EAAMtR,GAExBpN,OAAOyW,aAAag8B,GACpBA,EAAoB3+B,WAAW,WAC3B4+B,GAGHxmB,EAAWzmB,MAAMqX,EAAM+1B,IACrB9tC,UAAUoN,OAAOsmB,cASrB1zB,WAAUa,YAAY,mBAAoB,WACtCb,UAAUoN,OAAOsmB,cACnB1zB,UAAUya,eAAiBmzB,EAC3B5tC,UAAUmnB,WAAa0mB,IAEvB7tC,UAAUya,eAAiBA;AAC3Bza,UAAUmnB,WAAaA"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.xml
new file mode 100644
index 0000000000..a1d652b8f1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.xml
new file mode 100644
index 0000000000..b30fcded8c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/dhtmlxscheduler.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext.xml
new file mode 100644
index 0000000000..d03257fa11
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ext</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.js
new file mode 100644
index 0000000000..20d4fb5ab9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.js
@@ -0,0 +1,44 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.active_link_view = "day";
+scheduler._active_link_click = function(e){
+	var start = e.target || event.srcElement;
+	var to = start.getAttribute("jump_to");
+	var s_d = scheduler.date.str_to_date(scheduler.config.api_date);
+	if (to) {
+		scheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);
+		if (e && e.preventDefault)
+			e.preventDefault();
+		return false;
+	}
+};
+scheduler.attachEvent("onTemplatesReady", function() {
+	var do_wrapper = function(key, fullname){
+		fullname = fullname || (key+"_scale_date");
+
+		if(!scheduler.templates['_active_links_old_'+ fullname]){
+			scheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];
+		}
+		var week_x = scheduler.templates['_active_links_old_'+ fullname];
+		var d_s = scheduler.date.date_to_str(scheduler.config.api_date);
+		scheduler.templates[fullname] = function(date) {
+			return "<a jump_to='" + d_s(date) + "' href='#'>" + week_x(date) + "</a>";
+		};
+	};
+
+	do_wrapper("week");
+	do_wrapper("", "month_day");
+	if (this.matrix){
+		for (var key in this.matrix)
+			do_wrapper(key);
+	}
+
+	this._detachDomEvent(this._obj, "click", scheduler._active_link_click);
+	dhtmlxEvent(this._obj, "click", scheduler._active_link_click);
+});
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.txt
new file mode 100644
index 0000000000..f2fae3a812
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_active_links.js","sources":["dhtmlxscheduler_active_links.js"],"names":["scheduler","config","active_link_view","_active_link_click","e","start","target","event","srcElement","to","getAttribute","s_d","date","str_to_date","api_date","setCurrentView","preventDefault","attachEvent","do_wrapper","key","fullname","templates","week_x","d_s","date_to_str","this","matrix","_detachDomEvent","_obj","dhtmlxEvent"],"mappings":";;;;;;;;AAQAA,UAAUC,OAAOC,iBAAmB,MACpCF,UAAUG,mBAAqB,SAASC,GACvC,GAAIC,GAAQD,EAAEE,QAAUC,MAAMC,WAC1BC,EAAKJ,EAAMK,aAAa,WACxBC,EAAMX,UAAUY,KAAKC,YAAYb,UAAUC,OAAOa,SACtD,OAAIL,IACHT,UAAUe,eAAeJ,EAAIF,GAAKT,UAAUC,OAAOC,kBAC/CE,GAAKA,EAAEY,gBACVZ,EAAEY,kBACI,GAJR,QAODhB,UAAUiB,YAAY,mBAAoB,WACzC,GAAIC,GAAa,SAASC,EAAKC,GAC9BA,EAAWA,GAAaD,EAAI,cAExBnB,UAAUqB,UAAU,qBAAsBD,KAC7CpB,UAAUqB,UAAU,qBAAsBD,GAAYpB,UAAUqB,UAAUD;;AAE3E,GAAIE,GAAStB,UAAUqB,UAAU,qBAAsBD,GACnDG,EAAMvB,UAAUY,KAAKY,YAAYxB,UAAUC,OAAOa,SACtDd,WAAUqB,UAAUD,GAAY,SAASR,GACxC,MAAO,eAAiBW,EAAIX,GAAQ,cAAgBU,EAAOV,GAAQ,QAMrE,IAFAM,EAAW,QACXA,EAAW,GAAI,aACXO,KAAKC,OACR,IAAK,GAAIP,KAAOM,MAAKC,OACpBR,EAAWC,EAGbM,MAAKE,gBAAgBF,KAAKG,KAAM,QAAS5B,UAAUG,oBACnD0B,YAAYJ,KAAKG,KAAM,QAAS5B,UAAUG"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.xml
new file mode 100644
index 0000000000..a622dac4e3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_active_links.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.xml
new file mode 100644
index 0000000000..7a2e20b255
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_active_links.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_active_links.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.js
new file mode 100644
index 0000000000..9e7ae35b04
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.js
@@ -0,0 +1,124 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.date.add_agenda = function(date){
+	return scheduler.date.add(date, 1, "year");
+};
+
+scheduler.templates.agenda_time = function(start,end,ev){
+	if (ev._timed) 
+		return this.day_date(ev.start_date, ev.end_date, ev)+" "+this.event_date(start);
+	else
+		return scheduler.templates.day_date(start)+" &ndash; "+scheduler.templates.day_date(end);
+};
+scheduler.templates.agenda_text = function(start,end,event){
+	return event.text;
+};
+scheduler.templates.agenda_date = function(){ return ""; };
+
+scheduler.date.agenda_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };
+
+scheduler.attachEvent("onTemplatesReady",function() {
+	var old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;
+	scheduler.dblclick_dhx_cal_data = function() {
+		if (this._mode == "agenda") {
+			if (!this.config.readonly && this.config.dblclick_create)
+				this.addEventNow();
+		} else {
+			if (old_dblclick_dhx_cal_data)
+				return old_dblclick_dhx_cal_data.apply(this, arguments);
+		}
+	};
+	scheduler.attachEvent("onSchedulerResize",function(){
+	if (this._mode == "agenda"){
+		this.agenda_view(true);
+		return false;
+	}
+		return true;
+	});
+	
+	
+	var old = scheduler.render_data;
+	scheduler.render_data=function(evs){
+		if (this._mode == "agenda")
+			fill_agenda_tab();
+		else
+			return old.apply(this,arguments);
+	};
+	
+	var old_render_view_data = scheduler.render_view_data;
+	scheduler.render_view_data = function(){
+		if(this._mode == "agenda") {
+			scheduler._agendaScrollTop = scheduler._els["dhx_cal_data"][0].childNodes[0].scrollTop;
+			scheduler._els["dhx_cal_data"][0].childNodes[0].scrollTop = 0;
+		}
+		return old_render_view_data.apply(this,arguments);
+	};
+
+
+	function set_full_view(mode){
+		if (mode){
+			var l = scheduler.locale.labels;
+			scheduler._els["dhx_cal_header"][0].innerHTML="<div class='dhx_agenda_line'><div>"+l.date+"</div><span style='padding-left:25px'>"+l.description+"</span></div>";
+			scheduler._table_view=true;
+			scheduler.set_sizes();
+		}
+	}
+
+	function fill_agenda_tab(){
+		//get current date
+		var date = scheduler._date;
+		//select events for which data need to be printed
+		
+		var events = scheduler.get_visible_events();
+		events.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});
+		
+		//generate html for the view
+		var html="<div class='dhx_agenda_area'>";
+		for (var i=0; i<events.length; i++){
+			var ev = events[i];
+			var bg_color = (ev.color?("background:"+ev.color+";"):"");
+			var color = (ev.textColor?("color:"+ev.textColor+";"):"");
+			var ev_class = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);
+			html+="<div class='dhx_agenda_line"+(ev_class?' '+ev_class:'')+"' event_id='"+ev.id+"' style='"+color+""+bg_color+""+(ev._text_style||"")+"'><div class='dhx_agenda_event_time'>"+scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev)+"</div>";
+			html+="<div class='dhx_event_icon icon_details'>&nbsp</div>";
+			html+="<span>"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+"</span></div>";
+		}
+		html+="<div class='dhx_v_border'></div></div>";
+			
+		//render html
+		scheduler._els["dhx_cal_data"][0].innerHTML = html;
+		scheduler._els["dhx_cal_data"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;
+
+		// setting up dhx_v_border size
+		var agenda_area = scheduler._els["dhx_cal_data"][0].childNodes[0];
+		var v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];
+		v_border.style.height = (agenda_area.offsetHeight < scheduler._els["dhx_cal_data"][0].offsetHeight) ? "100%" : (agenda_area.offsetHeight+"px");
+		
+		var t=scheduler._els["dhx_cal_data"][0].firstChild.childNodes;
+		scheduler._els["dhx_cal_date"][0].innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);
+		
+		scheduler._rendered=[];
+		for (var i=0; i < t.length-1; i++)
+			scheduler._rendered[i]=t[i];
+		
+	}
+
+	scheduler.agenda_view=function(mode){
+		scheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_start(scheduler._date);
+		scheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda(scheduler._min_date, 1);
+		scheduler._table_view = true;
+		set_full_view(mode);
+		if (mode){
+			//agenda tab activated
+			fill_agenda_tab();
+		} else {
+			//agenda tab de-activated
+		}
+	};
+});
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.txt
new file mode 100644
index 0000000000..a40c59ebca
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_agenda_view.js","sources":["dhtmlxscheduler_agenda_view.js"],"names":["scheduler","date","add_agenda","add","templates","agenda_time","start","end","ev","_timed","this","day_date","start_date","end_date","event_date","agenda_text","event","text","agenda_date","agenda_start","date_part","_currentDate","attachEvent","set_full_view","mode","l","locale","labels","_els","innerHTML","description","_table_view","set_sizes","fill_agenda_tab","events","_date","get_visible_events","sort","a","b","html","i","length","bg_color","color","textColor","ev_class","event_class","id","_text_style","childNodes","scrollTop","_agendaScrollTop","agenda_area","v_border","style","height","offsetHeight","t","firstChild","_min_date","_max_date","_mode","_rendered","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","config","readonly","dblclick_create","addEventNow","apply","arguments","agenda_view","old","render_data","evs","old_render_view_data","render_view_data","agenda_end"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.xml
new file mode 100644
index 0000000000..f1a4a562e8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_agenda_view.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.xml
new file mode 100644
index 0000000000..24d9dc2627
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_agenda_view.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_agenda_view.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.js
new file mode 100644
index 0000000000..0d476a84dc
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.js
@@ -0,0 +1,149 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+(function(){
+
+	scheduler.config.all_timed = "short";
+
+	var is_event_short = function (ev) {
+		return 	!((ev.end_date - ev.start_date)/(1000*60*60) >= 24);
+	};
+
+	// copy of usual events and recurring instances;
+	// regular copy causes problems with recurrings which have series event as a prototype
+	scheduler._safe_copy = function(event){
+		var proto = null,
+			copy = null;
+		if(event.event_pid){
+			proto = scheduler.getEvent(event.event_pid);
+		}
+
+		if (proto && proto.isPrototypeOf(event)) {
+			copy = scheduler._copy_event(event);
+			delete copy.event_length;
+			delete copy.event_pid;
+			delete copy.rec_pattern;
+			delete copy.rec_type;
+		} else {
+			copy = scheduler._lame_clone(event);
+		}
+		return copy;
+	};
+
+	var old_prerender_events_line = scheduler._pre_render_events_line;
+	scheduler._pre_render_events_line = function(evs, hold){
+		if (!this.config.all_timed)
+			return old_prerender_events_line.call(this, evs, hold);
+
+		for (var i=0; i < evs.length; i++) {
+			var ev=evs[i];
+
+			if (ev._timed)
+				continue;
+
+			if (this.config.all_timed == "short") {
+				if (!is_event_short(ev)) {
+					evs.splice(i--,1);
+					continue;
+				}
+			}
+
+			var ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates
+
+			ce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects
+
+			if (!isOvernightEvent(ev)) {
+				ce.end_date = new Date(ev.end_date);
+			}
+			else {
+				ce.end_date = getNextDay(ce.start_date);
+				if (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)
+					ce.end_date = setDateTime(ce.start_date, this.config.last_hour);
+				}
+			}
+
+			var event_changed = false;
+			if (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {
+				evs[i] = ce; // adding another event in collection
+				event_changed = true;
+			}
+		//	if (ce.start_date > ce.end_date) {
+		//		evs.splice(i--,1);
+		//	}
+
+			var re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)
+			re.end_date = new Date(re.end_date);
+			if (re.start_date < this._min_date)
+				re.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours
+			else
+				re.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);
+
+			if (re.start_date < this._max_date && re.start_date < re.end_date) {
+				if (event_changed)
+					evs.splice(i+1,0,re);//insert part
+				else {
+					evs[i--] = re;
+					continue;
+				}
+			}
+
+		}
+		// in case of all_timed pre_render is not applied to the original event
+		// so we need to force redraw in case of dnd
+		var redraw = (this._drag_mode == 'move')?false:hold;
+		return old_prerender_events_line.call(this, evs, redraw);
+
+
+		function isOvernightEvent(ev){
+			var next_day = getNextDay(ev.start_date);
+			return (+ev.end_date > +next_day);
+		}
+		function getNextDay(date){
+			var next_day = scheduler.date.add(date, 1, "day");
+			next_day = scheduler.date.date_part(next_day);
+			return next_day;
+		}
+		function setDateTime(date, hours){
+			var val = scheduler.date.date_part(new Date(date));
+			val.setHours(hours);
+			return val;
+		}
+	};
+	var old_get_visible_events = scheduler.get_visible_events;
+	scheduler.get_visible_events = function(only_timed){
+		if (!(this.config.all_timed && this.config.multi_day))
+			return old_get_visible_events.call(this, only_timed);	
+		return old_get_visible_events.call(this, false); // only timed = false
+	};
+	scheduler.attachEvent("onBeforeViewChange", function (old_mode, old_date, mode, date) {
+		scheduler._allow_dnd = (mode == "day" || mode == "week");
+		return true;
+	});
+
+	scheduler._is_main_area_event = function(ev){
+		return !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == "short" && is_event_short(ev)) );
+	};
+
+	var oldUpdate = scheduler.updateEvent;
+	scheduler.updateEvent = function(id){
+		// full redraw(update_render=true) messes events order while dnd.
+		// 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.
+		// so for now full redraw is always enabled for not-dnd updates
+		var fullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));
+		var initial;
+		if(fullRedrawNeeded){
+			initial = scheduler.config.update_render;
+			scheduler.config.update_render = true;
+		}
+		oldUpdate.apply(scheduler, arguments);
+
+		if(fullRedrawNeeded){
+			scheduler.config.update_render = initial;
+		}
+	};
+})();
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.txt
new file mode 100644
index 0000000000..a23dc28da1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_all_timed.js","sources":["dhtmlxscheduler_all_timed.js"],"names":["scheduler","config","all_timed","is_event_short","ev","end_date","start_date","_safe_copy","event","proto","copy","event_pid","getEvent","isPrototypeOf","_copy_event","event_length","rec_pattern","rec_type","_lame_clone","old_prerender_events_line","_pre_render_events_line","evs","hold","isOvernightEvent","next_day","getNextDay","date","add","date_part","setDateTime","hours","val","Date","setHours","this","call","i","length","_timed","ce","last_hour","event_changed","_max_date","_min_date","re","first_hour","splice","redraw","_drag_mode","old_get_visible_events","get_visible_events","only_timed","multi_day","attachEvent","old_mode","old_date","mode","_allow_dnd","_is_main_area_event","oldUpdate","updateEvent","id","initial","fullRedrawNeeded","isOneDayEvent","_events","getState","drag_id","update_render","apply","arguments"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.xml
new file mode 100644
index 0000000000..10e9cdd0fe
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_all_timed.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.xml
new file mode 100644
index 0000000000..b386f077d2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_all_timed.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_all_timed.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.js
new file mode 100644
index 0000000000..0ef1c06bb9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.js
@@ -0,0 +1,132 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+(function(){
+
+var temp_section;
+var before;
+
+scheduler.config.collision_limit = 1;	
+
+function _setTempSection(event_id) { // for custom views (matrix, timeline, units)
+	var checked_mode = scheduler._get_section_view();
+	if(checked_mode && event_id){
+		temp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];
+	}
+}
+
+scheduler.attachEvent("onBeforeDrag",function(id){
+	_setTempSection(id); 
+	return true;
+});
+scheduler.attachEvent("onBeforeLightbox",function(id){
+	var ev = scheduler.getEvent(id);
+	before = [ev.start_date, ev.end_date];
+	_setTempSection(id);
+	return true;
+});
+scheduler.attachEvent("onEventChanged",function(id){
+	if (!id || !scheduler.getEvent(id)) return true;
+	var ev = scheduler.getEvent(id);
+	if (!scheduler.checkCollision(ev)){
+		if (!before) return false;
+		ev.start_date = before[0];
+		ev.end_date = before[1];
+		ev._timed=this.isOneDayEvent(ev);
+	}
+	return true;
+});
+scheduler.attachEvent("onBeforeEventChanged",function(ev,e,is_new){
+	return scheduler.checkCollision(ev);
+});
+scheduler.attachEvent("onEventAdded",function(id,ev) {
+	var result = scheduler.checkCollision(ev);
+	if (!result)
+		scheduler.deleteEvent(id);
+});
+scheduler.attachEvent("onEventSave",function(id, edited_ev, is_new){
+	edited_ev = scheduler._lame_clone(edited_ev);
+	edited_ev.id = id;
+
+	//lightbox may not have 'time' section
+	if(!(edited_ev.start_date && edited_ev.end_date)){
+		var ev = scheduler.getEvent(id);
+		edited_ev.start_date = new Date(ev.start_date);
+		edited_ev.end_date = new Date(ev.end_date);
+	}
+
+	if(edited_ev.rec_type){
+		scheduler._roll_back_dates(edited_ev);
+	}
+	return scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another
+});
+
+scheduler._check_sections_collision = function(first, second){
+	var map_to = scheduler._get_section_property();
+	if (first[map_to] == second[map_to] && first.id != second.id)
+		return true;
+	return false;
+};
+
+scheduler.checkCollision = function(ev) {
+	var evs = [];
+	var collision_limit = scheduler.config.collision_limit;
+
+	if (ev.rec_type) {
+		var evs_dates = scheduler.getRecDates(ev);
+		for(var k=0; k<evs_dates.length; k++) {
+			var tevs = scheduler.getEvents(evs_dates[k].start_date, evs_dates[k].end_date);
+			for(var j=0; j<tevs.length; j++) { 
+				if ((tevs[j].event_pid || tevs[j].id) != ev.id )
+					evs.push(tevs[j]);
+			}
+		}
+	} else {
+		evs = scheduler.getEvents(ev.start_date, ev.end_date);
+		for (var i=0; i<evs.length; i++) {
+			if (evs[i].id == ev.id) {
+				evs.splice(i,1);
+				break;
+			}
+		}
+	}
+	
+
+	var checked_mode = scheduler._get_section_view();
+	var map_to = scheduler._get_section_property();
+	
+	var single = true;
+	if (checked_mode) { // custom view
+		var count = 0;
+
+		for (var i = 0; i < evs.length; i++){
+			if (evs[i].id != ev.id && this._check_sections_collision(evs[i], ev))
+				count++;
+		}
+
+		if (count >= collision_limit) {
+
+			single = false;
+		}
+	}
+	else {
+		if ( evs.length >= collision_limit )
+			single = false;
+	}
+	if (!single) {
+		var res = !scheduler.callEvent("onEventCollision",[ev,evs]);
+		if (!res) {
+			ev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views
+		}
+		return res;
+	}
+	return single;
+	
+};
+
+})();
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.txt
new file mode 100644
index 0000000000..5edc5c237a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_collision.js","sources":["dhtmlxscheduler_collision.js"],"names":["_setTempSection","event_id","checked_mode","scheduler","_get_section_view","temp_section","getEvent","_get_section_property","before","config","collision_limit","attachEvent","id","ev","start_date","end_date","checkCollision","_timed","this","isOneDayEvent","e","is_new","result","deleteEvent","edited_ev","_lame_clone","Date","rec_type","_roll_back_dates","_check_sections_collision","first","second","map_to","evs","evs_dates","getRecDates","k","length","tevs","getEvents","j","event_pid","push","i","splice","single","count","res","callEvent"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.xml
new file mode 100644
index 0000000000..34d871cf29
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_collision.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.xml
new file mode 100644
index 0000000000..315f0d11d1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_collision.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_collision.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.js
new file mode 100644
index 0000000000..0d4fef3e78
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.js
@@ -0,0 +1,187 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+(function() {
+
+	scheduler.config.container_autoresize = true;
+	scheduler.config.month_day_min_height = 90;
+
+	var old_pre_render_event = scheduler._pre_render_events;
+
+	//need for temporary disabling without modifying public config
+	var active = true;
+
+	scheduler._pre_render_events = function(evs, hold) {
+		if (!(scheduler.config.container_autoresize && active)) {
+			return old_pre_render_event.apply(this, arguments);
+		}
+
+		var hb = this.xy.bar_height;
+		var h_old = this._colsS.heights;
+		var h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];
+		var data = this._els["dhx_cal_data"][0];
+
+		if (!this._table_view)
+			evs = this._pre_render_events_line(evs, hold); //ignore long events for now
+		else
+			evs = this._pre_render_events_table(evs, hold);
+
+		if (this._table_view) {
+			if (hold){
+				this._colsS.heights = h_old;
+			} else {
+				var evl = data.firstChild;
+				if (evl.rows) {
+					for (var i = 0; i < evl.rows.length; i++) {
+						h[i]++;
+						if ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header
+							//we have overflow, update heights
+							var cells = evl.rows[i].cells;
+
+							var cHeight = this._colsS.height - this.xy.month_head_height;
+							if(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){
+								cHeight = h[i] * hb;
+							}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){
+								cHeight = (this.config.max_month_events + 1) * hb;
+							}
+
+							for (var j = 0; j < cells.length; j++) {
+								cells[j].childNodes[1].style.height = cHeight + "px";
+							}
+							h[i] = (h[i - 1] || 0) + cells[0].offsetHeight;
+						}
+						h[i] = (h[i - 1] || 0) + evl.rows[i].cells[0].offsetHeight;
+					}
+					h.unshift(0);
+					if (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {
+						//we have v-scroll, decrease last day cell
+
+						// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL
+					}
+				} else {
+					if (!evs.length && this._els["dhx_multi_day"][0].style.visibility == "visible")
+						h[0] = -1;
+					if (evs.length || h[0] == -1) {
+						//shift days to have space for multiday events
+						var childs = evl.parentNode.childNodes;
+						var dh = ((h[0] + 1) * hb + 1) + "px"; // +1 so multiday events would have 2px from top and 2px from bottom by default
+						data.style.top = (this._els["dhx_cal_navline"][0].offsetHeight + this._els["dhx_cal_header"][0].offsetHeight + parseInt(dh, 10)) + 'px';
+						data.style.height = (this._obj.offsetHeight - parseInt(data.style.top, 10) - (this.xy.margin_top || 0)) + 'px';
+						var last = this._els["dhx_multi_day"][0];
+						last.style.height = dh;
+						last.style.visibility = (h[0] == -1 ? "hidden" : "visible");
+						last = this._els["dhx_multi_day"][1];
+						last.style.height = dh;
+						last.style.visibility = (h[0] == -1 ? "hidden" : "visible");
+						last.className = h[0] ? "dhx_multi_day_icon" : "dhx_multi_day_icon_small";
+						this._dy_shift = (h[0] + 1) * hb;
+						h[0] = 0;
+					}
+				}
+			}
+		}
+
+		return evs;
+	};
+
+	var checked_divs = ["dhx_cal_navline", "dhx_cal_header", "dhx_multi_day", "dhx_cal_data"];
+	var updateContainterHeight = function(is_repaint) {
+		var total_height = 0;
+		for (var i = 0; i < checked_divs.length; i++) {
+
+			var className = checked_divs[i];
+			var checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;
+			var height = 0;
+			switch (className) {
+				case "dhx_cal_navline":
+				case "dhx_cal_header":
+					height = parseInt(checked_div.style.height, 10);
+					break;
+				case "dhx_multi_day":
+					height = (checked_div) ? checked_div.offsetHeight : 0;
+					if (height == 1)
+						height = 0;
+					break;
+				case "dhx_cal_data":
+					var mode = scheduler.getState().mode;
+
+					if(checked_div.childNodes[1] && mode != "month") {
+						height = checked_div.childNodes[1].offsetHeight;
+					}
+					else {
+						height = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);
+					}
+					if (mode == "month") {
+						if (scheduler.config.month_day_min_height && !is_repaint) {
+							var rows_length = checked_div.getElementsByTagName("tr").length;
+							height = rows_length * scheduler.config.month_day_min_height;
+						}
+						if (is_repaint) {
+							checked_div.style.height = height + "px";
+						}
+					}
+					if (scheduler.matrix && scheduler.matrix[mode]) {
+						if (is_repaint) {
+							height += 2;
+							checked_div.style.height = height + "px";
+						} else {
+							height = 2;
+							var cfg = scheduler.matrix[mode];
+							var rows = cfg.y_unit;
+							for(var r=0; r < rows.length; r++){
+								height += !rows[r].children ? cfg.dy : (cfg.folder_dy||cfg.dy);
+							}
+						}
+					}
+					if (mode == "day" || mode == "week") {
+						height += 2;
+					}
+					break;
+			}
+			total_height += height;
+		}
+		scheduler._obj.style.height = (total_height) + "px";
+
+		if (!is_repaint)
+			scheduler.updateView();
+	};
+
+	var conditionalUpdateContainerHeight = function() {
+		if(!(scheduler.config.container_autoresize && active))
+			return true;
+
+		var mode = scheduler.getState().mode;
+
+		updateContainterHeight();
+		if ( (scheduler.matrix && scheduler.matrix[mode]) || mode == "month" ) {
+			window.setTimeout(function() {
+				updateContainterHeight(true);
+			}, 1);
+		}
+	};
+
+	scheduler.attachEvent("onViewChange", conditionalUpdateContainerHeight);
+	scheduler.attachEvent("onXLE", conditionalUpdateContainerHeight);
+	scheduler.attachEvent("onEventChanged", conditionalUpdateContainerHeight);
+	scheduler.attachEvent("onEventCreated", conditionalUpdateContainerHeight);
+	scheduler.attachEvent("onEventAdded", conditionalUpdateContainerHeight);
+	scheduler.attachEvent("onEventDeleted", conditionalUpdateContainerHeight);
+	scheduler.attachEvent("onAfterSchedulerResize", conditionalUpdateContainerHeight);
+	scheduler.attachEvent("onClearAll", conditionalUpdateContainerHeight);
+
+	//disable container autoresize when expanded
+	scheduler.attachEvent("onBeforeExpand", function(){
+		active = false;
+		return true;
+	});
+
+	scheduler.attachEvent("onBeforeCollapse", function(){
+		active = true;
+		return true;
+	});
+})();
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.txt
new file mode 100644
index 0000000000..99b0926d7d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_container_autoresize.js","sources":["dhtmlxscheduler_container_autoresize.js"],"names":["scheduler","config","container_autoresize","month_day_min_height","old_pre_render_event","_pre_render_events","active","evs","hold","apply","this","arguments","hb","xy","bar_height","h_old","_colsS","heights","h","data","_els","_table_view","_pre_render_events_table","_pre_render_events_line","evl","firstChild","rows","i","length","height","month_head_height","cells","cHeight","max_month_events","j","childNodes","style","offsetHeight","unshift","parentNode","scrollHeight","_h_fix","visibility","dh","top","parseInt","_obj","margin_top","last","className","_dy_shift","checked_divs","updateContainterHeight","is_repaint","total_height","checked_div","mode","getState","Math","max","rows_length","getElementsByTagName","matrix","cfg","y_unit","r","children","folder_dy","dy","updateView","conditionalUpdateContainerHeight","window","setTimeout","attachEvent"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.xml
new file mode 100644
index 0000000000..1e5e10b75f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_container_autoresize.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.xml
new file mode 100644
index 0000000000..ca59be562b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_container_autoresize.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_container_autoresize.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.js
new file mode 100644
index 0000000000..d19b3eb9ff
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.js
@@ -0,0 +1,80 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+(function(){
+	function setCookie(name,cookie_param,value) {
+		var str = name + "=" + value +  (cookie_param?("; "+cookie_param):"");
+		document.cookie = str;
+	}
+	function getCookie(name) {
+		var search = name + "=";
+		if (document.cookie.length > 0) {
+			var offset = document.cookie.indexOf(search);
+			if (offset != -1) {
+				offset += search.length;
+				var end = document.cookie.indexOf(";", offset);
+				if (end == -1)
+					end = document.cookie.length;
+				return document.cookie.substring(offset, end);
+			}
+		}
+		return "";
+	}
+	var first = true;
+	scheduler.attachEvent("onBeforeViewChange",function(om,od,m,d){
+		// if Url plugin is enabled - explicit url values should have more priority than cookies
+		if (first && scheduler._get_url_nav){
+			var url_nav = scheduler._get_url_nav();
+			if(url_nav.date || url_nav.mode || url_nav.event){
+				first = false;
+			}
+		}
+
+		if (first){
+			first = false;
+
+			var data=getCookie("scheduler_settings");
+			if (data){
+
+				if(!scheduler._min_date){
+					//otherwise scheduler will have incorrect date until timeout
+					//it can cause js error with 'onMouseMove' handler of key_nav.js
+					scheduler._min_date = d;
+				}
+
+				data = unescape(data).split("@");
+				data[0] = this.templates.xml_date(data[0]);
+				var view = this.isViewExists(data[1]) ? data[1] : m,
+					date = !isNaN(+data[0]) ? data[0] : d;
+
+				window.setTimeout(function(){
+					scheduler.setCurrentView(date,view);
+				},1);
+				return false;
+			}
+		}
+		var text = escape(this.templates.xml_format(d||od)+"@"+(m||om));
+		setCookie("scheduler_settings","expires=Sun, 31 Jan 9999 22:00:00 GMT",text);
+		return true;
+	});
+
+
+	// As we are blocking first render above there could be a problem in case of dynamic loading ('from' won't be defined)
+	var old_load = scheduler._load;
+	scheduler._load = function() {
+		var args = arguments;
+		if (!scheduler._date && scheduler._load_mode) {
+			var that = this;
+			window.setTimeout(function() {
+				old_load.apply(that, args);
+			},1);
+		} else {
+			old_load.apply(this, args);
+		}
+	};
+})();
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.txt
new file mode 100644
index 0000000000..f2bf70e8af
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_cookie.js","sources":["dhtmlxscheduler_cookie.js"],"names":["setCookie","name","cookie_param","value","str","document","cookie","getCookie","search","length","offset","indexOf","end","substring","first","scheduler","attachEvent","om","od","m","d","_get_url_nav","url_nav","date","mode","event","data","_min_date","unescape","split","this","templates","xml_date","view","isViewExists","isNaN","window","setTimeout","setCurrentView","text","escape","xml_format","old_load","_load","args","arguments","_date","_load_mode","that","apply"],"mappings":";;;;;;;;CAQA,WACC,QAASA,GAAUC,EAAKC,EAAaC,GACpC,GAAIC,GAAMH,EAAO,IAAME,GAAUD,EAAc,KAAKA,EAAc,GAClEG,UAASC,OAASF,EAEnB,QAASG,GAAUN,GAClB,GAAIO,GAASP,EAAO,GACpB,IAAII,SAASC,OAAOG,OAAS,EAAG,CAC/B,GAAIC,GAASL,SAASC,OAAOK,QAAQH,EACrC,IAAc,IAAVE,EAAc,CACjBA,GAAUF,EAAOC,MACjB,IAAIG,GAAMP,SAASC,OAAOK,QAAQ,IAAKD,EAGvC,OAFW,IAAPE,IACHA,EAAMP,SAASC,OAAOG,QAChBJ,SAASC,OAAOO,UAAUH,EAAQE,IAG3C,MAAO,GAER,GAAIE,IAAQ,CACZC,WAAUC,YAAY,qBAAqB,SAASC,EAAGC,EAAGC,EAAEC,GAE3D,GAAIN,GAASC,UAAUM,aAAa,CACnC,GAAIC,GAAUP,UAAUM,gBACrBC,EAAQC,MAAQD,EAAQE,MAAQF,EAAQG,SAC1CX,GAAQ,GAIV,GAAIA,EAAM,CACTA,GAAQ,CAER,IAAIY,GAAKnB,EAAU;;AACnB,GAAImB,EAAK,CAEJX,UAAUY,YAGbZ,UAAUY,UAAYP,GAGvBM,EAAOE,SAASF,GAAMG,MAAM,KAC5BH,EAAK,GAAKI,KAAKC,UAAUC,SAASN,EAAK,GACvC,IAAIO,GAAOH,KAAKI,aAAaR,EAAK,IAAMA,EAAK,GAAKP,EACjDI,EAAQY,OAAOT,EAAK,IAAgBN,EAAVM,EAAK,EAKhC,OAHAU,QAAOC,WAAW,WACjBtB,UAAUuB,eAAef,EAAKU,IAC7B,IACK,GAGT,GAAIM,GAAOC,OAAOV,KAAKC,UAAUU,WAAWrB,GAAGF,GAAI,KAAKC,GAAGF,GAE3D,OADAjB,GAAU,qBAAqB,wCAAwCuC,IAChE,GAKR,IAAIG,GAAW3B,UAAU4B,KACzB5B,WAAU4B,MAAQ,WACjB,GAAIC,GAAOC,SACX,KAAK9B,UAAU+B,OAAS/B,UAAUgC,WAAY,CAC7C,GAAIC,GAAOlB,IACXM,QAAOC,WAAW;AACjBK,EAASO,MAAMD,EAAMJ,IACpB,OAEFF,GAASO,MAAMnB,KAAMc"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.xml
new file mode 100644
index 0000000000..cd7a7d1a07
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_cookie.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.xml
new file mode 100644
index 0000000000..20c45c1d7b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_cookie.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_cookie.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.js
new file mode 100644
index 0000000000..6c43271157
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.js
@@ -0,0 +1,169 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.form_blocks['combo']={
+	render:function(sns) {
+		if (!sns.cached_options)
+			sns.cached_options = {};
+		var res = '';
+		res += "<div class='"+sns.type+"' style='height:"+(sns.height||20)+"px;' ></div>";
+		return res;
+	},
+	set_value:function(node,value,ev,config){
+		(function(){
+			resetCombo();
+			var id = scheduler.attachEvent("onAfterLightbox",function(){
+				// otherwise destructor will never be called after form reset(e.g. in readonly event mode)
+				resetCombo();
+				scheduler.detachEvent(id);
+			});
+			function resetCombo(){
+				if(node._combo && node._combo.DOMParent) {
+					var combo = node._combo;
+					if(combo.unload){
+						combo.unload();
+					}else if(combo.destructor){
+						combo.destructor();
+					}
+					// dhtmlxCombo 4.1.0 bug
+					combo.DOMParent = combo.DOMelem = null;
+				}
+			}
+		})();
+		window.dhx_globalImgPath = config.image_path||'/';
+		node._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);
+		if (config.onchange)
+			node._combo.attachEvent("onChange", config.onchange);
+
+		if (config.options_height)
+			node._combo.setOptionHeight(config.options_height);
+		var combo = node._combo;
+		combo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);
+		
+		if (!config.script_path) { // script-side filtration is used
+			var all_options = [];
+			for (var i = 0; i < config.options.length; i++) {
+				var option = config.options[i];
+				var single_option = [
+					option.key,
+					option.label,
+					option.css
+				];
+				all_options.push(single_option);
+			}
+			combo.addOption(all_options);
+			if (ev[config.map_to]) {
+				var index = combo.getIndexByValue(ev[config.map_to]);
+				combo.selectOption(index);
+			}
+		} else { // server-side filtration is used
+			var selected_id = ev[config.map_to];
+			if (selected_id) {
+				if (config.cached_options[selected_id]) {
+					combo.addOption(selected_id, config.cached_options[selected_id]);
+					combo.disable(1);
+					combo.selectOption(0);
+					combo.disable(0);
+				} else {
+					dhtmlxAjax.get(config.script_path+"?id="+selected_id+"&uid="+scheduler.uid(), function(result){
+						var option = result.doXPath("//option")[0];
+						var label = option.childNodes[0].nodeValue;
+						config.cached_options[selected_id] = label;
+						combo.addOption(selected_id, label);
+						combo.disable(1);
+						combo.selectOption(0);
+						combo.disable(0);
+					});
+				}
+			} else {
+				combo.setComboValue("");
+			}
+		}
+	},
+	get_value:function(node,ev,config) {
+		var selected_id = node._combo.getSelectedValue(); // value = key
+		if (config.script_path) {
+			config.cached_options[selected_id] = node._combo.getSelectedText();
+		}
+		return selected_id;
+	},
+	focus:function(node){
+	}
+};
+
+scheduler.form_blocks['radio']={
+	render:function(sns) {
+		var res = '';
+		res += "<div class='dhx_cal_ltext dhx_cal_radio' style='height:"+sns.height+"px;' >";
+		for (var i=0; i<sns.options.length; i++) {
+			var id = scheduler.uid();
+			res += "<input id='"+id+"' type='radio' name='"+sns.name+"' value='"+sns.options[i].key+"'><label for='"+id+"'>"+" "+sns.options[i].label+"</label>";
+			if(sns.vertical)
+				res += "<br/>";
+		}
+		res += "</div>";
+		
+		return res;
+	},
+	set_value:function(node,value,ev,config){
+		var radiobuttons = node.getElementsByTagName('input');
+		for (var i = 0; i < radiobuttons.length; i++) {
+			radiobuttons[i].checked = false;
+			var checked_value = ev[config.map_to]||value;
+			if (radiobuttons[i].value == checked_value) {
+				radiobuttons[i].checked = true;
+			}
+		}
+	},
+	get_value:function(node,ev,config){
+		var radiobuttons = node.getElementsByTagName('input');
+		for(var i=0; i<radiobuttons.length; i++) {
+			if(radiobuttons[i].checked) {
+				return radiobuttons[i].value;
+			}
+		}
+	},
+	focus:function(node){
+	}
+};
+
+scheduler.form_blocks['checkbox']={
+	render:function(sns) {
+		if (scheduler.config.wide_form)
+			return '<div class="dhx_cal_wide_checkbox" '+(sns.height?("style='height:"+sns.height+"px;'"):"")+'></div>';
+		else
+			return '';
+	},
+	set_value:function(node,value,ev,config){
+		node=document.getElementById(config.id);
+		var id = scheduler.uid();
+		var isChecked = (typeof config.checked_value != "undefined") ? value == config.checked_value : !!value;
+		node.className += " dhx_cal_checkbox";
+		var check_html = "<input id='"+id+"' type='checkbox' value='true' name='"+config.name+"'"+((isChecked)?"checked='true'":'')+"'>"; 
+		var label_html = "<label for='"+id+"'>"+(scheduler.locale.labels["section_"+config.name]||config.name)+"</label>";
+		if (scheduler.config.wide_form){
+			node.innerHTML = label_html;
+			node.nextSibling.innerHTML=check_html;
+		} else 
+			node.innerHTML=check_html+label_html;
+
+		if (config.handler) {
+			var checkbox = node.getElementsByTagName('input')[0];
+			checkbox.onclick = config.handler;
+		}
+	},
+	get_value:function(node,ev,config){
+		node=document.getElementById(config.id);
+		var checkbox = node.getElementsByTagName('input')[0]; // moved to the header
+		if (!checkbox)
+			checkbox = node.nextSibling.getElementsByTagName('input')[0];
+		return (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);
+	},
+	focus:function(node){
+	}
+};
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.txt
new file mode 100644
index 0000000000..b441b686f1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_editors.js","sources":["dhtmlxscheduler_editors.js"],"names":["scheduler","form_blocks","render","sns","cached_options","res","type","height","set_value","node","value","ev","config","resetCombo","_combo","DOMParent","combo","unload","destructor","DOMelem","id","attachEvent","detachEvent","window","dhx_globalImgPath","image_path","dhtmlXCombo","name","offsetWidth","onchange","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","cache","selected_id","map_to","addOption","disable","selectOption","dhtmlxAjax","get","uid","result","option","doXPath","label","childNodes","nodeValue","setComboValue","all_options","i","options","length","single_option","key","css","push","index","getIndexByValue","get_value","getSelectedValue","getSelectedText","focus","vertical","radiobuttons","getElementsByTagName","checked","checked_value","wide_form","document","getElementById","isChecked","className","check_html","label_html","locale","labels","innerHTML","nextSibling","handler","checkbox","onclick","unchecked_value"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.xml
new file mode 100644
index 0000000000..152f83e5b4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_editors.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.xml
new file mode 100644
index 0000000000..bb43468a39
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_editors.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_editors.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.js
new file mode 100644
index 0000000000..d39161bb11
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.js
@@ -0,0 +1,83 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.expand = function() {
+	if(!scheduler.callEvent("onBeforeExpand", []))
+		return;
+	var t = scheduler._obj;
+	do {
+		t._position = t.style.position || "";
+		t.style.position = "static";
+	} while ((t = t.parentNode) && t.style);
+	t = scheduler._obj;
+	t.style.position = "absolute";
+	t._width = t.style.width;
+	t._height = t.style.height;
+	t.style.width = t.style.height = "100%";
+	t.style.top = t.style.left = "0px";
+
+	var top = document.body;
+	top.scrollTop = 0;
+
+	top = top.parentNode;
+	if (top)
+		top.scrollTop = 0;
+	document.body._overflow = document.body.style.overflow || "";
+	document.body.style.overflow = "hidden";
+	scheduler._maximize();
+	scheduler.callEvent("onExpand", []);
+};
+scheduler.collapse = function() {
+	if(!scheduler.callEvent("onBeforeCollapse", []))
+		return;
+	var t = scheduler._obj;
+	do {
+		t.style.position = t._position;
+	} while ((t = t.parentNode) && t.style);
+	t = scheduler._obj;
+	t.style.width = t._width;
+	t.style.height = t._height;
+	document.body.style.overflow = document.body._overflow;
+	scheduler._maximize();
+	scheduler.callEvent("onCollapse", []);
+};
+scheduler.attachEvent("onTemplatesReady", function() {
+	var t = document.createElement("DIV");
+	t.className = "dhx_expand_icon";
+	scheduler.toggleIcon = t;
+	scheduler._obj.appendChild(t);
+	t.onclick = function() {
+		if (!scheduler.expanded)
+			scheduler.expand(); else
+			scheduler.collapse();
+	};
+});
+scheduler._maximize = function() {
+	this.expanded = !this.expanded;
+	this.toggleIcon.style.backgroundPosition = "0 " + (this.expanded ? "0" : "18") + "px";
+
+	var directions = ['left', 'top'];
+	for (var i = 0; i < directions.length; i++) {
+		var margin = scheduler.xy['margin_' + directions[i]];
+		var prev_margin = scheduler['_prev_margin_' + directions[i]];
+		if (scheduler.xy['margin_' + directions[i]]) {
+			scheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];
+			scheduler.xy['margin_' + directions[i]] = 0;
+		} else {
+			if (prev_margin) {
+				scheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];
+				delete scheduler['_prev_margin_' + directions[i]];
+			}
+		}
+	}
+
+	if (scheduler.callEvent("onSchedulerResize", [])) {
+		scheduler.update_view();
+		scheduler.callEvent("onAfterSchedulerResize");
+	}
+};
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.txt
new file mode 100644
index 0000000000..27903eb766
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_expand.js","sources":["dhtmlxscheduler_expand.js"],"names":["scheduler","expand","callEvent","t","_obj","_position","style","position","parentNode","_width","width","_height","height","top","left","document","body","scrollTop","_overflow","overflow","_maximize","collapse","attachEvent","createElement","className","toggleIcon","appendChild","onclick","expanded","this","backgroundPosition","directions","i","length","prev_margin","xy","update_view"],"mappings":";;;;;;;;AAQAA,UAAUC,OAAS,WAClB,GAAID,UAAUE,UAAU,qBAAxB,CAEA,GAAIC,GAAIH,UAAUI,IAClB,GACCD,GAAEE,UAAYF,EAAEG,MAAMC,UAAY,GAClCJ,EAAEG,MAAMC,SAAW,gBACVJ,EAAIA,EAAEK,aAAeL,EAAEG,MACjCH,GAAIH,UAAUI,KACdD,EAAEG,MAAMC,SAAW,WACnBJ,EAAEM,OAASN,EAAEG,MAAMI,MACnBP,EAAEQ,QAAUR,EAAEG,MAAMM,OACpBT,EAAEG,MAAMI,MAAQP,EAAEG,MAAMM,OAAS,OACjCT,EAAEG,MAAMO,IAAMV,EAAEG,MAAMQ,KAAO,KAE7B,IAAID,GAAME,SAASC,IACnBH,GAAII,UAAY,EAEhBJ,EAAMA,EAAIL,WACNK,IACHA,EAAII,UAAY,GACjBF,SAASC,KAAKE,UAAYH,SAASC,KAAKV,MAAMa,UAAY,GAC1DJ,SAASC,KAAKV,MAAMa,SAAW;AAC/BnB,UAAUoB,YACVpB,UAAUE,UAAU,iBAErBF,UAAUqB,SAAW,WACpB,GAAIrB,UAAUE,UAAU,uBAAxB,CAEA,GAAIC,GAAIH,UAAUI,IAClB,GACCD,GAAEG,MAAMC,SAAWJ,EAAEE,iBACZF,EAAIA,EAAEK,aAAeL,EAAEG,MACjCH,GAAIH,UAAUI,KACdD,EAAEG,MAAMI,MAAQP,EAAEM,OAClBN,EAAEG,MAAMM,OAAST,EAAEQ,QACnBI,SAASC,KAAKV,MAAMa,SAAWJ,SAASC,KAAKE,UAC7ClB,UAAUoB,YACVpB,UAAUE,UAAU,mBAErBF,UAAUsB,YAAY,mBAAoB,WACzC,GAAInB,GAAIY,SAASQ,cAAc,MAC/BpB,GAAEqB,UAAY;AACdxB,UAAUyB,WAAatB,EACvBH,UAAUI,KAAKsB,YAAYvB,GAC3BA,EAAEwB,QAAU,WACN3B,UAAU4B,SAEd5B,UAAUqB,WADVrB,UAAUC,YAIbD,UAAUoB,UAAY,WACrBS,KAAKD,UAAYC,KAAKD,SACtBC,KAAKJ,WAAWnB,MAAMwB,mBAAqB,MAAQD,KAAKD,SAAW,IAAM,MAAQ,IAGjF,KAAK,GADDG,IAAc,OAAQ,OACjBC,EAAI,EAAGA,EAAID,EAAWE,OAAQD,IAAK,CAC3C,GACIE,IADSlC,UAAUmC,GAAG,UAAYJ,EAAWC,IAC/BhC,UAAU,gBAAkB+B,EAAWC,IACrDhC,WAAUmC,GAAG,UAAYJ,EAAWC,KACvChC,UAAU,gBAAkB+B,EAAWC,IAAMhC,UAAUmC,GAAG,UAAYJ,EAAWC,IACjFhC,UAAUmC,GAAG,UAAYJ,EAAWC,IAAM,GAEtCE,IACHlC,UAAUmC,GAAG,UAAYJ,EAAWC,IAAMhC,UAAU,gBAAkB+B,EAAWC;MAC1EhC,WAAU,gBAAkB+B,EAAWC,KAK7ChC,UAAUE,UAAU,0BACvBF,UAAUoC,cACVpC,UAAUE,UAAU"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.xml
new file mode 100644
index 0000000000..4c55a8565b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_expand.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.xml
new file mode 100644
index 0000000000..1cf0215a62
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_expand.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_expand.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.js
new file mode 100644
index 0000000000..38d1668827
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.js
@@ -0,0 +1,23 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){
+	var els = document.body.getElementsByTagName("DIV");
+	for (var i=0; i < els.length; i++) {
+		var cs = els[i].className||"";
+		cs = cs.split(":");
+		if (cs.length == 2 && cs[0] == "template"){
+			var code = "return \""+(els[i].innerHTML||"").replace(/\"/g,"\\\"").replace(/[\n\r]+/g,"")+"\";";
+			code = unescape(code).replace(/\{event\.([a-z]+)\}/g,function(all,mask){
+				return '"+ev.'+mask+'+"';
+			});
+			scheduler.templates[cs[1]]=Function("start","end","ev",code);
+			els[i].style.display='none';
+		}
+	}
+});
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.txt
new file mode 100644
index 0000000000..f1705d5968
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_html_templates.js","sources":["dhtmlxscheduler_html_templates.js"],"names":["scheduler","attachEvent","els","document","body","getElementsByTagName","i","length","cs","className","split","code","innerHTML","replace","unescape","all","mask","templates","Function","style","display"],"mappings":";;;;;;;;AAQAA,UAAUC,YAAY,mBAAmB,WAExC,IAAK,GADDC,GAAMC,SAASC,KAAKC,qBAAqB,OACpCC,EAAE,EAAGA,EAAIJ,EAAIK,OAAQD,IAAK,CAClC,GAAIE,GAAKN,EAAII,GAAGG,WAAW,EAE3B,IADAD,EAAKA,EAAGE,MAAM,KACG,GAAbF,EAAGD,QAAwB,YAATC,EAAG,GAAiB,CACzC,GAAIG,GAAO,YAAaT,EAAII,GAAGM,WAAW,IAAIC,QAAQ,MAAM,OAAQA,QAAQ,WAAW,IAAI,IAC3FF,GAAOG,SAASH,GAAME,QAAQ,uBAAuB,SAASE,EAAIC,GACjE,MAAO,QAAQA,EAAK,OAErBhB,UAAUiB,UAAUT,EAAG,IAAIU,SAAS,QAAQ,MAAM,KAAKP,GACvDT,EAAII,GAAGa,MAAMC,QAAQ"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.xml
new file mode 100644
index 0000000000..1c05229cb4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_html_templates.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.xml
new file mode 100644
index 0000000000..c090fdb041
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_html_templates.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_html_templates.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.js
new file mode 100644
index 0000000000..e649e3176c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.js
@@ -0,0 +1,113 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+//Initial idea and implementation by Steve MC
+scheduler._temp_key_scope = function (){
+
+scheduler.config.key_nav = true;
+
+var date; // used for copy and paste operations
+var section; // used for copy and paste operations
+var isCopy = null;
+
+
+scheduler.attachEvent("onMouseMove", function(id,e){
+	date = scheduler.getActionData(e).date;
+	section = scheduler.getActionData(e).section;
+});
+
+function clear_event_after(ev){
+	delete ev.rec_type; delete ev.rec_pattern;
+	delete ev.event_pid; delete ev.event_length;
+}
+scheduler._make_pasted_event = function(ev){
+	var event_duration = ev.end_date-ev.start_date;
+
+	var copy = scheduler._lame_copy({}, ev);
+	clear_event_after(copy);
+	copy.start_date = new Date(date);
+	copy.end_date = new Date(copy.start_date.valueOf() + event_duration);
+
+	if(section){
+		var property = scheduler._get_section_property();
+		
+		if(scheduler.config.multisection)
+			copy[property] = ev[property]; // save initial set of resources for multisection view
+		else
+			copy[property] = section;
+	}
+	return copy;
+};
+scheduler._do_paste = function(is_copy, modified_ev, original_ev){
+	scheduler.addEvent(modified_ev);
+	scheduler.callEvent("onEventPasted", [is_copy, modified_ev, original_ev]);
+};
+
+scheduler._is_key_nav_active = function(){
+	if(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){
+		return true;
+	}
+	return false;
+};
+
+dhtmlxEvent(document,(_isOpera?"keypress":"keydown"),function(e){
+	if(!scheduler._is_key_nav_active()) return true;
+
+	e=e||event;
+
+	if (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows
+		e.cancelBubble = true;
+
+		var next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);
+		scheduler.setCurrentView(next);
+		return true;
+	}
+
+	var select_id = scheduler._select_id;
+	if (e.ctrlKey && e.keyCode == 67) {  // CTRL+C
+		if (select_id) {
+			scheduler._buffer_id = select_id;
+			isCopy = true;
+			scheduler.callEvent("onEventCopied", [scheduler.getEvent(select_id)]);
+		}
+		return true;
+	}
+	if (e.ctrlKey && e.keyCode == 88) { // CTRL+X
+		if (select_id) {
+			isCopy = false;
+			scheduler._buffer_id = select_id;
+			var ev = scheduler.getEvent(select_id);
+			scheduler.updateEvent(ev.id);
+			scheduler.callEvent("onEventCut", [ev]);
+		}
+	}
+
+	if (e.ctrlKey && e.keyCode == 86) {  // CTRL+V
+		var ev = scheduler.getEvent(scheduler._buffer_id);
+		if (ev) {
+			var new_ev = scheduler._make_pasted_event(ev);
+			if (isCopy) {
+				new_ev.id = scheduler.uid();
+				scheduler._do_paste(isCopy, new_ev, ev);
+			}
+			else { // cut operation
+				var res = scheduler.callEvent("onBeforeEventChanged",[new_ev, e, false, ev]);
+				if (res) {
+					scheduler._do_paste(isCopy, new_ev, ev);
+					isCopy = true; // switch to copy after first paste operation
+				}
+			}
+
+		}
+		return true;
+	}
+
+});
+
+};
+scheduler._temp_key_scope();
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.txt
new file mode 100644
index 0000000000..bce57393be
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_key_nav.js","sources":["dhtmlxscheduler_key_nav.js"],"names":["scheduler","_temp_key_scope","clear_event_after","ev","rec_type","rec_pattern","event_pid","event_length","config","key_nav","date","section","isCopy","attachEvent","id","e","getActionData","_make_pasted_event","event_duration","end_date","start_date","copy","_lame_copy","Date","valueOf","property","_get_section_property","multisection","_do_paste","is_copy","modified_ev","original_ev","addEvent","callEvent","_is_key_nav_active","this","_is_initialized","_is_lightbox_open","dhtmlxEvent","document","_isOpera","event","keyCode","cancelBubble","next","add","_date","_mode","setCurrentView","select_id","_select_id","ctrlKey","_buffer_id","getEvent","updateEvent","new_ev","uid","res"],"mappings":";;;;;;;;AASAA,UAAUC,gBAAkB,WAc5B,QAASC,GAAkBC,SACnBA,GAAGC,eAAiBD,GAAGE,kBACvBF,GAAGG,gBAAkBH,GAAGI,aAdhCP,UAAUQ,OAAOC,SAAU,CAE3B,IAAIC,GACAC,EACAC,EAAS,IAGbZ,WAAUa,YAAY,cAAe,SAASC,EAAGC,GAChDL,EAAOV,UAAUgB,cAAcD,GAAGL,KAClCC,EAAUX,UAAUgB,cAAcD,GAAGJ,UAOtCX,UAAUiB,mBAAqB,SAASd,GACvC,GAAIe,GAAiBf,EAAGgB,SAAShB,EAAGiB,WAEhCC,EAAOrB,UAAUsB,cAAenB,EAKpC,IAJAD,EAAkBmB,GAClBA,EAAKD,WAAa,GAAIG,MAAKb,GAC3BW,EAAKF,SAAW,GAAII,MAAKF,EAAKD,WAAWI,UAAYN,GAElDP,EAAQ,CACV,GAAIc,GAAWzB,UAAU0B;;AAEtB1B,UAAUQ,OAAOmB,aACnBN,EAAKI,GAAYtB,EAAGsB,GAEpBJ,EAAKI,GAAYd,EAEnB,MAAOU,IAERrB,UAAU4B,UAAY,SAASC,EAASC,EAAaC,GACpD/B,UAAUgC,SAASF,GACnB9B,UAAUiC,UAAU,iBAAkBJ,EAASC,EAAaC,KAG7D/B,UAAUkC,mBAAqB,WAC9B,MAAGC,MAAKC,oBAAsBD,KAAKE,qBAAuBF,KAAK3B,OAAOC,SAC9D,GAED,GAGR6B,YAAYC,SAAUC,SAAS,WAAW,UAAW,SAASzB,GAC7D,IAAIf,UAAUkC,qBAAsB,OAAO,CAI3C,IAFAnB,EAAEA,GAAG0B,MAEY,IAAb1B,EAAE2B,SAA8B,IAAb3B,EAAE2B,QAAe,CACvC3B,EAAE4B,cAAe,CAEjB,IAAIC,GAAO5C,UAAUU,KAAKmC,IAAI7C,UAAU8C,MAAoB,IAAb/B,EAAE2B,QAAgB,GAAK,EAAI1C,UAAU+C;;AAEpF,MADA/C,WAAUgD,eAAeJ,IAClB,EAGR,GAAIK,GAAYjD,UAAUkD,UAC1B,IAAInC,EAAEoC,SAAwB,IAAbpC,EAAE2B,QAMlB,MALIO,KACHjD,UAAUoD,WAAaH,EACvBrC,GAAS,EACTZ,UAAUiC,UAAU,iBAAkBjC,UAAUqD,SAASJ,OAEnD,CAER,IAAIlC,EAAEoC,SAAwB,IAAbpC,EAAE2B,SACdO,EAAW,CACdrC,GAAS,EACTZ,UAAUoD,WAAaH,CACvB,IAAI9C,GAAKH,UAAUqD,SAASJ,EAC5BjD,WAAUsD,YAAYnD,EAAGW,IACzBd,UAAUiC,UAAU,cAAe9B,IAIrC,GAAIY,EAAEoC,SAAwB,IAAbpC,EAAE2B,QAAe,CACjC,GAAIvC,GAAKH,UAAUqD,SAASrD,UAAUoD,WACtC,IAAIjD,EAAI,CACP,GAAIoD,GAASvD,UAAUiB,mBAAmBd,EAC1C,IAAIS,EACH2C,EAAOzC,GAAKd,UAAUwD,MACtBxD,UAAU4B,UAAUhB,EAAQ2C,EAAQpD;IAEhC,CACJ,GAAIsD,GAAMzD,UAAUiC,UAAU,wBAAwBsB,EAAQxC,GAAG,EAAOZ,GACpEsD,KACHzD,UAAU4B,UAAUhB,EAAQ2C,EAAQpD,GACpCS,GAAS,IAKZ,OAAO,MAMTZ,UAAUC"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.xml
new file mode 100644
index 0000000000..35a26bec4e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_key_nav.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.xml
new file mode 100644
index 0000000000..9a57988cfe
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_key_nav.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_key_nav.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.js
new file mode 100644
index 0000000000..49437b6486
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.js
@@ -0,0 +1,408 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){
+
+	this.layers.sort(function(a, b){
+		return a.zIndex - b.zIndex;
+	});
+	
+	scheduler._dp_init=function(dp){
+		dp._methods=["_set_event_text_style","","changeEventId","deleteEvent"];
+		
+		this.attachEvent("onEventAdded",function(id){
+			if (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)
+				dp.setUpdated(id,true,"inserted");
+		});
+		this.attachEvent("onBeforeEventDelete",function(id){
+			if(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {
+				if (!this.validId(id)) return;
+				  var z=dp.getState(id);
+				  
+				if (z=="inserted" || this._new_event) {  dp.setUpdated(id,false);		return true; }
+				if (z=="deleted")  return false;
+				if (z=="true_deleted")  return true;
+				
+				dp.setUpdated(id,true,"deleted");
+					return false;				
+			}
+			else return true;
+		});
+		this.attachEvent("onEventChanged",function(id){
+			if (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)
+				dp.setUpdated(id,true,"updated");
+		});
+		
+		dp._getRowData=function(id,pref){
+			var ev=this.obj.getEvent(id);
+			var data = {};
+			
+			for (var a in ev){
+				if (a.indexOf("_")===0) continue;
+				if (ev[a] && ev[a].getUTCFullYear) //not very good, but will work
+					data[a] = this.obj.templates.xml_format(ev[a]);
+				else
+					data[a] = ev[a];
+			}
+			return data;
+		};
+		dp._clearUpdateFlag=function(){};
+		
+		dp.attachEvent("insertCallback", scheduler._update_callback);
+		dp.attachEvent("updateCallback", scheduler._update_callback);
+		dp.attachEvent("deleteCallback", function(upd, id) {
+			this.obj.setUserData(id, this.action_param, "true_deleted");
+			this.obj.deleteEvent(id);
+		});	
+	};
+
+	(function() {
+        var _cloneObj = function(obj){
+            if(obj === null || typeof(obj) != 'object')
+                return obj;
+            var temp = new obj.constructor();
+            for(var key in obj)
+                temp[key] = _cloneObj(obj[key]);
+            return temp;
+        };
+        
+		scheduler._dataprocessors = [];
+		scheduler._layers_zindex = {};
+		for(var i=0; i<scheduler.layers.length; i++) {
+			scheduler.config['lightbox_'+scheduler.layers[i].name] = { };
+            scheduler.config['lightbox_'+scheduler.layers[i].name].sections = _cloneObj(scheduler.config.lightbox.sections);
+			scheduler._layers_zindex[scheduler.layers[i].name] = scheduler.config.inital_layer_zindex||5 + i*3;
+			if(scheduler.layers[i].url) {
+				var dp = new dataProcessor(scheduler.layers[i].url);
+				dp.layer = scheduler.layers[i].name;
+				scheduler._dataprocessors.push(dp);
+				scheduler._dataprocessors[i].init(scheduler);
+			}
+			if(scheduler.layers[i].isDefault)
+				scheduler.defaultLayer = scheduler.layers[i].name;
+		}
+	})();
+
+	
+	scheduler.showLayer = function(tlayer) {
+		this.toggleLayer(tlayer, true);
+	};
+	
+	scheduler.hideLayer = function(tlayer) {
+		this.toggleLayer(tlayer, false);
+	};
+	
+	scheduler.toggleLayer = function(tlayer, visible) { // visible is optional
+		var layer = this.getLayer(tlayer);
+		
+		if(typeof visible != 'undefined')
+			layer.visible = !!visible;
+		else
+			layer.visible = !layer.visible;
+			
+		this.setCurrentView(this._date, this._mode);
+	};
+	
+	scheduler.getLayer = function(tlayer) { // either string with layer name or event with layer property
+		var layer,
+			layer_name;
+		if(typeof tlayer == 'string') 
+			layer_name = tlayer;
+		if(typeof tlayer == 'object') 
+			layer_name = tlayer.layer;
+		for (var i=0; i<scheduler.layers.length; i++) {
+			if(scheduler.layers[i].name == layer_name)
+				layer = scheduler.layers[i];
+		}	
+		return layer;
+	};
+
+	scheduler.attachEvent("onBeforeLightbox", function (event_id){
+		var ev = this.getEvent(event_id);
+        this.config.lightbox.sections = this.config['lightbox_'+ev.layer].sections;
+        scheduler.resetLightbox();
+		return true;
+	});
+
+	scheduler.attachEvent("onClick", function (event_id, native_event_object){
+		var ev = scheduler.getEvent(event_id);
+        return !scheduler.getLayer(ev.layer).noMenu;
+	});	
+	
+	scheduler.attachEvent('onEventCollision', function(ev, evs) {
+		var layer = this.getLayer(ev);
+		if(!layer.checkCollision)
+			return false;
+		var count = 0;
+		for(var i = 0; i<evs.length; i++) {
+			if(evs[i].layer == layer.name && evs[i].id != ev.id)
+				count++;
+		}
+		return (count >= scheduler.config.collision_limit);
+	});
+	
+	scheduler.addEvent=function(start_date,end_date,text,id,extra_data){
+		var ev=start_date;
+		if (arguments.length!=1){
+			ev=extra_data||{};
+			ev.start_date=start_date;
+			ev.end_date=end_date;
+			ev.text=text;
+			ev.id=id;
+			ev.layer = this.defaultLayer;
+		}
+		ev.id = ev.id||scheduler.uid();
+		ev.text = ev.text||"";
+		
+		
+		if (typeof ev.start_date == "string")  ev.start_date=this.templates.api_date(ev.start_date);
+		if (typeof ev.end_date == "string")  ev.end_date=this.templates.api_date(ev.end_date);
+		ev._timed=this.isOneDayEvent(ev);
+
+		var is_new=!this._events[ev.id];
+		this._events[ev.id]=ev;
+		this.event_updated(ev);
+		if (!this._loading)
+			this.callEvent(is_new?"onEventAdded":"onEventChanged",[ev.id,ev]);
+	};		
+	
+	this._evs_layer = {};
+	for (var i = 0; i < this.layers.length; i++) { // array in object for each layer
+		this._evs_layer[this.layers[i].name] = [];
+	}		
+	
+	scheduler.addEventNow=function(start,end,e){
+		var base = {};
+		if (typeof start == "object"){
+			base = start;
+			start = null;
+		}
+		
+		var d = (this.config.event_duration||this.config.time_step)*60000;
+		if (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;
+		var start_date = new Date(start);
+		if (!end){
+			var start_hour = this.config.first_hour;
+			if (start_hour > start_date.getHours()){
+				start_date.setHours(start_hour);
+				start = start_date.valueOf();
+			}
+			end = start+d;
+		}
+		
+		
+		base.start_date = base.start_date||start_date;
+		base.end_date =  base.end_date||new Date(end);
+		base.text = base.text||this.locale.labels.new_event;
+		base.id = this._drag_id = this.uid();
+		base.layer = this.defaultLayer;
+		this._drag_mode="new-size";
+		
+		this._loading=true;
+		this.addEvent(base);
+		this.callEvent("onEventCreated",[this._drag_id,e]);
+		this._loading=false;
+		
+		this._drag_event={}; //dummy , to trigger correct event updating logic
+		this._on_mouse_up(e);	
+	};
+	
+	scheduler._t_render_view_data = function(events) { // helper
+		if (this.config.multi_day && !this._table_view) {
+			var tvs = [];
+			var tvd = [];
+			for (var k = 0; k < events.length; k++) {
+				if (events[k]._timed) 
+					tvs.push(events[k]);
+				else 
+					tvd.push(events[k]);
+			}
+			this._table_view = true;
+			this.render_data(tvd);
+			this._table_view = false;
+			this.render_data(tvs);
+		}
+		else 
+			this.render_data(events);		
+	};
+	
+	scheduler.render_view_data = function(){
+		if (this._not_render) {
+			this._render_wait = true;
+			return;
+		}
+		this._render_wait = false;
+		
+		this.clear_view();
+
+		this._evs_layer = {};
+		for (var i = 0; i < this.layers.length; i++) { // array in object for each layer
+			this._evs_layer[this.layers[i].name] = [];
+		}		
+		
+		var evs = this.get_visible_events();
+		for (var i = 0; i < evs.length; i++) { // filling layer arrays with events
+			if(this._evs_layer[evs[i].layer])
+				this._evs_layer[evs[i].layer].push(evs[i]);
+		}			
+
+		if(this._mode == 'month') { // old logic is used
+			var tevs = [];
+			for (var i = 0; i < this.layers.length; i++) {
+				if (this.layers[i].visible) 
+					tevs = tevs.concat(this._evs_layer[this.layers[i].name]);
+			}
+			this._t_render_view_data(tevs);
+		}
+		else { // week, day; should use new logic
+			for (var i = 0; i < this.layers.length; i++) {
+				if (this.layers[i].visible) {
+					var evs_layer = this._evs_layer[this.layers[i].name];
+					this._t_render_view_data(evs_layer);
+				}
+			}
+		}
+	};
+	
+	scheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){
+		var id = ev.id;
+		if(contentA.indexOf('<div class=') == -1)
+			contentA = (scheduler.templates['event_header_'+ev.layer])?scheduler.templates['event_header_'+ev.layer](ev.start_date,ev.end_date,ev):contentA;
+		if(contentB.indexOf('<div class=') == -1)	
+		contentB = (scheduler.templates['event_text_'+ev.layer])?scheduler.templates['event_text_'+ev.layer](ev.start_date,ev.end_date,ev):contentB;
+		
+		var d=document.createElement("DIV");
+		
+		
+		var cs = "dhx_cal_event";
+		var 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);
+		if (cse) cs=cs+" "+cse;
+		
+		var html='<div event_id="'+id+'" class="'+cs+'" style="position:absolute; top:'+y+'px; left:'+x+'px; width:'+(w-4)+'px; height:'+h+'px;'+(style||"")+'">';
+		html+='<div class="dhx_header" style=" width:'+(w-6)+'px;" >&nbsp;</div>';
+		html+='<div class="dhx_title">'+contentA+'</div>';
+		html+='<div class="dhx_body" style=" width:'+(w-(this._quirks?4:14))+'px; height:'+(h-(this._quirks?20:30))+'px;">'+contentB+'</div>';
+		html+='<div class="dhx_footer" style=" width:'+(w-8)+'px;'+(bottom?' margin-top:-1px;':'')+'" ></div></div>';
+		
+		d.innerHTML=html;
+		d.style.zIndex = 100;
+		return d.firstChild;
+	};	
+	
+	scheduler.render_event_bar=function(ev){
+		var parent=this._els["dhx_cal_data"][0];
+
+		var x=this._colsS[ev._sday];
+		var x2=this._colsS[ev._eday];
+		if (x2==x) x2=this._colsS[ev._eday+1];
+		var hb = this.xy.bar_height;
+		
+		var y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb; 
+				
+		var d=document.createElement("DIV");
+		var cs = ev._timed?"dhx_cal_event_clear":"dhx_cal_event_line";
+		var 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);
+		if (cse) cs=cs+" "+cse; 
+		
+		var html='<div event_id="'+ev.id+'" class="'+cs+'" style="position:absolute; top:'+y+'px; left:'+x+'px; width:'+(x2-x-15)+'px;'+(ev._text_style||"")+'">';
+			
+		if (ev._timed)
+			html+=(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);
+		html+=( (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>)');
+		html+='</div>';
+		
+		d.innerHTML=html;
+		
+		this._rendered.push(d.firstChild);
+		parent.appendChild(d.firstChild);
+	};	
+
+	scheduler.render_event=function(ev){
+		var menu = scheduler.xy.menu_width;
+		if(scheduler.getLayer(ev.layer).noMenu) 
+			menu = 0;
+		
+		if (ev._sday<0) return; //can occur in case of recurring event during time shift
+		var parent=scheduler.locate_holder(ev._sday);	
+		if (!parent) return; //attempt to render non-visible event
+		var sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();
+		var em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);
+		
+		var 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
+		var height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour
+		//var height = Math.max(25,Math.round((ev.end_date.valueOf()-ev.start_date.valueOf())*(this.config.hour_size_px+(this._quirks?1:0))/(60*60*1000))); //42px/hour
+		var width=Math.floor((parent.clientWidth-menu)/ev._count);
+		var left=ev._sorder*width+1;
+		if (!ev._inner) width=width*(ev._count-ev._sorder);
+		
+		
+		
+		var 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));
+			
+		this._rendered.push(d);
+		parent.appendChild(d);
+		
+		left=left+parseInt(parent.style.left,10)+menu;
+		
+		top+=this._dy_shift; //corrupt top, to include possible multi-day shift
+		d.style.zIndex = this._layers_zindex[ev.layer];
+		
+		if (this._edit_id==ev.id){
+			d.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue
+			var new_zIndex = d.style.zIndex;
+			width=Math.max(width-4,scheduler.xy.editor_width);
+			var d=document.createElement("DIV");
+			d.setAttribute("event_id",ev.id);
+			this.set_xy(d,width,height-20,left,top+14);
+			d.className="dhx_cal_editor";
+			d.style.zIndex = new_zIndex;
+			var d2=document.createElement("DIV");
+			this.set_xy(d2,width-6,height-26);
+			d2.style.cssText+=";margin:2px 2px 2px 2px;overflow:hidden;";
+			
+			
+			d2.style.zIndex = new_zIndex;
+			d.appendChild(d2);
+			this._els["dhx_cal_data"][0].appendChild(d);
+			this._rendered.push(d);
+		
+			d2.innerHTML="<textarea class='dhx_cal_editor'>"+ev.text+"</textarea>";
+			if (this._quirks7) d2.firstChild.style.height=height-12+"px"; //IEFIX
+			this._editor=d2.firstChild;
+			this._editor.onkeypress=function(e){ 
+				if ((e||event).shiftKey) return true;
+				var code=(e||event).keyCode; 
+				if (code==scheduler.keys.edit_save) scheduler.editStop(true); 
+				if (code==scheduler.keys.edit_cancel) scheduler.editStop(false); 
+			};
+			this._editor.onselectstart=function(e){ (e||event).cancelBubble=true; return true; };
+			d2.firstChild.focus();
+			//IE and opera can add x-scroll during focusing
+			this._els["dhx_cal_data"][0].scrollLeft=0;
+			d2.firstChild.select();
+		}
+		if (this._select_id==ev.id){
+			d.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue
+			var icons=this.config["icons_"+((this._edit_id==ev.id)?"edit":"select")];
+			var icons_str="";
+			for (var i=0; i<icons.length; i++)
+				icons_str+="<div class='dhx_menu_icon "+icons[i]+"' title='"+this.locale.labels[icons[i]]+"'></div>";
+			var 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);
+			obj.style.left=left-menu+1;
+			obj.style.zIndex = d.style.zIndex;
+			this._els["dhx_cal_data"][0].appendChild(obj);
+			this._rendered.push(obj);
+		}
+		
+	};
+
+    scheduler.filter_agenda = function(id, event) {
+        var layer = scheduler.getLayer(event.layer);
+        return (layer && layer.visible);
+    };
+});
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.txt
new file mode 100644
index 0000000000..d1be1ac194
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_layer.js","sources":["dhtmlxscheduler_layer.js"],"names":["scheduler","attachEvent","this","layers","sort","a","b","zIndex","_dp_init","dp","_methods","id","_loading","validId","getEvent","layer","setUpdated","z","getState","_new_event","_getRowData","pref","ev","obj","data","indexOf","getUTCFullYear","templates","xml_format","_clearUpdateFlag","_update_callback","upd","setUserData","action_param","deleteEvent","_cloneObj","temp","constructor","key","_dataprocessors","_layers_zindex","i","length","config","name","sections","lightbox","inital_layer_zindex","url","dataProcessor","push","init","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","setCurrentView","_date","_mode","layer_name","event_id","resetLightbox","native_event_object","noMenu","evs","checkCollision","count","collision_limit","addEvent","start_date","end_date","text","extra_data","arguments","uid","api_date","_timed","isOneDayEvent","is_new","_events","event_updated","callEvent","_evs_layer","addEventNow","start","end","e","base","d","event_duration","time_step","Math","round","_currentDate","valueOf","Date","start_hour","first_hour","getHours","setHours","locale","labels","new_event","_drag_id","_drag_mode","_drag_event","_on_mouse_up","_t_render_view_data","events","multi_day","_table_view","tvs","tvd","k","render_data","render_view_data","_not_render","_render_wait","clear_view","get_visible_events","tevs","concat","evs_layer","_render_v_bar","x","y","w","h","style","contentA","contentB","bottom","document","createElement","cs","cse","event_class","html","_quirks","innerHTML","firstChild","render_event_bar","parent","_els","_colsS","_sday","x2","_eday","hb","xy","bar_height","heights","_sweek","height","month_scale_height","_sorder","_text_style","event_bar_date","event_bar_text","_rendered","appendChild","render_event","menu","menu_width","locate_holder","sm","getMinutes","em","last_hour","top","hour_size_px","max","min_event_height","width","floor","clientWidth","_count","left","_inner","event_header","event_text","parseInt","_dy_shift","_edit_id","new_zIndex","editor_width","setAttribute","set_xy","className","d2","cssText","_quirks7","_editor","onkeypress","event","shiftKey","code","keyCode","keys","edit_save","editStop","edit_cancel","onselectstart","cancelBubble","focus","scrollLeft","select","_select_id","icons","icons_str","filter_agenda"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.xml
new file mode 100644
index 0000000000..d35ef615f9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_layer.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.xml
new file mode 100644
index 0000000000..3b36da87e3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_layer.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_layer.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.js
new file mode 100644
index 0000000000..08a3510b5b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.js
@@ -0,0 +1,1042 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.limit_start = null;
+scheduler.config.limit_end   = null;
+scheduler.config.limit_view  = false;
+scheduler.config.check_limits = true;
+scheduler.config.mark_now = true;
+scheduler.config.display_marked_timespans = true;
+
+scheduler._temp_limit_scope = function(){
+	var before = null;
+	var dhx_time_block = "dhx_time_block";
+	var default_timespan_type = "default";
+	var fix_options = function(options, days, zones) {
+		if (days instanceof Date && zones instanceof Date) {
+			options.start_date = days;
+			options.end_date = zones;
+		} else {
+			options.days = days;
+			options.zones = zones;
+		}	
+		return options;
+	};
+	var get_resulting_options = function(days, zones, sections) {
+		var options = (typeof days == "object") ? days : { days: days };
+		options.type = dhx_time_block;
+		options.css = "";
+		if (zones) {
+			if (sections)
+				options.sections = sections;
+			options = fix_options(options, days, zones);
+		}
+		return options;
+	};
+	scheduler.blockTime = function(days, zones, sections){
+		var options = get_resulting_options(days, zones, sections);
+		return scheduler.addMarkedTimespan(options);
+	};
+	scheduler.unblockTime = function(days, zones, sections) {
+		zones = zones || "fullday";
+		var options = get_resulting_options(days, zones, sections);
+		return scheduler.deleteMarkedTimespan(options);
+	};
+	scheduler.attachEvent("onBeforeViewChange",function(om,od,nm,nd){
+
+		function isBlocked(date, mode){
+			var limit_start = scheduler.config.limit_start,
+				limit_end = scheduler.config.limit_end,
+				date_end =  scheduler.date.add(date,1,mode);
+
+			return (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());
+		}
+
+		if (scheduler.config.limit_view){
+			nd = nd||od; nm = nm||om;		
+			if (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){
+				setTimeout(function(){
+					var resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;
+
+					scheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);
+				},1);
+				return false;
+			}
+		}
+		return true;
+	});
+	scheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){
+		timespan_type = timespan_type || default_timespan_type;
+
+		var res = true;
+		var temp_start_date = new Date(ev.start_date.valueOf());
+		var temp_end_date = scheduler.date.add(temp_start_date, 1, "day");
+		var timespans = scheduler._marked_timespans;
+		for (; 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") ) {
+			var day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part
+			var day_index = temp_start_date.getDay();
+
+			var zones = getZones(ev, timespans, day_index, day_value, timespan_type);
+			if (zones){
+				for (var i = 0; i < zones.length; i+=2) {
+
+					// they may change for new event if it passes limit zone
+					var sm = scheduler._get_zone_minutes(temp_start_date);
+					var em = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);
+
+					var sz = zones[i];
+					var ez = zones[i+1];
+					if (sz<em && ez>sm) {
+						if(typeof on_overlap == "function"){
+							//handler allows to cancel overlapping
+							//actually needed only to keep default behavior of limits
+							res = on_overlap(ev, sm, em, sz, ez);//event object, event start/end minutes in 'zones' format, zone start/end minutes
+						}else{
+							res = false;
+						}
+						if(!res)
+							break;
+					}
+				}
+			}
+		}
+		return !res;
+	};
+	var blocker = scheduler.checkLimitViolation = function(event){
+		if(!event)
+			return true;
+		if (!scheduler.config.check_limits)
+			return true;
+		var s = scheduler;
+		var c = s.config;
+		var evs = [];
+		if (event.rec_type) {
+			var dates = scheduler.getRecDates(event);
+			for(var i=0; i < dates.length; i++){
+				var ev = scheduler._copy_event(event);
+				scheduler._lame_copy(ev, dates[i]);
+				evs.push(ev);
+			}
+
+		} else {
+			evs = [event];
+		}
+
+		var complete_res = true;
+		for (var p=0; p<evs.length; p++) {
+			var res = true;
+			var ev = evs[p];
+			// Event could have old _timed property (e.g. we are creating event with DND on timeline view and crossed day)
+			ev._timed = scheduler.isOneDayEvent(ev);
+
+			res = (c.limit_start && c.limit_end) ? (ev.start_date.valueOf() >= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;
+			if (res){
+				res = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(ev, sm, em, sz, ez){
+					//try crop event to allow placing
+					var allow = true;
+					if (sm<=ez && sm >=sz){
+						if (ez == 24*60 || em<ez){
+							allow = false;
+						}
+						if(ev._timed && s._drag_id && s._drag_mode == "new-size"){
+							ev.start_date.setHours(0);
+							ev.start_date.setMinutes(ez);
+						}
+						else {
+							allow = false;
+						}
+					}
+					if ((em>=sz && em<ez) || (sm < sz && em > ez)){
+						if(ev._timed && s._drag_id && s._drag_mode == "new-size"){
+							ev.end_date.setHours(0);
+							ev.end_date.setMinutes(sz);
+						}
+						else {
+							allow = false;
+						}
+					}
+					return allow;
+				});
+			}
+			if (!res) {
+				res = (s.checkEvent("onLimitViolation")) ? s.callEvent("onLimitViolation",[ev.id, ev]) : res;
+			}
+			complete_res = complete_res && res;
+		}
+		if(!complete_res){
+			s._drag_id = null;
+			s._drag_mode = null;
+		}
+		return complete_res;
+
+
+	};
+	scheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){
+		var zones =[];
+		if (timespans && timespans[property]) {
+			var timeline_zones = timespans[property];
+			var blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);
+			for (var i=0; i<blocked_timeline_zones.length; i++) {
+				zones = this._add_timespan_zones(zones, blocked_timeline_zones[i].zones);
+			}
+		}
+		return zones;
+	};
+	scheduler._get_relevant_blocked_zones = function(day_index, day_value, zones, timespan_type) {
+		var relevant_zones = (zones[day_value] && zones[day_value][timespan_type]) ? zones[day_value][timespan_type] :
+			(zones[day_index] && zones[day_index][timespan_type]) ? zones[day_index][timespan_type] : [];
+		return relevant_zones;
+	};
+	function getZones(ev, timespans, day_index, day_value, timespan_type){
+		var s = scheduler;
+		//containers for 'unit' and 'timeline' views, and related 'section_id' properties
+		var zones = [];
+		var containers = {
+			'_props':'map_to',
+			'matrix':'y_property'};
+		//check blocked sections in all units and timelines
+		for(var container in containers){
+			var property = containers[container];
+			if(s[container]){
+				for(var view in s[container]){
+					var view_config = s[container][view];
+					var linker = view_config[property];
+					if(!ev[linker]) continue;
+					zones =  s._add_timespan_zones(zones,
+						scheduler._get_blocked_zones(timespans[view], ev[linker], day_index, day_value, timespan_type));
+				}
+			}
+		}
+		// now need to add day blocks
+		zones = s._add_timespan_zones(zones, scheduler._get_blocked_zones(timespans, 'global', day_index, day_value, timespan_type));
+		return zones;
+	}
+
+	scheduler.attachEvent("onMouseDown", function(classname) {
+		return !(classname == dhx_time_block);
+	});
+	scheduler.attachEvent("onBeforeDrag",function(id){
+		if (!id) return true;
+		return blocker(scheduler.getEvent(id));
+	});
+	scheduler.attachEvent("onClick", function (event_id, native_event_object){
+		return blocker(scheduler.getEvent(event_id));
+    });
+	scheduler.attachEvent("onBeforeLightbox",function(id){
+
+		var ev = scheduler.getEvent(id);
+		before = [ev.start_date, ev.end_date];
+		return blocker(ev);
+	});
+	scheduler.attachEvent("onEventSave", function(id, data, is_new_event) {
+
+		//lightbox may not have 'time' section
+		if(!(data.start_date && data.end_date)){
+			var ev = scheduler.getEvent(id);
+			data.start_date = new Date(ev.start_date);
+			data.end_date = new Date(ev.end_date);
+		}
+
+		if(data.rec_type){
+			//_roll_back_dates modifies start_date of recurring event, need to check limits after modification
+			// use a copy to keep original event unchanged
+			var data_copy = scheduler._lame_clone(data);
+			scheduler._roll_back_dates(data_copy);
+			return blocker(data_copy);
+		}
+		return blocker(data);
+	});
+	scheduler.attachEvent("onEventAdded",function(id){
+		if (!id) return true;
+		var ev = scheduler.getEvent(id);
+		if (!blocker(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {
+			//if newly created event is outside of limited time - crop it, leaving only allowed time
+			if (ev.start_date < scheduler.config.limit_start) {
+				ev.start_date = new Date(scheduler.config.limit_start);
+			}
+			if (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {
+				ev.start_date = this.date.add(scheduler.config.limit_end, -1, "day");
+			}
+			if (ev.end_date < scheduler.config.limit_start) {
+				ev.end_date = new Date(scheduler.config.limit_start);
+			}
+			if (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {
+				ev.end_date = this.date.add(scheduler.config.limit_end, -1, "day");
+			}
+			if (ev.start_date.valueOf() >= ev.end_date.valueOf()) {
+				ev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), "minute");
+			}
+			ev._timed=this.isOneDayEvent(ev);
+		}
+		return true;
+	});
+	scheduler.attachEvent("onEventChanged",function(id){
+		if (!id) return true;
+		var ev = scheduler.getEvent(id);
+		if (!blocker(ev)){
+			if (!before) return false;
+			ev.start_date = before[0];
+			ev.end_date = before[1];
+			ev._timed=this.isOneDayEvent(ev);
+		}
+		return true;
+	});
+	scheduler.attachEvent("onBeforeEventChanged",function(ev, native_object, is_new){
+		return blocker(ev);
+	});
+	scheduler.attachEvent("onBeforeEventCreated", function(ev) { // native event
+		var start_date = scheduler.getActionData(ev).date;
+		var event = {
+			_timed: true,
+			start_date: start_date,
+			end_date: scheduler.date.add(start_date, scheduler.config.time_step, "minute")
+		};
+		return blocker(event);
+	});
+
+	scheduler.attachEvent("onViewChange", function(){
+		scheduler._mark_now();
+	});
+	scheduler.attachEvent("onSchedulerResize", function(){
+		window.setTimeout(function(){ scheduler._mark_now(); }, 1);
+		return true;
+	});
+	scheduler.attachEvent("onTemplatesReady", function() {
+		scheduler._mark_now_timer = window.setInterval(function() {
+			if(!scheduler._is_initialized())
+				return;
+			scheduler._mark_now();
+		}, 60000);
+	});
+	scheduler._mark_now = function(hide) {
+		// day, week, units views
+		var dhx_now_time = 'dhx_now_time';
+		if (!this._els[dhx_now_time]) {
+			this._els[dhx_now_time] = [];
+		}
+		var now = scheduler._currentDate();
+		var cfg = this.config;
+		scheduler._remove_mark_now(); // delete previous marks if they exist
+		if (!hide && cfg.mark_now && now < this._max_date && now > this._min_date && now.getHours() >= cfg.first_hour && now.getHours()<cfg.last_hour) {
+			var day_index = this.locate_holder_day(now);
+			this._els[dhx_now_time] = scheduler._append_mark_now(day_index, now);
+		}
+	};
+	scheduler._append_mark_now = function(day_index, now) {
+		var dhx_now_time = 'dhx_now_time';
+		var zone_start= scheduler._get_zone_minutes(now);
+		var options = {
+			zones: [zone_start, zone_start+1],
+			css: dhx_now_time,
+			type: dhx_now_time
+		};
+		if (!this._table_view) {
+			if (this._props && this._props[this._mode]) { // units view
+
+				var view = this._props[this._mode];
+				var units_l = view.size || view.options.length;
+				var start_index = day_index*units_l;
+				var end_index = (day_index+1)*units_l;
+
+				var day_divs = this._els["dhx_cal_data"][0].childNodes;
+				var r_divs = [];
+
+				for (var i=start_index; i<end_index; i++) {
+					var t_day = i; // as each unit is actually considered +1 day
+					options.days = t_day;
+					var t_div = scheduler._render_marked_timespan(options, null, t_day)[0];
+					r_divs.push(t_div);
+				}
+				return r_divs;
+			} else {  // day/week views
+				options.days = day_index;
+				return scheduler._render_marked_timespan(options, null, day_index);
+			}
+		} else {
+			if (this._mode == "month") {
+				options.days = +scheduler.date.date_part(now);
+				return scheduler._render_marked_timespan(options, null, null);
+			}
+		}
+	};
+	scheduler._remove_mark_now = function() {
+		var dhx_now_time = 'dhx_now_time';
+		var els = this._els[dhx_now_time];
+		for (var i=0; i<els.length; i++) {
+			var div = els[i];
+			var parent = div.parentNode;
+			if (parent) {
+				parent.removeChild(div);
+			}
+		}
+		this._els[dhx_now_time] = [];
+	};
+
+	/*
+	scheduler._marked_timespans = {
+		"global": {
+			"0": {
+				"default": [
+					{  // sunday
+						zones: [0, 100, 500, 600],
+						css: "yellow_box",
+						type: "default",
+						view: "global",
+						day: 0
+					}
+				]
+			}
+			"112121312": {
+				"my_special_type": [
+					{
+						zones: [600, 900],
+						type: "block",
+						css: "some_class",
+						view: "global",
+						day: 112121312
+					},
+					{}
+				]
+			}
+		},
+		"units": {
+			"5_id": {
+				"3": {
+					"special_type": [ {}, {}, {} ],
+					"another_type": [ {} ]
+				}
+			},
+			"6_id": {
+				"11212127": {
+					...
+				}
+			}
+		}
+	}
+	*/
+	scheduler._marked_timespans = { global: {} };
+
+	scheduler._get_zone_minutes = function(date) {
+		return date.getHours()*60 + date.getMinutes();
+	};
+	scheduler._prepare_timespan_options = function(config) { // receives 1 option, returns array of options
+		var r_configs = []; // resulting configs
+		var temp_configs = [];
+
+		if (config.days == "fullweek")
+			config.days = [0,1,2,3,4,5,6];
+
+		if (config.days instanceof Array) {
+			var t_days = config.days.slice();
+			for (var i=0; i<t_days.length; i++) {
+				var cloned_config = scheduler._lame_clone(config);
+				cloned_config.days = t_days[i];
+				r_configs.push.apply(r_configs, scheduler._prepare_timespan_options(cloned_config));
+			}
+			return r_configs;
+		}
+
+		if ( !config || !((config.start_date && config.end_date && config.end_date > config.start_date) || (config.days !== undefined && config.zones)) )
+			return r_configs;  // incorrect config was provided
+
+		var min = 0;
+		var max = 24*60;
+		if (config.zones == "fullday")
+			config.zones = [min, max];
+		if (config.zones && config.invert_zones) {
+			config.zones = scheduler.invertZones(config.zones);
+		}
+
+		config.id = scheduler.uid();
+		config.css = config.css||"";
+		config.type = config.type||default_timespan_type;
+
+		var sections = config.sections;
+		if (sections) {
+			for (var view_key in sections) {
+				if (sections.hasOwnProperty(view_key)) {
+					var ids = sections[view_key];
+					if (!(ids instanceof Array))
+						ids = [ids];
+					for (var i=0; i<ids.length; i++) {
+						var t_config = scheduler._lame_copy({}, config);
+						t_config.sections = {};
+						t_config.sections[view_key] = ids[i];
+						temp_configs.push(t_config);
+					}
+				}
+			}	
+		} else {
+			temp_configs.push(config);
+		}
+
+		for (var k=0; k<temp_configs.length; k++) {
+			var c_config = temp_configs[k]; // config to be checked
+
+			var start_date = c_config.start_date;
+			var end_date = c_config.end_date;
+
+			if (start_date && end_date) {
+				var t_sd = scheduler.date.date_part(new Date(start_date)); // e.g. 05 october
+				var t_ed= scheduler.date.add(t_sd, 1, "day");  // 06 october, will both be incremented in the loop
+
+				while (t_sd < end_date) {
+					var t_config = scheduler._lame_copy({}, c_config);
+					delete t_config.start_date;
+					delete t_config.end_date;
+					t_config.days = t_sd.valueOf();
+					var zone_start = (start_date > t_sd) ? scheduler._get_zone_minutes(start_date) : min; 
+					var zone_end = ( end_date>t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);
+					t_config.zones = [zone_start, zone_end];
+					r_configs.push(t_config);
+
+					t_sd = t_ed;
+					t_ed = scheduler.date.add(t_ed, 1, "day");
+				}
+			} else {
+				if (c_config.days instanceof Date)
+					c_config.days = (scheduler.date.date_part(c_config.days)).valueOf();
+				c_config.zones = config.zones.slice();
+				r_configs.push(c_config);
+			}
+		}
+		return r_configs;
+	};
+	scheduler._get_dates_by_index = function(index, start, end) {
+		var dates = [];
+		start = scheduler.date.date_part(new Date(start||scheduler._min_date));
+		end = new Date(end||scheduler._max_date);
+		var start_day = start.getDay();
+		var delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);
+		var t_date = scheduler.date.add(start, delta, "day");
+		for (; t_date < end; t_date = scheduler.date.add(t_date, 1, "week")) {
+			dates.push(t_date);
+		}
+		return dates;
+	};
+	scheduler._get_css_classes_by_config = function(config) {
+		var css_classes = [];
+		if (config.type == dhx_time_block) {
+			css_classes.push(dhx_time_block);
+			if (config.css)
+				css_classes.push(dhx_time_block+"_reset");
+		}
+		css_classes.push("dhx_marked_timespan", config.css);
+		return css_classes.join(" ");
+	};
+	scheduler._get_block_by_config = function(config) {
+		var block  = document.createElement("DIV");
+		if (config.html) {
+			if (typeof config.html == "string")
+				block.innerHTML = config.html;
+			else
+				block.appendChild(config.html);
+		}
+		return block;
+	};
+	scheduler._render_marked_timespan = function(options, area, day) {
+		var blocks = []; // resulting block which will be rendered and returned
+		var c = scheduler.config;
+		var min_date = this._min_date;
+		var max_date = this._max_date;
+		var day_value = false; // if timespan for specific date should be displayed
+
+		if (!c.display_marked_timespans)
+			return blocks;
+
+		// in case of markTimespan
+		if (!day && day !== 0) {
+			if (options.days < 7)
+				day = options.days;
+			else {
+				var date_to_display = new Date(options.days);
+				day_value = +date_to_display;
+
+				// in case of markTimespan date could be not in the viewing range, need to return
+				if ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )
+					return blocks;
+
+				day = date_to_display.getDay();
+			}
+
+			// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)
+			var min_day = min_date.getDay();
+			if (min_day > day) {
+				day = 7 - (min_day-day);
+			} else {
+				day = day - min_day;
+			}
+		}
+		var zones = options.zones;
+		var css_classes = scheduler._get_css_classes_by_config(options);
+
+		if (scheduler._table_view && scheduler._mode == "month") {
+			var areas = [];
+			var days = [];
+
+
+			if (!area) {
+				days = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);
+				for (var i=0; i < days.length; i++) {
+					areas.push( this._scales[days[i]] );
+				}
+			} else {
+				areas.push(area);
+				days.push(day);
+			}
+
+			for (var i=0; i < areas.length; i++) {
+				area = areas[i];
+				day = days[i];
+
+				var sweek = Math.floor((this._correct_shift(day,1)-min_date.valueOf())/(60*60*1000*24*this._cols.length)),
+					sday = this.locate_holder_day(day, false) % this._cols.length;
+
+				if(this._ignores[sday]) continue;
+
+				var block_proto = scheduler._get_block_by_config(options),
+					height = Math.max(area.offsetHeight - 1, 0), // 1 for bottom border
+					width = Math.max(area.offsetWidth - 1, 0), // 1 for left border
+					left = this._colsS[sday],
+					top = this._colsS.heights[sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)-1;
+
+				block_proto.className = css_classes;
+				block_proto.style.top = top + "px";
+				block_proto.style.lineHeight = block_proto.style.height = height + "px";
+
+				for (var k=0; k < zones.length; k+=2) {
+					var start = zones[i];
+					var end = zones[i+1];
+					if (end <= start)
+						return [];
+
+					var block = block_proto.cloneNode(true);
+
+					block.style.left = (left + Math.round( (start)/(24*60) * width)) + "px";
+					block.style.width = Math.round( (end-start)/(24*60) * width) + "px";
+
+					area.appendChild(block);
+					blocks.push(block);
+				}
+			}
+		} else {
+			var index = day;
+
+			if(this._ignores[this.locate_holder_day(day, false)]) return blocks;
+
+			if (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {
+				var view = this._props[this._mode];
+				index = view.order[options.sections[this._mode]];
+
+				var inner_index = view.order[options.sections[this._mode]];
+				if(!(view.days > 1)){
+					index = inner_index;
+					if (view.size && (index > view.position+view.size)) {
+						index = 0;
+					}
+				}else{
+					var units_l = view.size || view.options.length;
+					index = index*units_l + inner_index;
+				}
+			}
+			area = area ? area : scheduler.locate_holder(index);
+
+			for (var i = 0; i < zones.length; i+=2){
+				var start = Math.max(zones[i], c.first_hour*60);
+				var end = Math.min(zones[i+1], c.last_hour*60);
+				if (end <= start) {
+					if (i+2 < zones.length)
+						continue;
+					else
+						return [];
+				}
+
+				var block = scheduler._get_block_by_config(options);
+				block.className = css_classes;
+
+				// +1 for working with section which really takes up whole height (as % would be == 0)
+				var all_hours_height = this.config.hour_size_px*24 + 1;
+				var hour_ms = 60*60*1000;
+				block.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + "px";
+				block.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+"px";
+
+				area.appendChild(block);
+				blocks.push(block);
+			}
+		}
+
+		return blocks;
+	};
+	// just marks timespan, will be cleaned after refresh
+	scheduler.markTimespan = function(configuration) {
+		var divs = [];
+
+		var rebuild_els = false;
+		if(!this._els["dhx_cal_data"]){
+			scheduler.get_elements();
+			rebuild_els = true;
+		}
+		var data = this._els["dhx_cal_data"][0];
+
+		// backup regular marked timespans
+		var timespans_ids = scheduler._marked_timespans_ids,
+			timespan_types = scheduler._marked_timespans_types,
+			timespans = scheduler._marked_timespans;
+
+		scheduler.deleteMarkedTimespan();
+
+		//add block to configs
+		scheduler.addMarkedTimespan(configuration);
+
+		//manually trigger rendering of configs for each column
+		var date = new Date(scheduler._min_date);
+		for(var i = 0, len = data.childNodes.length; i < len; i++){
+			var area = data.childNodes[i];
+			if(area.firstChild && (area.firstChild.className || "").indexOf("dhx_scale_hour") > -1){
+				continue;
+			}
+
+			divs.push.apply(divs, scheduler._on_scale_add_marker(area, date));
+			date = scheduler.date.add(date, 1, "day");
+		}
+
+		if(rebuild_els)
+			scheduler._els = [];
+
+		// restore timespan config
+		scheduler._marked_timespans_ids = timespans_ids;
+		scheduler._marked_timespans_types = timespan_types;
+		scheduler._marked_timespans = timespans;
+
+		return divs;
+	};
+	scheduler.unmarkTimespan = function(divs) {
+		if (!divs)
+			return;
+		for (var i=0; i<divs.length; i++) {
+			var div = divs[i];
+			// parent may no longer be present if we switched views, navigated
+			if (div.parentNode) {
+				div.parentNode.removeChild(div);
+			}
+		}
+	};
+
+	scheduler._marked_timespans_ids = {};
+	// adds marked timespan to collections, persistent
+	scheduler.addMarkedTimespan = function(configuration) {
+		var configs = scheduler._prepare_timespan_options(configuration);
+		var global = "global";
+
+		if (!configs.length)
+			return; // options are incorrect, nothing to mark
+
+		var id = configs[0].id;
+		var timespans = scheduler._marked_timespans;
+		var ids = scheduler._marked_timespans_ids;
+		if (!ids[id])
+			ids[id] = [];
+
+		for (var i=0; i<configs.length; i++) {
+			var config = configs[i];
+			var day = config.days;
+			var zones = config.zones;
+			var css = config.css;
+			var sections = config.sections;
+			var type = config.type; // default or specified
+			config.id = id;
+
+			if (sections) {
+				for (var view_key in sections) {
+					if (sections.hasOwnProperty(view_key)) {
+						if (!timespans[view_key])
+							timespans[view_key] = {};
+						var unit_id = sections[view_key];
+						var timespans_view = timespans[view_key];
+						if (!timespans_view[unit_id])
+							timespans_view[unit_id] = {};
+						if (!timespans_view[unit_id][day])
+							timespans_view[unit_id][day] = {};
+						if (!timespans_view[unit_id][day][type]){
+							timespans_view[unit_id][day][type] = [];
+							if(!scheduler._marked_timespans_types)
+								scheduler._marked_timespans_types = {};
+							if(!scheduler._marked_timespans_types[type])
+								scheduler._marked_timespans_types[type] = true;
+						}
+						var day_configs = timespans_view[unit_id][day][type];
+						config._array = day_configs;
+						day_configs.push(config);
+						ids[id].push(config);
+					}
+				}
+			} else {
+				if (!timespans[global][day])
+					timespans[global][day] = {};
+				if (!timespans[global][day][type])
+					timespans[global][day][type] = [];
+
+				if(!scheduler._marked_timespans_types)
+					scheduler._marked_timespans_types = {};
+				if(!scheduler._marked_timespans_types[type])
+					scheduler._marked_timespans_types[type] = true;
+
+
+				var day_configs = timespans[global][day][type];
+				config._array = day_configs;
+				day_configs.push(config);
+				ids[id].push(config);
+			}
+		}
+		return id;
+	};
+	// not used for now
+	scheduler._add_timespan_zones = function(current_zones, zones) {
+		var resulting_zones = current_zones.slice();
+		zones = zones.slice();
+
+		if (!resulting_zones.length)
+			return zones;
+
+		for (var i=0; i<resulting_zones.length; i+=2) {
+			var c_zone_start = resulting_zones[i];
+			var c_zone_end = resulting_zones[i+1];
+			var isLast = (i+2 == resulting_zones.length);
+
+			for (var k=0; k<zones.length; k+=2) {
+				var zone_start = zones[k];
+				var zone_end = zones[k+1];
+				if ((zone_end > c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {
+					resulting_zones[i] = Math.min(c_zone_start, zone_start);
+					resulting_zones[i+1] = Math.max(c_zone_end, zone_end);
+					i -= 2;
+				} else {
+					if (!isLast) // do nothing, maybe next current zone will match or will be last
+						continue;
+
+					var offset = (c_zone_start > zone_start)?0:2;
+					resulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another
+				}
+				zones.splice(k--,2); // zone was merged or added, need to exclude it
+				break;
+			}
+		}
+		return resulting_zones;
+	};
+	scheduler._subtract_timespan_zones = function(current_zones, zones) {
+		var resulting_zones = current_zones.slice();
+		for (var i=0; i<resulting_zones.length; i+=2 ) {
+			var c_zone_start = resulting_zones[i];// current_zone_start
+			var c_zone_end = resulting_zones[i+1];
+			for (var k=0; k<zones.length; k+=2) {
+				var zone_start = zones[k];
+				var zone_end = zones[k+1];
+				if (zone_end > c_zone_start && zone_start < c_zone_end) {
+					var is_modified = false;
+					if (c_zone_start >= zone_start && c_zone_end <= zone_end) {
+						resulting_zones.splice(i, 2);
+					}				
+					if (c_zone_start < zone_start) {
+						resulting_zones.splice(i, 2, c_zone_start, zone_start);
+						is_modified = true;
+					}
+					if (c_zone_end > zone_end) {
+						resulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);
+					}
+					i -= 2;
+					break;
+				} else {
+					continue;
+				}
+			}
+		}
+		return resulting_zones;
+	};
+	scheduler.invertZones = function(zones) {
+		return scheduler._subtract_timespan_zones([0, 1440], zones.slice());
+	};
+	scheduler._delete_marked_timespan_by_id = function(id) {
+		var configs = scheduler._marked_timespans_ids[id];
+		if (configs) {
+			for (var i=0; i<configs.length; i++) {
+				var config = configs[i];
+				var parent_array = config._array;
+				for (var k=0; k<parent_array.length; k++) {
+					if (parent_array[k] == config) {
+						parent_array.splice(k, 1);
+						break;
+					}
+				}
+			}
+		}
+	};
+	scheduler._delete_marked_timespan_by_config = function(config) {
+		var timespans = scheduler._marked_timespans;
+		var sections = config.sections;
+		var day = config.days;
+		var type = config.type||default_timespan_type;
+		var day_timespans = []; // array of timespans to subtract our config
+		if (sections) {
+			for (var view_key in sections) {
+				if (sections.hasOwnProperty(view_key) && timespans[view_key]) {
+					var unit_id = sections[view_key];
+					if (timespans[view_key][unit_id] && timespans[view_key][unit_id][day] && timespans[view_key][unit_id][day][type])
+						day_timespans = timespans[view_key][unit_id][day][type];
+				}
+			}
+		} else {
+			if (timespans.global[day] && timespans.global[day][type])
+				day_timespans = timespans.global[day][type];
+		}
+		for (var i=0; i<day_timespans.length; i++) {
+			var d_t = day_timespans[i];
+			var zones = scheduler._subtract_timespan_zones(d_t.zones, config.zones);
+			if (zones.length)
+				d_t.zones = zones;
+			else {
+				day_timespans.splice(i,1);
+				i--;
+				// need to update ids collection
+				var related_zones = scheduler._marked_timespans_ids[d_t.id];
+				for (var k=0; k<related_zones.length; k++) {
+					if (related_zones[k] == d_t) {
+						related_zones.splice(k, 1);
+						break;
+					}
+				}
+			}
+		}
+
+		for (var i in scheduler._marked_timespans.timeline) {
+			for (var j in scheduler._marked_timespans.timeline[i]) {
+				for (var k in scheduler._marked_timespans.timeline[i][j]) {
+					if (k === type) {
+						delete scheduler._marked_timespans.timeline[i][j][k];
+					}
+				}
+			}
+		}
+	};
+	scheduler.deleteMarkedTimespan = function(configuration) {
+		// delete everything
+		if (!arguments.length) {
+			scheduler._marked_timespans = { global: {} };
+			scheduler._marked_timespans_ids = {};
+			scheduler._marked_timespans_types = {};
+		}
+
+		if (typeof configuration != "object") { // id was passed
+			scheduler._delete_marked_timespan_by_id(configuration);
+		} else { // normal configuration was passed
+
+			if(!(configuration.start_date && configuration.end_date)){
+				if(!configuration.days)
+					configuration.days = "fullweek";
+				if(!configuration.zones)
+					configuration.zones = "fullday";
+			}
+
+			var types = [];
+			if(!configuration.type){
+				//if type not specified - delete timespans of all types
+				for(var type in scheduler._marked_timespans_types){
+					types.push(type);
+				}
+			}else{
+				types.push(configuration.type);
+			}
+
+
+			var configs = scheduler._prepare_timespan_options(configuration);
+
+			for (var i=0; i<configs.length; i++) {
+
+				var config = configs[i];
+				for( var t=0; t < types.length; t++){
+					var typedConfig = scheduler._lame_clone(config);
+					typedConfig.type = types[t];
+					scheduler._delete_marked_timespan_by_config(typedConfig);
+				}
+			}
+
+		}
+	};
+	scheduler._get_types_to_render = function(common, specific) {
+		var types_to_render = (common) ? common : {};
+		for (var type in specific||{} ) {
+			if (specific.hasOwnProperty(type)) {
+				types_to_render[type] = specific[type];
+			}
+		}
+		return types_to_render;
+	};
+	scheduler._get_configs_to_render = function(types) {
+		var configs = [];
+		for (var type in types) {
+			if (types.hasOwnProperty(type)) {
+				configs.push.apply(configs, types[type]);
+			}
+		}
+		return configs;
+	};
+
+	scheduler._on_scale_add_marker = function(area, day){
+		if (scheduler._table_view && scheduler._mode != "month")
+			return;
+
+		var day_index = day.getDay();
+		var day_value = day.valueOf();
+		var mode = this._mode;
+		var timespans = scheduler._marked_timespans;
+		var r_configs = [];
+		var divs = [];
+		if (this._props && this._props[mode]) { // we are in the units view and need to draw it's sections as well
+			var view = this._props[mode]; // units view object
+			var units = view.options;
+			var index = scheduler._get_unit_index(view, day);
+			var unit = units[index]; // key, label
+
+			if(!(view.days > 1)){
+				day = 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
+			}else{
+				var dx = 24*60*60*1000;
+				var day_ind = Math.floor((day - scheduler._min_date)/dx);
+
+				day = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/units.length), "day"); // to the "same" day for all sections
+				day = scheduler.date.date_part(day);
+			}
+			day_index = day.getDay();
+			day_value = day.valueOf();
+
+			if (timespans[mode] && timespans[mode][unit.key]) {
+				var unit_zones = timespans[mode][unit.key];
+				var unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);
+				r_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));
+			}
+		}
+
+		var global_data = timespans["global"];
+		var day_types = global_data[day_value]||global_data[day_index];
+		r_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));
+
+		for (var i=0; i<r_configs.length; i++) {
+			divs.push.apply(divs, (scheduler._render_marked_timespan(r_configs[i], area, day)));
+		}
+		return divs;
+	};
+	scheduler.attachEvent("onScaleAdd", scheduler._on_scale_add_marker);
+
+	scheduler.dblclick_dhx_marked_timespan = function(e,src){
+		if (!scheduler.config.dblclick_create){
+			scheduler.callEvent("onScaleDblClick",[scheduler.getActionData(e).date,src,e]);
+		}
+		scheduler.addEventNow(scheduler.getActionData(e).date,null,e);
+	};
+
+};
+scheduler._temp_limit_scope();
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.txt
new file mode 100644
index 0000000000..9642f4c89d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_limit.js","sources":["dhtmlxscheduler_limit.js"],"names":["scheduler","config","limit_start","limit_end","limit_view","check_limits","mark_now","display_marked_timespans","_temp_limit_scope","getZones","ev","timespans","day_index","day_value","timespan_type","s","zones","containers","_props","matrix","container","property","view","view_config","linker","_add_timespan_zones","_get_blocked_zones","before","dhx_time_block","default_timespan_type","fix_options","options","days","Date","start_date","end_date","get_resulting_options","sections","type","css","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","attachEvent","om","od","nm","nd","isBlocked","date","mode","date_end","add","valueOf","setTimeout","resetDate","setCurrentView","checkInMarkedTimespan","on_overlap","res","temp_start_date","temp_end_date","_marked_timespans","date_part","getDay","i","length","sm","_get_zone_minutes","em","getDate","sz","ez","blocker","checkLimitViolation","event","c","evs","rec_type","dates","getRecDates","_copy_event","_lame_copy","push","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","id","timeline_zones","blocked_timeline_zones","this","_get_relevant_blocked_zones","relevant_zones","classname","getEvent","event_id","native_event_object","data","is_new_event","data_copy","_lame_clone","_roll_back_dates","event_duration","time_step","native_object","is_new","getActionData","_mark_now","window","_mark_now_timer","setInterval","_is_initialized","hide","dhx_now_time","_els","now","_currentDate","cfg","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","units_l","size","start_index","end_index","r_divs","childNodes","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","global","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","apply","undefined","min","max","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","document","createElement","html","innerHTML","appendChild","area","day","blocks","min_date","max_date","date_to_display","min_day","areas","_scales","sweek","Math","floor","_correct_shift","_cols","sday","_ignores","block_proto","height","offsetHeight","width","offsetWidth","left","_colsS","top","heights","xy","month_scale_height","className","style","lineHeight","cloneNode","round","order","inner_index","position","locate_holder","all_hours_height","hour_size_px","hour_ms","markTimespan","configuration","divs","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","len","firstChild","indexOf","_on_scale_add_marker","unmarkTimespan","configs","unit_id","timespans_view","day_configs","_array","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","day_timespans","d_t","related_zones","timeline","j","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","_get_unit_index","unit","dx","day_ind","_date","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","e","src","dblclick_create","addEventNow"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.xml
new file mode 100644
index 0000000000..2d2e3bf12b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_limit.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.xml
new file mode 100644
index 0000000000..815f898dc4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_limit.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_limit.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.js
new file mode 100644
index 0000000000..67b7b2361e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.js
@@ -0,0 +1,493 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.xy.map_date_width = 188; // date column width
+scheduler.xy.map_description_width = 400; // description column width
+
+scheduler.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
+scheduler.config.map_resolve_user_location = true; // if user will be promted to share his location to display it on the map
+
+scheduler.config.map_initial_position = new google.maps.LatLng(48.724, 8.215); // inital position of the map
+scheduler.config.map_error_position = new google.maps.LatLng(15, 15); // this position will be displayed in case if event doesn't have corresponding coordinates
+
+scheduler.config.map_infowindow_max_width = 300;
+
+scheduler.config.map_type = google.maps.MapTypeId.ROADMAP;
+
+scheduler.config.map_zoom_after_resolve = 15;
+
+scheduler.locale.labels.marker_geo_success = "It seems you are here.";
+scheduler.locale.labels.marker_geo_fail = "Sorry, could not get your current position using geolocation.";
+
+scheduler.templates.marker_date = scheduler.date.date_to_str("%Y-%m-%d %H:%i"); // date for map's infowindow will be formated following way
+
+scheduler.templates.marker_text = function(start, end, ev) {
+	return "<div><b>" + ev.text + "</b><br/><br/>" + (ev.event_location || '') + "<br/><br/>" + scheduler.templates.marker_date(start) + " - " + scheduler.templates.marker_date(end) + "</div>";
+};
+scheduler.dblclick_dhx_map_area = function() {
+	if (!this.config.readonly && this.config.dblclick_create)
+		this.addEventNow({
+			start_date: scheduler._date,
+			end_date: scheduler.date.add(scheduler._date, scheduler.config.time_step, "minute")
+		});
+};
+scheduler.templates.map_time = function(start, end, ev) {
+	if (ev._timed)
+		return this.day_date(ev.start_date, ev.end_date, ev) + " " + this.event_date(start);
+	else
+		return scheduler.templates.day_date(start) + " &ndash; " + scheduler.templates.day_date(end);
+};
+scheduler.templates.map_text = function(start, end, ev) {
+	return ev.text;
+};
+
+scheduler.date.map_start = function(d) {
+	return d;
+};
+scheduler.date.add_map = function(date, inc, mode) {
+	return (new Date(date.valueOf()));
+};
+
+scheduler.templates.map_date = function(dd, ed, mode) {
+	return '';
+};
+
+scheduler._latLngUpdate = false; // flag for not displaying event second time in case of coordinates update
+
+scheduler.attachEvent("onSchedulerReady", function() {
+	scheduler._isMapPositionSet = false; // if user actual (geolocation) position was set on the map
+
+	var gmap = document.createElement('div');
+	gmap.className = 'dhx_map';
+	gmap.id = 'dhx_gmap';
+	gmap.style.dispay = "none";
+
+	var node = scheduler._obj;
+
+	node.appendChild(gmap);
+
+	scheduler._els.dhx_gmap = [];
+	scheduler._els.dhx_gmap.push(gmap);
+
+	_setMapSize('dhx_gmap');
+
+	var mapOptions = {
+		zoom: scheduler.config.map_inital_zoom || 10,
+		center: scheduler.config.map_initial_position,
+		mapTypeId: scheduler.config.map_type || google.maps.MapTypeId.ROADMAP
+	};
+	var map = new google.maps.Map(document.getElementById('dhx_gmap'), mapOptions);
+	map.disableDefaultUI = false;
+	map.disableDoubleClickZoom = !scheduler.config.readonly;
+
+	google.maps.event.addListener(map, "dblclick", function(event) {
+		if (!scheduler.config.readonly && scheduler.config.dblclick_create) {
+			var point = event.latLng;
+			geocoder.geocode(
+				{ 'latLng': point },
+				function(results, status) {
+					if (status == google.maps.GeocoderStatus.OK) {
+						point = results[0].geometry.location;
+						scheduler.addEventNow({
+							lat: point.lat(),
+							lng: point.lng(),
+							event_location: results[0].formatted_address,
+							start_date: scheduler._date,
+							end_date: scheduler.date.add(scheduler._date, scheduler.config.time_step, "minute")
+						});
+					}
+				}
+			);
+		}
+	});
+
+	var infoWindowOptions = {
+		content: ''
+	};
+
+	if (scheduler.config.map_infowindow_max_width) {
+		infoWindowOptions.maxWidth = scheduler.config.map_infowindow_max_width;
+	}
+
+	scheduler.map = {
+		_points: [],
+		_markers: [],
+		_infowindow: new google.maps.InfoWindow(infoWindowOptions),
+		_infowindows_content: [],
+		_initialization_count: -1,
+		_obj: map
+	};
+
+	geocoder = new google.maps.Geocoder();
+
+	if (scheduler.config.map_resolve_user_location) {
+		if (navigator.geolocation) {
+			if (!scheduler._isMapPositionSet) {
+				navigator.geolocation.getCurrentPosition(function(position) {
+					var _userLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
+					map.setCenter(_userLocation);
+					map.setZoom(scheduler.config.map_zoom_after_resolve || 10);
+					scheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_success);
+					scheduler.map._infowindow.position = map.getCenter();
+					scheduler.map._infowindow.open(map);
+
+					scheduler._isMapPositionSet = true;
+				},
+						function() {
+							scheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_fail);
+							scheduler.map._infowindow.setPosition(map.getCenter());
+							scheduler.map._infowindow.open(map);
+							scheduler._isMapPositionSet = true;
+						});
+			}
+		}
+	}
+	google.maps.event.addListener(map, "resize", function(event) {
+		gmap.style.zIndex = '5';
+		map.setZoom(map.getZoom());
+
+	});
+	google.maps.event.addListener(map, "tilesloaded", function(event) {
+		gmap.style.zIndex = '5';
+	});
+
+	gmap.style.display = 'none'; // property was changed after attaching map
+
+
+	scheduler.attachEvent("onSchedulerResize", function() {
+		if (this._mode == "map") {
+			this.map_view(true);
+			return false;
+		}
+		return true;
+	});
+
+	var old = scheduler.render_data;
+	scheduler.render_data = function(evs, hold) {
+		if (this._mode == "map") {
+			fill_map_tab();
+			var events = scheduler.get_visible_events();
+			for (var i = 0; i < events.length; i++) {
+				if (!scheduler.map._markers[events[i].id]) {
+					showAddress(events[i], false, false);
+				}
+			}
+		} else
+			return old.apply(this, arguments);
+	};
+
+	function set_full_view(mode) {
+		if (mode) {
+			var l = scheduler.locale.labels;
+			scheduler._els["dhx_cal_header"][0].innerHTML = "<div class='dhx_map_line' style='width: " + (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + "px;' ><div class='headline_date' style='width: " + scheduler.xy.map_date_width + "px;'>" + l.date + "</div><div class='headline_description' style='width: " + scheduler.xy.map_description_width + "px;'>" + l.description + "</div></div>";
+			scheduler._table_view = true;
+			scheduler.set_sizes();
+		}
+	}
+
+	function clear_map_tab() {
+		scheduler._selected_event_id = null;
+		scheduler.map._infowindow.close();
+		var markers = scheduler.map._markers;
+		for (var key in markers) {
+			if (markers.hasOwnProperty(key)) {
+				markers[key].setMap(null);
+				delete scheduler.map._markers[key];
+				if (scheduler.map._infowindows_content[key])
+					delete scheduler.map._infowindows_content[key];
+			}
+		}
+	}
+
+	function fill_map_tab() {
+		//select events for which data need to be printed
+		var events = scheduler.get_visible_events();
+		events.sort(function(a, b) {
+			if(a.start_date.valueOf()==b.start_date.valueOf())
+				return a.id>b.id?1:-1;
+			return a.start_date>b.start_date?1:-1;
+		});
+
+		//generate html for the view
+		var html = "<div class='dhx_map_area'>";
+		for (var i = 0; i < events.length; i++) {
+			var ev = events[i];
+			var event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';
+			var bg_color = (ev.color ? ("background:" + ev.color + ";") : "");
+			var color = (ev.textColor ? ("color:" + ev.textColor + ";") : "");
+			html += "<div class='" + event_class + "' event_id='" + ev.id + "' style='" + bg_color + "" + color + "" + (ev._text_style || "") + " width: " + (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 2) + "px;'><div style='width: " + scheduler.xy.map_date_width + "px;' >" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + "</div>";
+			html += "<div class='dhx_event_icon icon_details'>&nbsp</div>";
+			html += "<div class='line_description' style='width:" + (scheduler.xy.map_description_width - 25) + "px;'>" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + "</div></div>"; // -25 = icon size 20 and padding 5
+		}
+		html += "<div class='dhx_v_border' style='left: " + (scheduler.xy.map_date_width - 2) + "px;'></div><div class='dhx_v_border_description'></div></div>";
+
+		//render html
+		scheduler._els["dhx_cal_data"][0].scrollTop = 0; //fix flickering in FF
+		scheduler._els["dhx_cal_data"][0].innerHTML = html;
+		scheduler._els["dhx_cal_data"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';
+
+		var t = scheduler._els["dhx_cal_data"][0].firstChild.childNodes;
+		scheduler._els["dhx_cal_date"][0].innerHTML = scheduler.templates[scheduler._mode + "_date"](scheduler._min_date, scheduler._max_date, scheduler._mode);
+
+		scheduler._rendered = [];
+		for (var i = 0; i < t.length - 2; i++) {
+			scheduler._rendered[i] = t[i];
+		}
+	}
+
+	function _setMapSize(elem_id) { //input - map's div id
+		var map = document.getElementById(elem_id);
+		var height = scheduler._y - scheduler.xy.nav_height;
+		if (height < 0)
+			height = 0;
+		var width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;
+		if (width < 0)
+			width = 0;
+		map.style.height = height + 'px';
+		map.style.width = width + 'px';
+		map.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';
+		map.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';
+	}
+
+	scheduler.map_view = function(mode) {
+		scheduler.map._initialization_count++;
+		var gmap = scheduler._els.dhx_gmap[0];
+		var temp_center;
+		scheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';
+
+		scheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());
+		scheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, "year");
+
+		scheduler._table_view = true;
+		set_full_view(mode);
+
+		if (mode) { //map tab activated
+			clear_map_tab();
+			fill_map_tab();
+			gmap.style.display = 'block';
+
+			// need to resize block everytime window is resized
+			_setMapSize('dhx_gmap');
+			temp_center = scheduler.map._obj.getCenter();
+
+			var events = scheduler.get_visible_events();
+			for (var i = 0; i < events.length; i++) {
+				if (!scheduler.map._markers[events[i].id]) {
+					showAddress(events[i]);
+				}
+			}
+
+		} else { //map tab de-activated
+			gmap.style.display = 'none';
+		}
+		google.maps.event.trigger(scheduler.map._obj, 'resize');
+
+		if (scheduler.map._initialization_count === 0 && temp_center) { // if tab is activated for the first time need to fix position
+			scheduler.map._obj.setCenter(temp_center);
+		}
+
+		if (scheduler._selected_event_id) {
+			selectEvent(scheduler._selected_event_id);
+		}
+	};
+
+	var selectEvent = function(event_id) {
+		scheduler.map._obj.setCenter(scheduler.map._points[event_id]);
+		scheduler.callEvent("onClick", [event_id]);
+	};
+
+	var showAddress = function(event, setCenter, performClick) { // what if event have incorrect position from the start?
+		var point = scheduler.config.map_error_position;
+		if (event.lat && event.lng) {
+			point = new google.maps.LatLng(event.lat, event.lng);
+		}
+		var message = scheduler.templates.marker_text(event.start_date, event.end_date, event);
+		if (!scheduler._new_event) {
+
+			scheduler.map._infowindows_content[event.id] = message;
+
+			if (scheduler.map._markers[event.id])
+				scheduler.map._markers[event.id].setMap(null);
+
+			scheduler.map._markers[event.id] = new google.maps.Marker({
+				position: point,
+				map: scheduler.map._obj
+			});
+
+			google.maps.event.addListener(scheduler.map._markers[event.id], 'click', function() {
+				scheduler.map._infowindow.setContent(scheduler.map._infowindows_content[event.id]);
+				scheduler.map._infowindow.open(scheduler.map._obj, scheduler.map._markers[event.id]);
+				scheduler._selected_event_id = event.id;
+				scheduler.render_data();
+			});
+			scheduler.map._points[event.id] = point;
+
+			if (setCenter) scheduler.map._obj.setCenter(scheduler.map._points[event.id]);
+			if (performClick) scheduler.callEvent("onClick", [event.id]);
+		}
+	};
+
+	scheduler.attachEvent("onClick", function(event_id, native_event_object) {
+		if (this._mode == "map") {
+			scheduler._selected_event_id = event_id;
+			for (var i = 0; i < scheduler._rendered.length; i++) {
+				scheduler._rendered[i].className = 'dhx_map_line';
+				if (scheduler._rendered[i].getAttribute("event_id") == event_id) {
+					scheduler._rendered[i].className += " highlight";
+				}
+			}
+			if (scheduler.map._points[event_id] && scheduler.map._markers[event_id]) {
+				scheduler.map._obj.setCenter(scheduler.map._points[event_id]); // was panTo
+				google.maps.event.trigger(scheduler.map._markers[event_id], 'click');
+			}
+		}
+		return true;
+	});
+
+	var _displayEventOnMap = function(event) {
+		if (event.event_location && geocoder) {
+			geocoder.geocode(
+				{
+					'address': event.event_location,
+					'language': scheduler.uid().toString()
+				},
+				function(results, status) {
+					var point = {};
+					if (status != google.maps.GeocoderStatus.OK) {
+						point = scheduler.callEvent("onLocationError", [event.id]);
+						if (!point || point === true)
+							point = scheduler.config.map_error_position;
+					} else {
+						point = results[0].geometry.location;
+					}
+					event.lat = point.lat();
+					event.lng = point.lng();
+
+					scheduler._selected_event_id = event.id;
+
+					scheduler._latLngUpdate = true;
+					scheduler.callEvent("onEventChanged", [event.id, event]);
+					showAddress(event, true, true);
+				}
+			);
+		} else {
+			showAddress(event, true, true);
+		}
+	};
+
+	var _updateEventLocation = function(event) { // update lat and lng in database
+		if (event.event_location && geocoder) {
+			geocoder.geocode(
+				{
+					'address': event.event_location,
+					'language': scheduler.uid().toString()
+				},
+				function(results, status) {
+					var point = {};
+					if (status != google.maps.GeocoderStatus.OK) {
+						point = scheduler.callEvent("onLocationError", [event.id]);
+						if (!point || point === true)
+							point = scheduler.config.map_error_position;
+					} else {
+						point = results[0].geometry.location;
+					}
+					event.lat = point.lat();
+					event.lng = point.lng();
+					scheduler._latLngUpdate = true;
+					scheduler.callEvent("onEventChanged", [event.id, event]);
+				}
+			);
+		}
+	};
+
+	var _delay = function(method, object, params, delay) {
+		setTimeout(function() {
+			var ret = method.apply(object, params);
+			method = object = params = null;
+			return ret;
+		}, delay || 1);
+	};
+
+	scheduler.attachEvent("onEventChanged", function(event_id, event_object) {
+		if (!this._latLngUpdate) {
+			var event = scheduler.getEvent(event_id);
+			if ((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)) {
+				if (scheduler.map._markers[event_id])
+					scheduler.map._markers[event_id].setMap(null);
+				_displayEventOnMap(event);
+			} else { // event no longer should be displayed on the map view
+				scheduler._selected_event_id = null;
+				scheduler.map._infowindow.close();
+				if (scheduler.map._markers[event_id])
+					scheduler.map._markers[event_id].setMap(null);
+			}
+		}
+		else
+			this._latLngUpdate = false;
+		return true;
+	});
+
+
+	scheduler.attachEvent("onEventIdChange", function(old_event_id, new_event_id) {
+		var event = scheduler.getEvent(new_event_id);
+		if ((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)) {
+			if (scheduler.map._markers[old_event_id]) {
+				scheduler.map._markers[old_event_id].setMap(null);
+				delete scheduler.map._markers[old_event_id];
+			}
+			if (scheduler.map._infowindows_content[old_event_id])
+				delete scheduler.map._infowindows_content[old_event_id];
+			_displayEventOnMap(event);
+		}
+		return true;
+	});
+
+	scheduler.attachEvent("onEventAdded", function(event_id, event_object) {
+		if (!scheduler._dataprocessor) {
+			if ((event_object.start_date < scheduler._min_date && event_object.end_date > scheduler._min_date) || (event_object.start_date < scheduler._max_date && event_object.end_date > scheduler._max_date) || (event_object.start_date.valueOf() >= scheduler._min_date && event_object.end_date.valueOf() <= scheduler._max_date)) {
+				if (scheduler.map._markers[event_id])
+					scheduler.map._markers[event_id].setMap(null);
+				_displayEventOnMap(event_object);
+			}
+		}
+		return true;
+	});
+
+	/* Test/example
+	 scheduler.attachEvent("onLocationError", function(event_id,event_object){
+	 return new google.maps.LatLng(8, 8);
+	 });
+	 */
+
+	scheduler.attachEvent("onBeforeEventDelete", function(event_id, event_object) {
+		if (scheduler.map._markers[event_id]) {
+			scheduler.map._markers[event_id].setMap(null); // if new event is deleted tab != map then it doesn't have marker yet
+		}
+		scheduler._selected_event_id = null;
+		scheduler.map._infowindow.close();
+		return true;
+	});
+
+	scheduler._event_resolve_delay = 1500;
+	scheduler.attachEvent("onEventLoading", function(event) {
+		if (scheduler.config.map_resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change
+			scheduler._event_resolve_delay += 1500;
+			_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);
+		}
+		return true;
+	});
+
+	scheduler.attachEvent("onEventCancel", function(event_id, is_new) {
+		if (is_new) {
+			if (scheduler.map._markers[event_id])
+				scheduler.map._markers[event_id].setMap(null);
+			scheduler.map._infowindow.close();
+		}
+		return true;
+	});
+});
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.txt
new file mode 100644
index 0000000000..edb124a891
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_map_view.js","sources":["dhtmlxscheduler_map_view.js"],"names":["scheduler","xy","map_date_width","map_description_width","config","map_resolve_event_location","map_resolve_user_location","map_initial_position","google","maps","LatLng","map_error_position","map_infowindow_max_width","map_type","MapTypeId","ROADMAP","map_zoom_after_resolve","locale","labels","marker_geo_success","marker_geo_fail","templates","marker_date","date","date_to_str","marker_text","start","end","ev","text","event_location","dblclick_dhx_map_area","this","readonly","dblclick_create","addEventNow","start_date","_date","end_date","add","time_step","map_time","_timed","day_date","event_date","map_text","map_start","d","add_map","inc","mode","Date","valueOf","map_date","dd","ed","_latLngUpdate","attachEvent","set_full_view","l","_els","innerHTML","description","_table_view","set_sizes","clear_map_tab","_selected_event_id","map","_infowindow","close","markers","_markers","key","hasOwnProperty","setMap","_infowindows_content","fill_map_tab","events","get_visible_events","sort","a","b","id","html","i","length","event_class","bg_color","color","textColor","_text_style","scrollTop","style","width","t","firstChild","childNodes","_mode","_min_date","_max_date","_rendered","_setMapSize","elem_id","document","getElementById","height","_y","nav_height","_x","marginLeft","marginTop","_isMapPositionSet","gmap","createElement","className","dispay","node","_obj","appendChild","dhx_gmap","push","mapOptions","zoom","map_inital_zoom","center","mapTypeId","Map","disableDefaultUI","disableDoubleClickZoom","event","addListener","point","latLng","geocoder","geocode","results","status","GeocoderStatus","OK","geometry","location","lat","lng","formatted_address","infoWindowOptions","content","maxWidth","_points","InfoWindow","_initialization_count","Geocoder","navigator","geolocation","getCurrentPosition","position","_userLocation","coords","latitude","longitude","setCenter","setZoom","setContent","getCenter","open","setPosition","zIndex","getZoom","display","map_view","old","render_data","evs","hold","apply","arguments","showAddress","temp_center","dhx_cal_data","_currentDate","map_end","trigger","selectEvent","event_id","callEvent","performClick","message","_new_event","Marker","native_event_object","getAttribute","_displayEventOnMap","address","language","uid","toString","_updateEventLocation","_delay","method","object","params","delay","setTimeout","ret","event_object","getEvent","old_event_id","new_event_id","_dataprocessor","_event_resolve_delay","is_new"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.xml
new file mode 100644
index 0000000000..be47dea716
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_map_view.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.xml
new file mode 100644
index 0000000000..4001b7574e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_map_view.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_map_view.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.js
new file mode 100644
index 0000000000..a529f17bb6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.js
@@ -0,0 +1,482 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.templates.calendar_month = scheduler.date.date_to_str("%F %Y");
+scheduler.templates.calendar_scale_date = scheduler.date.date_to_str("%D");
+scheduler.templates.calendar_date = scheduler.date.date_to_str("%d");
+scheduler.config.minicalendar = {
+	mark_events: true
+};
+scheduler._synced_minicalendars = [];
+scheduler.renderCalendar = function(obj, _prev, is_refresh) {
+	var cal = null;
+	var date = obj.date || (scheduler._currentDate());
+	if (typeof date == "string")
+		date = this.templates.api_date(date);
+
+	if (!_prev) {
+		var cont = obj.container;
+		var pos = obj.position;
+
+		if (typeof cont == "string")
+			cont = document.getElementById(cont);
+
+		if (typeof pos == "string")
+			pos = document.getElementById(pos);
+		if (pos && (typeof pos.left == "undefined")) {
+			var tpos = getOffset(pos);
+			pos = {
+				top: tpos.top + pos.offsetHeight,
+				left: tpos.left
+			};
+		}
+		if (!cont)
+			cont = scheduler._get_def_cont(pos);
+
+		cal = this._render_calendar(cont, date, obj);
+		cal.onclick = function(e) {
+			e = e || event;
+			var src = e.target || e.srcElement;
+
+			if (src.className.indexOf("dhx_month_head") != -1) {
+				var pname = src.parentNode.className;
+				if (pname.indexOf("dhx_after") == -1 && pname.indexOf("dhx_before") == -1) {
+					var newdate = scheduler.templates.xml_date(this.getAttribute("date"));
+					newdate.setDate(parseInt(src.innerHTML, 10));
+					scheduler.unmarkCalendar(this);
+					scheduler.markCalendar(this, newdate, "dhx_calendar_click");
+					this._last_date = newdate;
+					if (this.conf.handler) this.conf.handler.call(scheduler, newdate, this);
+				}
+			}
+		};
+	} else {
+		cal = this._render_calendar(_prev.parentNode, date, obj, _prev);
+		scheduler.unmarkCalendar(cal);
+	}
+
+	if (scheduler.config.minicalendar.mark_events) {
+		var start = scheduler.date.month_start(date);
+		var end = scheduler.date.add(start, 1, "month");
+		var evs = this.getEvents(start, end);
+		var filter = this["filter_" + this._mode];
+		for (var i = 0; i < evs.length; i++) {
+			var ev = evs[i];
+			if (filter && !filter(ev.id, ev))
+				continue;
+			var d = ev.start_date;
+			if (d.valueOf() < start.valueOf())
+				d = start;
+			d = scheduler.date.date_part(new Date(d.valueOf()));
+			while (d < ev.end_date) {
+				this.markCalendar(cal, d, "dhx_year_event");
+				d = this.date.add(d, 1, "day");
+				if (d.valueOf() >= end.valueOf())
+					break;
+			}
+		}
+	}
+
+	this._markCalendarCurrentDate(cal);
+
+	cal.conf = obj;
+	if (obj.sync && !is_refresh)
+		this._synced_minicalendars.push(cal);
+
+	if(!cal.conf._on_xle_handler){
+		cal.conf._on_xle_handler = scheduler.attachEvent("onXLE", function refreshOnLoad(){
+			scheduler.updateCalendar(cal, cal.conf.date);
+		});
+	}
+
+	return cal;
+};
+scheduler._get_def_cont = function(pos) {
+	if (!this._def_count) {
+		this._def_count = document.createElement("DIV");
+		this._def_count.className = "dhx_minical_popup";
+		this._def_count.onclick = function(e) { (e || event).cancelBubble = true; };
+		document.body.appendChild(this._def_count);
+	}
+
+	this._def_count.style.left = pos.left + "px";
+	this._def_count.style.top = pos.top + "px";
+	this._def_count._created = new Date();
+
+	return this._def_count;
+};
+scheduler._locateCalendar = function(cal, date) {
+	if (typeof date == "string")
+		date = scheduler.templates.api_date(date);
+
+	if(+date > +cal._max_date || +date < +cal._min_date)
+		return null;
+
+	var table = cal.childNodes[2].childNodes[0];
+
+	var weekNum = 0;
+	var dat = new Date(cal._min_date);
+	while(+this.date.add(dat, 1, "week") <= +date){
+		dat = this.date.add(dat, 1, "week");
+		weekNum++;
+	}
+
+	var sm = scheduler.config.start_on_monday;
+	var day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);
+	return table.rows[weekNum].cells[day].firstChild;
+};
+scheduler.markCalendar = function(cal, date, css) {
+	var div = this._locateCalendar(cal, date);
+	if(!div)
+		return;
+
+	div.className += " " + css;
+};
+scheduler.unmarkCalendar = function(cal, date, css) {
+	date = date || cal._last_date;
+	css = css || "dhx_calendar_click";
+	if (!date) return;
+	var el = this._locateCalendar(cal, date);
+	if(!el)
+		return;
+	el.className = (el.className || "").replace(RegExp(css, "g"));
+};
+scheduler._week_template = function(width) {
+	var summ = (width || 250);
+	var left = 0;
+
+	var week_template = document.createElement("div");
+	var dummy_date = this.date.week_start(scheduler._currentDate());
+	for (var i = 0; i < 7; i++) {
+		this._cols[i] = Math.floor(summ / (7 - i));
+		this._render_x_header(i, left, dummy_date, week_template);
+		dummy_date = this.date.add(dummy_date, 1, "day");
+		summ -= this._cols[i];
+		left += this._cols[i];
+	}
+	week_template.lastChild.className += " dhx_scale_bar_last";
+	return week_template;
+};
+scheduler.updateCalendar = function(obj, sd) {
+	obj.conf.date = sd;
+	this.renderCalendar(obj.conf, obj, true);
+};
+scheduler._mini_cal_arrows = ["&nbsp", "&nbsp"];
+scheduler._render_calendar = function(obj, sd, conf, previous) {
+	/*store*/
+	var ts = scheduler.templates;
+	var temp = this._cols;
+	this._cols = [];
+	var temp2 = this._mode;
+	this._mode = "calendar";
+	var temp3 = this._colsS;
+	this._colsS = {height: 0};
+	var temp4 = new Date(this._min_date);
+	var temp5 = new Date(this._max_date);
+	var temp6 = new Date(scheduler._date);
+	var temp7 = ts.month_day;
+	var temp8 = this._ignores_detected; this._ignores_detected = 0;
+	ts.month_day = ts.calendar_date;
+
+	sd = this.date.month_start(sd);
+	var week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );
+
+	var d;
+	if (previous)
+		d = previous; else {
+		d = document.createElement("DIV");
+		d.className = "dhx_cal_container dhx_mini_calendar";
+	}
+	d.setAttribute("date", this.templates.xml_format(sd));
+	d.innerHTML = "<div class='dhx_year_month'></div><div class='dhx_year_week'>" + week_template.innerHTML + "</div><div class='dhx_year_body'></div>";
+
+	d.childNodes[0].innerHTML = this.templates.calendar_month(sd);
+	if (conf.navigation) {
+		var move_minicalendar_date = function(calendar, diff) {
+			var date = scheduler.date.add(calendar._date, diff, "month");
+			scheduler.updateCalendar(calendar, date);
+			if (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {
+				scheduler._markCalendarCurrentDate(calendar);
+			}
+		};
+
+		var css_classnames = ["dhx_cal_prev_button", "dhx_cal_next_button"];
+		var css_texts = ["left:1px;top:2px;position:absolute;", "left:auto; right:1px;top:2px;position:absolute;"];
+		var diffs = [-1, 1];
+		var handler = function(diff) {
+			return function() {
+				if (conf.sync) {
+					var calendars = scheduler._synced_minicalendars;
+					for (var k = 0; k < calendars.length; k++) {
+						move_minicalendar_date(calendars[k], diff);
+					}
+				} else {
+					move_minicalendar_date(d, diff);
+				}
+			};
+		};
+		for (var j = 0; j < 2; j++) {
+			var arrow = document.createElement("DIV");
+			//var diff = diffs[j];
+			arrow.className = css_classnames[j];
+			arrow.style.cssText = css_texts[j];
+			arrow.innerHTML = this._mini_cal_arrows[j];
+			d.firstChild.appendChild(arrow);
+			arrow.onclick = handler(diffs[j]);
+		}
+	}
+	d._date = new Date(sd);
+
+	d.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;
+
+	var dd = d._min_date = this.date.week_start(sd);
+	d._max_date = this.date.add(d._min_date, 6, "week");
+
+	this._reset_month_scale(d.childNodes[2], sd, dd);
+
+	var r = d.childNodes[2].firstChild.rows;
+	for (var k = r.length; k < 6; k++) {
+		var last_row = r[r.length - 1];
+		r[0].parentNode.appendChild(last_row.cloneNode(true));
+		var last_day_number = parseInt(last_row.childNodes[last_row.childNodes.length - 1].childNodes[0].innerHTML);
+		last_day_number = (last_day_number < 10) ? last_day_number : 0; // previous week could end on 28-31, so we should start with 0
+		for (var ri = 0; ri < r[k].childNodes.length; ri++) {
+			r[k].childNodes[ri].className = "dhx_after";
+			r[k].childNodes[ri].childNodes[0].innerHTML = scheduler.date.to_fixed(++last_day_number);
+		}
+	}
+
+	if (!previous)
+		obj.appendChild(d);
+
+	d.childNodes[1].style.height = (d.childNodes[1].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)
+
+	/*restore*/
+	this._cols = temp;
+	this._mode = temp2;
+	this._colsS = temp3;
+	this._min_date = temp4;
+	this._max_date = temp5;
+	scheduler._date = temp6;
+	ts.month_day = temp7;
+	this._ignores_detected = temp8;
+	return d;
+};
+scheduler.destroyCalendar = function(cal, force) {
+	if (!cal && this._def_count && this._def_count.firstChild) {
+		if (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)
+			cal = this._def_count.firstChild;
+	}
+	if (!cal) return;
+	cal.onclick = null;
+	cal.innerHTML = "";
+	if (cal.parentNode)
+		cal.parentNode.removeChild(cal);
+	if (this._def_count)
+		this._def_count.style.top = "-1000px";
+
+	if(cal.conf && cal.conf._on_xle_handler)
+		scheduler.detachEvent(cal.conf._on_xle_handler);
+};
+scheduler.isCalendarVisible = function() {
+	if (this._def_count && parseInt(this._def_count.style.top, 10) > 0)
+		return this._def_count;
+	return false;
+};
+
+scheduler._attach_minical_events = function(){
+	dhtmlxEvent(document.body, "click", function() { scheduler.destroyCalendar(); });
+	scheduler._attach_minical_events = function(){};
+};
+
+scheduler.attachEvent("onTemplatesReady", function() {
+	scheduler._attach_minical_events();
+});
+
+scheduler.templates.calendar_time = scheduler.date.date_to_str("%d-%m-%Y");
+
+scheduler.form_blocks.calendar_time = {
+	render: function() {
+		var html = "<input class='dhx_readonly' type='text' readonly='true'>";
+
+		var cfg = scheduler.config;
+		var dt = this.date.date_part(scheduler._currentDate());
+
+		var last = 24 * 60, first = 0;
+		if (cfg.limit_time_select) {
+			first = 60 * cfg.first_hour;
+			last = 60 * cfg.last_hour + 1;  // to include "17:00" option if time select is limited
+		}
+		dt.setHours(first / 60);
+
+		html += " <select>";
+		for (var i = first; i < last; i += this.config.time_step * 1) { // `<` to exclude last "00:00" option
+			var time = this.templates.time_picker(dt);
+			html += "<option value='" + i + "'>" + time + "</option>";
+			dt = this.date.add(dt, this.config.time_step, "minute");
+		}
+		html += "</select>";
+
+		var full_day = scheduler.config.full_day;
+
+		return "<div style='height:30px;padding-top:0; font-size:inherit;' class='dhx_section_time'>" + html + "<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>" + html + "</div>";
+	},
+	set_value: function(node, value, ev) {
+
+		var inputs = node.getElementsByTagName("input");
+		var selects = node.getElementsByTagName("select");
+		var start_date,
+			end_date;
+
+		var _init_once = function(inp, date, number) {
+			inp.onclick = function() {
+				scheduler.destroyCalendar(null, true);
+				scheduler.renderCalendar({
+					position: inp,
+					date: new Date(this._date),
+					navigation: true,
+					handler: function(new_date) {
+						inp.value = scheduler.templates.calendar_time(new_date);
+						inp._date = new Date(new_date);
+						scheduler.destroyCalendar();
+						if (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date
+							_update_minical_select();
+						}
+					}
+				});
+			};
+		};
+
+		if (scheduler.config.full_day) {
+			if (!node._full_day) {
+				var html = "<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> " + scheduler.locale.labels.full_day + "&nbsp;</label></input>";
+				if (!scheduler.config.wide_form)
+					html = node.previousSibling.innerHTML + html;
+				node.previousSibling.innerHTML = html;
+				node._full_day = true;
+			}
+			var input = node.previousSibling.getElementsByTagName("input")[0];
+
+			var isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);
+			input.checked = isFulldayEvent;
+
+			selects[0].disabled = input.checked;
+			selects[1].disabled = input.checked;
+
+			input.onclick = function() {
+				if (input.checked === true) {
+					var obj = {};
+					scheduler.form_blocks.calendar_time.get_value(node, obj);
+
+					start_date = scheduler.date.date_part(obj.start_date);
+					end_date = scheduler.date.date_part(obj.end_date);
+
+					if (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))
+						end_date = scheduler.date.add(end_date, 1, "day");
+				}
+
+				var start = start_date || ev.start_date;
+				var end = end_date || ev.end_date;
+				_attach_action(inputs[0], start);
+				_attach_action(inputs[1], end);
+				selects[0].value = start.getHours() * 60 + start.getMinutes();
+				selects[1].value = end.getHours() * 60 + end.getMinutes();
+
+				selects[0].disabled = input.checked;
+				selects[1].disabled = input.checked;
+
+			};
+		}
+
+		if (scheduler.config.event_duration && scheduler.config.auto_end_date) {
+
+			var _update_minical_select = function () {
+				start_date = scheduler.date.add(inputs[0]._date, selects[0].value, "minute");
+				end_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));
+
+				inputs[1].value = scheduler.templates.calendar_time(end_date);
+				inputs[1]._date = scheduler.date.date_part(new Date(end_date));
+
+				selects[1].value = end_date.getHours() * 60 + end_date.getMinutes();
+			};
+
+			selects[0].onchange = _update_minical_select; // only update on first select should trigger update so user could define other end date if he wishes too
+		}
+
+		function _attach_action(inp, date, number) {
+			_init_once(inp, date, number);
+			inp.value = scheduler.templates.calendar_time(date);
+			inp._date = scheduler.date.date_part(new Date(date));
+		}
+
+		_attach_action(inputs[0], ev.start_date, 0);
+		_attach_action(inputs[1], ev.end_date, 1);
+		_init_once = function() {};
+
+		selects[0].value = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();
+		selects[1].value = ev.end_date.getHours() * 60 + ev.end_date.getMinutes();
+
+	},
+	get_value: function(node, ev) {
+		var inputs = node.getElementsByTagName("input");
+		var selects = node.getElementsByTagName("select");
+
+		ev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, "minute");
+		ev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, "minute");
+
+		if (ev.end_date <= ev.start_date)
+			ev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, "minute");
+		return {
+			start_date: new Date(ev.start_date),
+			end_date: new Date(ev.end_date)
+		};
+	},
+	focus: function(node) {
+	}
+};
+scheduler.linkCalendar = function(calendar, datediff) {
+	var action = function() {
+		var date = scheduler._date;
+		var dateNew = new Date(date.valueOf());
+		if (datediff) dateNew = datediff(dateNew);
+		dateNew.setDate(1);
+		scheduler.updateCalendar(calendar, dateNew);
+		return true;
+	};
+
+	scheduler.attachEvent("onViewChange", action);
+	scheduler.attachEvent("onXLE", action);
+	scheduler.attachEvent("onEventAdded", action);
+	scheduler.attachEvent("onEventChanged", action);
+	scheduler.attachEvent("onAfterEventDelete", action);
+	action();
+};
+
+scheduler._markCalendarCurrentDate = function(calendar) {
+	var date = scheduler._date;
+	var mode = scheduler._mode;
+	var month_start = scheduler.date.month_start(new Date(calendar._date));
+	var month_end = scheduler.date.add(month_start, 1, "month");
+
+	if (mode == 'day' || (this._props && !!this._props[mode])) { // if day or units view
+		if (month_start.valueOf() <= date.valueOf() && month_end > date) {
+			scheduler.markCalendar(calendar, date, "dhx_calendar_click");
+		}
+	} else if (mode == 'week') {
+		var dateNew = scheduler.date.week_start(new Date(date.valueOf()));
+		for (var i = 0; i < 7; i++) {
+			if (month_start.valueOf() <= dateNew.valueOf() && month_end > dateNew) // >= would mean mark first day of the next month
+				scheduler.markCalendar(calendar, dateNew, "dhx_calendar_click");
+			dateNew = scheduler.date.add(dateNew, 1, "day");
+		}
+	}
+};
+
+scheduler.attachEvent("onEventCancel", function(){
+	scheduler.destroyCalendar(null, true);
+});
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.txt
new file mode 100644
index 0000000000..4db364a80c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_minical.js","sources":["dhtmlxscheduler_minical.js"],"names":["scheduler","templates","calendar_month","date","date_to_str","calendar_scale_date","calendar_date","config","minicalendar","mark_events","_synced_minicalendars","renderCalendar","obj","_prev","is_refresh","cal","_currentDate","this","api_date","_render_calendar","parentNode","unmarkCalendar","cont","container","pos","position","document","getElementById","left","tpos","getOffset","top","offsetHeight","_get_def_cont","onclick","e","event","src","target","srcElement","className","indexOf","pname","newdate","xml_date","getAttribute","setDate","parseInt","innerHTML","markCalendar","_last_date","conf","handler","call","start","month_start","end","add","evs","getEvents","filter","_mode","i","length","ev","id","d","start_date","valueOf","date_part","Date","end_date","_markCalendarCurrentDate","sync","push","_on_xle_handler","attachEvent","updateCalendar","_def_count","createElement","cancelBubble","body","appendChild","style","_created","_locateCalendar","_max_date","_min_date","table","childNodes","weekNum","dat","sm","start_on_monday","day","getDay","rows","cells","firstChild","css","div","el","replace","RegExp","_week_template","width","summ","week_template","dummy_date","week_start","_cols","Math","floor","_render_x_header","lastChild","sd","_mini_cal_arrows","previous","ts","temp","temp2","temp3","_colsS","height","temp4","temp5","temp6","_date","temp7","month_day","temp8","_ignores_detected","offsetWidth","padding","setAttribute","xml_format","navigation","move_minicalendar_date","calendar","diff","getMonth","getFullYear","css_classnames","css_texts","diffs","calendars","k","j","arrow","cssText","dd","_reset_month_scale","r","last_row","cloneNode","last_day_number","ri","to_fixed","destroyCalendar","force","removeChild","detachEvent","isCalendarVisible","_attach_minical_events","dhtmlxEvent","calendar_time","form_blocks","render","html","cfg","dt","last","first","limit_time_select","first_hour","last_hour","setHours","time_step","time","time_picker","full_day","set_value","node","value","_attach_action","inp","number","_init_once","inputs","getElementsByTagName","selects","new_date","event_duration","auto_end_date","_update_minical_select","_full_day","locale","labels","wide_form","previousSibling","input","isFulldayEvent","time_part","checked","disabled","get_value","getHours","getMinutes","getTime","onchange","focus","linkCalendar","datediff","action","dateNew","mode","month_end","_props"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.xml
new file mode 100644
index 0000000000..ba73c1c05b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_minical.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.xml
new file mode 100644
index 0000000000..d3b947cd63
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_minical.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_minical.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.js
new file mode 100644
index 0000000000..d9f6b986bd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.js
@@ -0,0 +1,35 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady",function(){
+	scheduler.xy.scroll_width = 0;
+	
+	var old = scheduler.render_view_data;
+	scheduler.render_view_data=function(){
+		var data = this._els["dhx_cal_data"][0];
+		data.firstChild._h_fix = true;
+		
+		old.apply(scheduler,arguments);
+		
+		
+		
+		var height = parseInt(data.style.height);
+		data.style.height="1px";
+		data.style.height=data.scrollHeight+"px";
+		
+		this._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + "px";
+	};
+	
+	var old_s=scheduler._reset_month_scale;
+	scheduler._reset_month_scale=function(a,b,c){
+		var dummy = {clientHeight:100};
+		old_s.apply(scheduler,[dummy,b,c]);
+		a.innerHTML = dummy.innerHTML;
+	};
+	
+});
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.txt
new file mode 100644
index 0000000000..9e3191df4d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_monthheight.js","sources":["dhtmlxscheduler_monthheight.js"],"names":["scheduler","attachEvent","xy","scroll_width","old","render_view_data","data","this","_els","firstChild","_h_fix","apply","arguments","height","parseInt","style","scrollHeight","_obj","clientHeight","old_s","_reset_month_scale","a","b","c","dummy","innerHTML"],"mappings":";;;;;;;;AAQAA,UAAUC,YAAY,mBAAmB,WACxCD,UAAUE,GAAGC,aAAe,CAE5B,IAAIC,GAAMJ,UAAUK,gBACpBL,WAAUK,iBAAiB,WAC1B,GAAIC,GAAOC,KAAKC,KAAmB,aAAE,EACrCF,GAAKG,WAAWC,QAAS,EAEzBN,EAAIO,MAAMX,UAAUY,UAIpB,IAAIC,GAASC,SAASR,EAAKS,MAAMF,OACjCP,GAAKS,MAAMF,OAAO,MAClBP,EAAKS,MAAMF,OAAOP,EAAKU,aAAa,KAEpCT,KAAKU,KAAKF,MAAMF,OAASN,KAAKU,KAAKC,aAAeZ,EAAKU,aAAeH,EAAS,KAGhF,IAAIM,GAAMnB,UAAUoB,kBACpBpB,WAAUoB,mBAAmB,SAASC,EAAEC,EAAEC,GACzC,GAAIC,IAASN,aAAa,IAC1BC,GAAMR,MAAMX,WAAWwB,EAAMF,EAAEC;AAC/BF,EAAEI,UAAYD,EAAMC"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.xml
new file mode 100644
index 0000000000..e60020ebd3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_monthheight.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.xml
new file mode 100644
index 0000000000..508e7296da
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_monthheight.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_monthheight.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.js
new file mode 100644
index 0000000000..da52caf612
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.js
@@ -0,0 +1,70 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.form_blocks["multiselect"]={
+	render:function(sns) {
+		var _result = "<div class='dhx_multi_select_"+sns.name+"' style='overflow: auto; height: "+sns.height+"px; position: relative;' >";
+		for (var i=0; i<sns.options.length; i++) {
+			_result += "<label><input type='checkbox' value='"+sns.options[i].key+"'/>"+sns.options[i].label+"</label>";
+			if(convertStringToBoolean(sns.vertical)) _result += '<br/>';
+		}
+		_result += "</div>";
+		return _result;
+	},
+	set_value:function(node,value,ev,config){
+		
+		var _children = node.getElementsByTagName('input');
+		for(var i=0;i<_children.length;i++) {
+			_children[i].checked = false; //unchecking all inputs on the form
+		}
+		
+		function _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]
+			var _children = node.getElementsByTagName('input');
+			for(var i=0;i<_children.length; i++) {
+				_children[i].checked = !! ids[_children[i].value];
+			}			
+		}
+
+		var _ids = {};
+		if (ev[config.map_to]) {
+			var results = (ev[config.map_to] + "").split(',');
+			for (var i = 0; i < results.length; i++) {
+				_ids[results[i]] = true;
+			}
+			_mark_inputs(_ids);
+		} else {
+			if (scheduler._new_event || !config.script_url)
+				return;
+			var divLoading = document.createElement('div');
+			divLoading.className = 'dhx_loading';
+			divLoading.style.cssText = "position: absolute; top: 40%; left: 40%;";
+			node.appendChild(divLoading);
+			dhtmlxAjax.get(config.script_url + '?dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid(), function(loader) {
+				var _result = loader.doXPath("//data/item");
+				var _ids = {};
+				for (var i = 0; i < _result.length; i++) {
+					_ids[_result[i].getAttribute(config.map_to)] = true;
+				}
+				_mark_inputs(_ids);
+				node.removeChild(divLoading);
+			});
+		}
+	},
+	get_value:function(node,ev,config){
+		var _result = [];
+		var _children = node.getElementsByTagName("input");
+		for(var i=0;i<_children.length;i++) {
+			if(_children[i].checked)
+				_result.push(_children[i].value); 
+		}
+		return _result.join(','); 
+	},
+	
+	focus:function(node){
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.txt
new file mode 100644
index 0000000000..04396f26a2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_multiselect.js","sources":["dhtmlxscheduler_multiselect.js"],"names":["scheduler","form_blocks","render","sns","_result","name","height","i","options","length","key","label","convertStringToBoolean","vertical","set_value","node","value","ev","config","_mark_inputs","ids","_children","getElementsByTagName","checked","_ids","map_to","results","split","_new_event","script_url","divLoading","document","createElement","className","style","cssText","appendChild","dhtmlxAjax","get","id","uid","loader","doXPath","getAttribute","removeChild","get_value","push","join","focus"],"mappings":";;;;;;;;AAQAA,UAAUC,YAAyB,aAClCC,OAAO,SAASC,GAEf,IAAK,GADDC,GAAU,gCAAgCD,EAAIE,KAAK,oCAAoCF,EAAIG,OAAO,6BAC7FC,EAAE,EAAGA,EAAEJ,EAAIK,QAAQC,OAAQF,IACnCH,GAAW,wCAAwCD,EAAIK,QAAQD,GAAGG,IAAI,MAAMP,EAAIK,QAAQD,GAAGI,MAAM,WAC9FC,uBAAuBT,EAAIU,YAAWT,GAAW,QAGrD,OADAA,IAAW,UAGZU,UAAU,SAASC,EAAKC,EAAMC,EAAGC,GAOhC,QAASC,GAAaC,GAErB,IAAI,GADAC,GAAYN,EAAKO,qBAAqB,SAClCf,EAAE,EAAEA,EAAEc,EAAUZ,OAAQF,IAC/Bc,EAAUd,GAAGgB,UAAaH,EAAIC,EAAUd,GAAGS;AAP7C,IAAI,GADAK,GAAYN,EAAKO,qBAAqB,SAClCf,EAAE,EAAEA,EAAEc,EAAUZ,OAAOF,IAC9Bc,EAAUd,GAAGgB,SAAU,CAUxB,IAAIC,KACJ,IAAIP,EAAGC,EAAOO,QAAS,CAEtB,IAAK,GADDC,IAAWT,EAAGC,EAAOO,QAAU,IAAIE,MAAM,KACpCpB,EAAI,EAAGA,EAAImB,EAAQjB,OAAQF,IACnCiB,EAAKE,EAAQnB,KAAM,CAEpBY,GAAaK,OACP,CACN,GAAIxB,UAAU4B,aAAeV,EAAOW,WACnC,MACD,IAAIC,GAAaC,SAASC,cAAc,MACxCF,GAAWG,UAAY,cACvBH,EAAWI,MAAMC,QAAU,2CAC3BpB,EAAKqB,YAAYN,GACjBO,WAAWC,IAAIpB,EAAOW,WAAa,kBAAoBX,EAAOO,OAAS,IAAMR,EAAGsB,GAAK,QAAUvC,UAAUwC,MAAO,SAASC,GAGxH,IAAK,GAFDrC,GAAUqC,EAAOC,QAAQ,eACzBlB,KACKjB,EAAI,EAAGA,EAAIH,EAAQK,OAAQF,IACnCiB,EAAKpB,EAAQG,GAAGoC,aAAazB,EAAOO,UAAW;;AAEhDN,EAAaK,GACbT,EAAK6B,YAAYd,OAIpBe,UAAU,SAAS9B,EAAKE,EAAGC,GAG1B,IAAI,GAFAd,MACAiB,EAAYN,EAAKO,qBAAqB,SAClCf,EAAE,EAAEA,EAAEc,EAAUZ,OAAOF,IAC3Bc,EAAUd,GAAGgB,SACfnB,EAAQ0C,KAAKzB,EAAUd,GAAGS,MAE5B,OAAOZ,GAAQ2C,KAAK,MAGrBC,MAAM,SAASjC"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.xml
new file mode 100644
index 0000000000..2616e96eb6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_multiselect.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.xml
new file mode 100644
index 0000000000..523cacf690
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multiselect.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_multiselect.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.js
new file mode 100644
index 0000000000..733e3ef624
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.js
@@ -0,0 +1,30 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+(function(){
+
+	function backup(obj){
+		var t = function(){};
+		t.prototype = obj;
+		return t;
+	}
+
+	var old = scheduler._load;
+	scheduler._load=function(url,from){
+		url=url||this._load_url;
+		if (typeof url == "object"){
+			var t = backup(this._loaded);
+			for (var i=0; i < url.length; i++) {
+				this._loaded=new t();
+				old.call(this,url[i],from);
+			}
+		} else 
+			old.apply(this,arguments);
+	};
+	
+})();
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.txt
new file mode 100644
index 0000000000..a2a647ad47
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_multisource.js","sources":["dhtmlxscheduler_multisource.js"],"names":["backup","obj","t","prototype","old","scheduler","_load","url","from","this","_load_url","_loaded","i","length","call","apply","arguments"],"mappings":";;;;;;;;CAQA,WAEC,QAASA,GAAOC,GACf,GAAIC,GAAI,YAER,OADAA,GAAEC,UAAYF,EACPC,EAGR,GAAIE,GAAMC,UAAUC,KACpBD,WAAUC,MAAM,SAASC,EAAIC,GAE5B,GADAD,EAAIA,GAAKE,KAAKC,UACI,gBAAPH,GAEV,IAAK,GADDL,GAAIF,EAAOS,KAAKE,SACXC,EAAE,EAAGA,EAAIL,EAAIM,OAAQD,IAC7BH,KAAKE,QAAQ,GAAIT,GACjBE,EAAIU,KAAKL,KAAKF,EAAIK,GAAGJ,OAGtBJ,GAAIW,MAAMN,KAAKO"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.xml
new file mode 100644
index 0000000000..e2c9c0141f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_multisource.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.xml
new file mode 100644
index 0000000000..dc78337e59
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_multisource.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_multisource.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.js
new file mode 100644
index 0000000000..d8e9e66d1c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.js
@@ -0,0 +1,148 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+(function(){
+
+	var cfg = {
+		use_id : false
+	};
+
+	//remove private properties
+	function sanitize(ev){
+		var obj = {};
+		for (var key in ev)
+			if (key.indexOf("_") !== 0)
+				obj[key] = ev[key];
+
+		if (!cfg.use_id)
+			delete obj.id;
+
+		return obj;
+	}
+
+	var update_timer;
+	function update_view(){
+		clearTimeout(update_timer);
+		update_timer = setTimeout(function(){
+			scheduler.updateView();
+		},1);
+	}
+
+	function _start_ext_load(cal){
+		cal._loading = true;
+		cal._not_render = true;
+
+		cal.callEvent("onXLS", []);
+	}
+	function _finish_ext_load(cal){
+		cal._not_render = false;
+		if (cal._render_wait) 
+			cal.render_view_data();
+		cal._loading = false;
+
+		cal.callEvent("onXLE", []);
+	}
+
+	
+	function _get_id(model){
+		return cfg.use_id ? model.id : model.cid;
+	}
+
+scheduler.backbone = function(events, config){
+	if (config) cfg = config;
+
+	events.bind("change", function(model, info){
+		var cid = _get_id(model);
+		var ev = scheduler._events[cid] = model.toJSON();
+		ev.id = cid;
+
+		scheduler._init_event(ev);
+		update_view();
+	});
+	events.bind("remove", function(model, changes){
+		var cid = _get_id(model);
+		if (scheduler._events[cid])
+			scheduler.deleteEvent(cid);
+	});
+
+	var queue = [];
+	function add_from_queue(){
+		if (queue.length){
+			scheduler.parse(queue, "json");
+			queue = [];
+		}
+	}
+
+	events.bind("add", function(model, changes){ 
+		var cid = _get_id(model);
+		if (!scheduler._events[cid]){
+			var ev =  model.toJSON();
+			ev.id = cid;
+			scheduler._init_event(ev); 
+
+			queue.push(ev);
+			if (queue.length == 1)
+				setTimeout(add_from_queue,1);
+		}
+	});
+
+	events.bind("request", function(obj){
+		if (obj instanceof Backbone.Collection)
+			_start_ext_load(scheduler);
+	});
+	events.bind("sync", function(obj){
+		if (obj instanceof Backbone.Collection)
+			_finish_ext_load(scheduler);
+	});
+	events.bind("error", function(obj){
+		if (obj instanceof Backbone.Collection)
+			_finish_ext_load(scheduler);
+	});
+
+
+	scheduler.attachEvent("onEventCreated", function(id){
+		var ev = new events.model(scheduler.getEvent(id));
+		scheduler._events[id] = ev.toJSON();
+		scheduler._events[id].id = id;
+
+		return true;
+	});
+
+	scheduler.attachEvent("onEventAdded", function(id){
+		if (!events.get(id)){
+			var data = sanitize(scheduler.getEvent(id));
+			var model = new events.model(data);
+
+			var cid = _get_id(model);
+			if (cid != id)
+				this.changeEventId(id, cid);
+			events.add(model);
+			events.trigger("scheduler:add", model);
+		}
+		return true;
+	});
+	scheduler.attachEvent("onEventChanged", function(id){
+		var ev = events.get(id);
+		var upd = sanitize(scheduler.getEvent(id));
+
+		ev.set(upd);
+		events.trigger("scheduler:change", ev);
+
+		return true;
+	});
+	scheduler.attachEvent("onEventDeleted", function(id){
+		var model = events.get(id);
+		if (model){
+			events.trigger("scheduler:remove", model);
+			events.remove(id);
+		}
+		return true;
+	});
+};
+
+})();
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.txt
new file mode 100644
index 0000000000..21e756c269
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_mvc.js","sources":["dhtmlxscheduler_mvc.js"],"names":["sanitize","ev","obj","key","indexOf","cfg","use_id","id","update_view","clearTimeout","update_timer","setTimeout","scheduler","updateView","_start_ext_load","cal","_loading","_not_render","callEvent","_finish_ext_load","_render_wait","render_view_data","_get_id","model","cid","backbone","events","config","add_from_queue","queue","length","parse","bind","info","_events","toJSON","_init_event","changes","deleteEvent","push","Backbone","Collection","attachEvent","getEvent","get","data","this","changeEventId","add","trigger","upd","set","remove"],"mappings":";;;;;;;;CAQA,WAOC,QAASA,GAASC,GACjB,GAAIC,KACJ,KAAK,GAAIC,KAAOF,GACU,IAArBE,EAAIC,QAAQ,OACfF,EAAIC,GAAOF,EAAGE,GAKhB,OAHKE,GAAIC,cACDJ,GAAIK,GAELL,EAIR,QAASM,KACRC,aAAaC,GACbA,EAAeC,WAAW,WACzBC,UAAUC,cACT,GAGH,QAASC,GAAgBC,GACxBA,EAAIC,UAAW,EACfD,EAAIE,aAAc,EAElBF,EAAIG,UAAU,YAEf,QAASC,GAAiBJ,GACzBA,EAAIE,aAAc,EACdF,EAAIK,cACPL,EAAIM,mBACLN,EAAIC,UAAW,EAEfD,EAAIG,UAAU,YAIf,QAASI,GAAQC,GAChB,MAAOlB,GAAIC,OAASiB,EAAMhB,GAAKgB,EAAMC,IA1CtC,GAiBId,GAjBAL,GACHC,QAAS,EA4CXM,WAAUa,SAAW,SAASC,EAAQC,GAkBrC,QAASC,KACJC,EAAMC,SACTlB,UAAUmB,MAAMF,EAAO;AACvBA,MApBEF,IAAQtB,EAAMsB,GAElBD,EAAOM,KAAK,SAAU,SAAST,EAAOU,GACrC,GAAIT,GAAMF,EAAQC,GACdtB,EAAKW,UAAUsB,QAAQV,GAAOD,EAAMY,QACxClC,GAAGM,GAAKiB,EAERZ,UAAUwB,YAAYnC,GACtBO,MAEDkB,EAAOM,KAAK,SAAU,SAAST,EAAOc,GACrC,GAAIb,GAAMF,EAAQC,EACdX,WAAUsB,QAAQV,IACrBZ,UAAU0B,YAAYd,IAGxB,IAAIK,KAQJH,GAAOM,KAAK,MAAO,SAAST,EAAOc,GAClC,GAAIb,GAAMF,EAAQC,EAClB,KAAKX,UAAUsB,QAAQV,GAAK,CAC3B,GAAIvB,GAAMsB,EAAMY,QAChBlC,GAAGM,GAAKiB,EACRZ,UAAUwB,YAAYnC,GAEtB4B,EAAMU,KAAKtC,GACS,GAAhB4B,EAAMC,QACTnB,WAAWiB,EAAe,MAI7BF,EAAOM,KAAK,UAAW,SAAS9B,GAC3BA,YAAesC,UAASC,YAC3B3B,EAAgBF,aAElBc,EAAOM,KAAK,OAAQ,SAAS9B,GACxBA,YAAesC,UAASC,YAC3BtB,EAAiBP;;GAEnBc,EAAOM,KAAK,QAAS,SAAS9B,GACzBA,YAAesC,UAASC,YAC3BtB,EAAiBP,aAInBA,UAAU8B,YAAY,iBAAkB,SAASnC,GAChD,GAAIN,GAAK,GAAIyB,GAAOH,MAAMX,UAAU+B,SAASpC,GAI7C,OAHAK,WAAUsB,QAAQ3B,GAAMN,EAAGkC,SAC3BvB,UAAUsB,QAAQ3B,GAAIA,GAAKA,GAEpB,IAGRK,UAAU8B,YAAY,eAAgB,SAASnC,GAC9C,IAAKmB,EAAOkB,IAAIrC,GAAI,CACnB,GAAIsC,GAAO7C,EAASY,UAAU+B,SAASpC,IACnCgB,EAAQ,GAAIG,GAAOH,MAAMsB,GAEzBrB,EAAMF,EAAQC,EACdC,IAAOjB,GACVuC,KAAKC,cAAcxC,EAAIiB,GACxBE,EAAOsB,IAAIzB,GACXG,EAAOuB,QAAQ,gBAAiB1B,GAEjC,OAAO,IAERX,UAAU8B,YAAY,iBAAkB,SAASnC,GAChD,GAAIN,GAAKyB,EAAOkB,IAAIrC,GAChB2C,EAAMlD,EAASY,UAAU+B,SAASpC;;AAKtC,MAHAN,GAAGkD,IAAID,GACPxB,EAAOuB,QAAQ,mBAAoBhD,IAE5B,IAERW,UAAU8B,YAAY,iBAAkB,SAASnC,GAChD,GAAIgB,GAAQG,EAAOkB,IAAIrC,EAKvB,OAJIgB,KACHG,EAAOuB,QAAQ,mBAAoB1B,GACnCG,EAAO0B,OAAO7C,KAER"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.xml
new file mode 100644
index 0000000000..de10ad92b3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_mvc.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.xml
new file mode 100644
index 0000000000..cd29d1543f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_mvc.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_mvc.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.js
new file mode 100644
index 0000000000..171d11111d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.js
@@ -0,0 +1,84 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.load=function(url,call){
+	var type;
+	if (typeof call == "string"){
+		this._process=call;
+		type = call;
+		call = arguments[2];
+	}
+
+	this._load_url=url;
+	this._after_call=call;
+	if (url.$proxy) {
+		url.load(this, typeof type == "string" ? type : null);
+		return;
+	}
+
+	this._load(url,this._date);
+};
+
+scheduler._dp_init_backup = scheduler._dp_init;
+scheduler._dp_init = function(dp) {
+	dp._sendData = function(a1,rowId){
+    	if (!a1) return; //nothing to send
+		if (!this.callEvent("onBeforeDataSending",rowId?[rowId,this.getState(rowId),a1]:[null, null, a1])) return false;				
+    	if (rowId)
+			this._in_progress[rowId]=(new Date()).valueOf();
+		if (this.serverProcessor.$proxy) {
+			var mode = this._tMode!="POST" ? 'get' : 'post';
+			var to_send = [];
+			for (var i in a1)
+				to_send.push({ id: i, data: a1[i], operation: this.getState(i)});
+			this.serverProcessor._send(to_send, mode, this);
+			return;
+		}
+
+		var a2=new dtmlXMLLoaderObject(this.afterUpdate,this,true);
+		var a3 = this.serverProcessor+(this._user?(getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&")):"");
+		if (this._tMode!="POST")
+        	a2.loadXML(a3+((a3.indexOf("?")!=-1)?"&":"?")+this.serialize(a1,rowId));
+		else
+        	a2.loadXML(a3,true,this.serialize(a1,rowId));
+		this._waitMode++;
+    };
+	
+	dp._updatesToParams = function(items) {
+		var stack = {};
+		for (var i = 0; i < items.length; i++)
+			stack[items[i].id] = items[i].data;
+		return this.serialize(stack);
+	};
+
+	dp._processResult = function(text, xml, loader) {
+		if (loader.status != 200) {
+			for (var i in this._in_progress) {
+				var state = this.getState(i);
+				this.afterUpdateCallback(i, i, state, null);
+			}
+			return;
+		}
+		xml = new dtmlXMLLoaderObject(function() {},this,true);
+		xml.loadXMLString(text);
+		xml.xmlDoc = loader;
+
+		this.afterUpdate(this, null, null, null, xml);
+	};
+	this._dp_init_backup(dp);
+};
+
+if (window.dataProcessor)
+	dataProcessor.prototype.init=function(obj){
+		this.init_original(obj);
+		obj._dataprocessor=this;
+		
+		this.setTransactionMode("POST",true);
+		if (!this.serverProcessor.$proxy)
+			this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true";
+	};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.txt
new file mode 100644
index 0000000000..f9d0978837
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_offline.js","sources":["dhtmlxscheduler_offline.js"],"names":["scheduler","load","url","call","type","this","_process","arguments","_load_url","_after_call","$proxy","_load","_date","_dp_init_backup","_dp_init","dp","_sendData","a1","rowId","callEvent","getState","_in_progress","Date","valueOf","serverProcessor","mode","_tMode","to_send","i","push","id","data","operation","_send","a2","dtmlXMLLoaderObject","afterUpdate","a3","_user","getUrlSymbol","obj","getUserData","join","loadXML","indexOf","serialize","_waitMode","_updatesToParams","items","stack","length","_processResult","text","xml","loader","status","loadXMLString","xmlDoc","state","afterUpdateCallback","window","dataProcessor","prototype","init","init_original","_dataprocessor","setTransactionMode"],"mappings":";;;;;;;;AAQAA,UAAUC,KAAK,SAASC,EAAIC,GAC3B,GAAIC,EASJ,OARmB,gBAARD,KACVE,KAAKC,SAASH,EACdC,EAAOD,EACPA,EAAOI,UAAU,IAGlBF,KAAKG,UAAUN,EACfG,KAAKI,YAAYN,EACbD,EAAIQ,WACPR,GAAID,KAAKI,KAAqB,gBAARD,GAAmBA,EAAO,UAIjDC,MAAKM,MAAMT,EAAIG,KAAKO,QAGrBZ,UAAUa,gBAAkBb,UAAUc,SACtCd,UAAUc,SAAW,SAASC,GAC7BA,EAAGC,UAAY,SAASC,EAAGC,GACvB,GAAKD,EAAL,CACH,IAAKZ,KAAKc,UAAU,sBAAsBD,GAAOA,EAAMb,KAAKe,SAASF,GAAOD,IAAK,KAAM,KAAMA,IAAM,OAAO,CAG1G,IAFOC,IACNb,KAAKgB,aAAaH,IAAO,GAAKI,OAAQC,WACnClB,KAAKmB,gBAAgBd,OAAQ,CAChC,GAAIe,GAAoB,QAAbpB,KAAKqB,OAAiB,MAAQ,OACrCC;;AACJ,IAAK,GAAIC,KAAKX,GACbU,EAAQE,MAAOC,GAAIF,EAAGG,KAAMd,EAAGW,GAAII,UAAW3B,KAAKe,SAASQ,IAE7D,YADAvB,MAAKmB,gBAAgBS,MAAMN,EAASF,EAAMpB,MAI3C,GAAI6B,GAAG,GAAIC,qBAAoB9B,KAAK+B,YAAY/B,MAAK,GACjDgC,EAAKhC,KAAKmB,iBAAiBnB,KAAKiC,MAAOC,aAAalC,KAAKmB,kBAAkB,YAAYnB,KAAKiC,MAAM,eAAejC,KAAKmC,IAAIC,YAAY,EAAE,YAAYC,KAAK,KAAM,GAClJ,SAAbrC,KAAKqB,OACFQ,EAAGS,QAAQN,GAAsB,IAAjBA,EAAGO,QAAQ,KAAU,IAAI,KAAKvC,KAAKwC,UAAU5B,EAAGC,IAEhEgB,EAAGS,QAAQN,GAAG,EAAKhC,KAAKwC,UAAU5B,EAAGC,IAC5Cb,KAAKyC,cAGN/B,EAAGgC,iBAAmB,SAASC,GAE9B,IAAK,GADDC,MACKrB,EAAI,EAAGA,EAAIoB,EAAME,OAAQtB,IACjCqB,EAAMD,EAAMpB,GAAGE,IAAMkB,EAAMpB,GAAGG;;AAC/B,MAAO1B,MAAKwC,UAAUI,IAGvBlC,EAAGoC,eAAiB,SAASC,EAAMC,EAAKC,GACvC,GAAqB,KAAjBA,EAAOC,OAOXF,EAAM,GAAIlB,qBAAoB,aAAc9B,MAAK,GACjDgD,EAAIG,cAAcJ,GAClBC,EAAII,OAASH,EAEbjD,KAAK+B,YAAY/B,KAAM,KAAM,KAAM,KAAMgD,OAVxC,KAAK,GAAIzB,KAAKvB,MAAKgB,aAAc,CAChC,GAAIqC,GAAQrD,KAAKe,SAASQ,EAC1BvB,MAAKsD,oBAAoB/B,EAAGA,EAAG8B,EAAO,QAUzCrD,KAAKQ,gBAAgBE,IAGlB6C,OAAOC,gBACVA,cAAcC,UAAUC,KAAK,SAASvB,GACrCnC,KAAK2D,cAAcxB,GACnBA,EAAIyB,eAAe5D,KAEnBA,KAAK6D,mBAAmB,QAAO,GAC1B7D,KAAKmB,gBAAgBd,SACzBL,KAAKmB,kBAAqD,IAAnCnB,KAAKmB,gBAAgBoB,QAAQ,KAAS,IAAI,KAAK"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.xml
new file mode 100644
index 0000000000..6c8f88e302
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_offline.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.xml
new file mode 100644
index 0000000000..f7b091055f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_offline.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_offline.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.js
new file mode 100644
index 0000000000..cf6075a13a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.js
@@ -0,0 +1,61 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+// lame old code doesn't provide raw event object
+scheduler.attachEvent("onTemplatesReady", function() {
+	var dragger = (new dhtmlDragAndDropObject());
+	var old = dragger.stopDrag;
+	var last_event;
+	dragger.stopDrag = function(e) {
+		last_event = e || event;
+		return old.apply(this, arguments);
+	};
+	dragger.addDragLanding(scheduler._els["dhx_cal_data"][0], {
+		_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {
+
+			if (scheduler.checkEvent("onBeforeExternalDragIn") && !scheduler.callEvent("onBeforeExternalDragIn", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))
+				return;
+
+			var temp = scheduler.attachEvent("onEventCreated", function(id) {
+				if (!scheduler.callEvent("onExternalDragIn", [id, sourceHtmlObject, last_event])) {
+					this._drag_mode = this._drag_id = null;
+					this.deleteEvent(id);
+				}
+			});
+
+			var action_data = scheduler.getActionData(last_event);
+			var event_data = {
+				start_date: new Date(action_data.date)
+			};
+
+			// custom views, need to assign section id, fix dates
+			if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {
+				var view_options = scheduler.matrix[scheduler._mode];
+				event_data[view_options.y_property] = action_data.section;
+
+				var pos = scheduler._locate_cell_timeline(last_event);
+				event_data.start_date = view_options._trace_x[pos.x];
+				event_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);
+			}
+			if (scheduler._props && scheduler._props[scheduler._mode]) {
+				event_data[scheduler._props[scheduler._mode].map_to] = action_data.section;
+			}
+
+			scheduler.addEventNow(event_data);
+
+			scheduler.detachEvent(temp);
+
+		},
+		_dragIn: function(htmlObject, shtmlObject) {
+			return htmlObject;
+		},
+		_dragOut: function(htmlObject) {
+			return this;
+		}
+	});
+});
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.txt
new file mode 100644
index 0000000000..499f218bc5
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_outerdrag.js","sources":["dhtmlxscheduler_outerdrag.js"],"names":["scheduler","attachEvent","last_event","dragger","dhtmlDragAndDropObject","old","stopDrag","e","event","apply","this","arguments","addDragLanding","_els","_drag","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","checkEvent","callEvent","temp","id","_drag_mode","_drag_id","deleteEvent","action_data","getActionData","event_data","start_date","Date","date","matrix","_mode","view_options","y_property","section","pos","_locate_cell_timeline","_trace_x","x","end_date","add","x_step","x_unit","_props","map_to","addEventNow","detachEvent","_dragIn","htmlObject","shtmlObject","_dragOut"],"mappings":";;;;;;;;AASAA,UAAUC,YAAY,mBAAoB,WACzC,GAEIC,GAFAC,EAAU,GAAKC,wBACfC,EAAMF,EAAQG,QAElBH,GAAQG,SAAW,SAASC,GAE3B,MADAL,GAAaK,GAAKC,MACXH,EAAII,MAAMC,KAAMC,YAExBR,EAAQS,eAAeZ,UAAUa,KAAmB,aAAE,IACrDC,MAAO,SAASC,EAAkBC,EAAaC,EAAkBC,GAEhE,IAAIlB,UAAUmB,WAAW,2BAA8BnB,UAAUoB,UAAU,0BAA2BL,EAAkBC,EAAaC,EAAkBC,EAAYhB,IAAnK,CAGA,GAAImB,GAAOrB,UAAUC,YAAY,iBAAkB,SAASqB,GACtDtB,UAAUoB,UAAU,oBAAqBE,EAAIP,EAAkBb,MACnEQ,KAAKa,WAAab,KAAKc,SAAW,KAClCd,KAAKe,YAAYH;;GAIfI,EAAc1B,UAAU2B,cAAczB,GACtC0B,GACHC,WAAY,GAAIC,MAAKJ,EAAYK,MAIlC,IAAI/B,UAAUgC,QAAUhC,UAAUgC,OAAOhC,UAAUiC,OAAQ,CAC1D,GAAIC,GAAelC,UAAUgC,OAAOhC,UAAUiC,MAC9CL,GAAWM,EAAaC,YAAcT,EAAYU,OAElD,IAAIC,GAAMrC,UAAUsC,sBAAsBpC,EAC1C0B,GAAWC,WAAaK,EAAaK,SAASF,EAAIG,GAClDZ,EAAWa,SAAWzC,UAAU+B,KAAKW,IAAId,EAAWC,WAAYK,EAAaS,OAAQT,EAAaU,QAE/F5C,UAAU6C,QAAU7C,UAAU6C,OAAO7C,UAAUiC,SAClDL,EAAW5B,UAAU6C,OAAO7C,UAAUiC,OAAOa,QAAUpB,EAAYU,SAGpEpC,UAAU+C,YAAYnB,GAEtB5B,UAAUgD,YAAY3B,KAGvB4B,QAAS,SAASC,EAAYC;AAC7B,MAAOD,IAERE,SAAU,SAASF,GAClB,MAAOxC"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.xml
new file mode 100644
index 0000000000..c48033f228
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_outerdrag.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.xml
new file mode 100644
index 0000000000..eacdd139f8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_outerdrag.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_outerdrag.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.js
new file mode 100644
index 0000000000..8d369e33ee
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.js
@@ -0,0 +1,364 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+(function() {
+	var dx, dy,	
+		html_regexp = new RegExp("<[^>]*>", "g"),
+		newline_regexp = new RegExp("<br[^>]*>", "g");
+
+	function clean_html(val) {
+		return val.replace(newline_regexp, "\n").replace(html_regexp, "");
+	}
+
+	function x_norm(x, offset) {
+		x = parseFloat(x);
+		offset = parseFloat(offset);
+		if (!isNaN(offset)) x -= offset;
+
+		var w = colsWidth(x);
+		x = x - w.width + w.cols*dx;
+		return isNaN(x)?"auto":(100*x/(dx));
+	}
+
+	function x_norm_event(x, offset, is_left) {
+		x = parseFloat(x);
+		offset = parseFloat(offset);
+		if (!isNaN(offset) && is_left) x -= offset;
+
+		var w = colsWidth(x);
+		x = x - w.width + w.cols*dx;
+		return isNaN(x)?"auto":(100*x/(dx-(!isNaN(offset)?offset:0)));
+	}
+	function colsWidth(width) {
+		var r = 0;
+		var header = scheduler._els.dhx_cal_header[0].childNodes;
+		var els = header[1] ? header[1].childNodes : header[0].childNodes;
+		for (var i = 0; i < els.length; i++) {
+			var el = els[i].style ? els[i] : els[i].parentNode;
+			var w = parseFloat(el.style.width);
+			if (width > w){
+				width -= (w+1);
+				r+=(w+1);
+			}
+			else
+				break;
+		}
+		return { width: r, cols: i };
+	}
+
+	function y_norm(y) {
+		y = parseFloat(y);
+		if (isNaN(y)) return "auto";
+		return 100 * y / dy;
+	}
+
+	function get_style(node, style){
+		return (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||"";
+	}
+
+	function de_day(node, n) {
+		var x = parseInt(node.style.left, 10);
+
+		for (var dx = 0; dx < scheduler._cols.length; dx++) {
+			x -= scheduler._cols[dx];
+			if (x < 0) return dx;
+		}
+		return n;
+	}
+
+	function de_week(node, n) {
+		var y = parseInt(node.style.top, 10);
+		for (var dy = 0; dy < scheduler._colsS.heights.length; dy++)
+			if (scheduler._colsS.heights[dy] > y) return dy;
+		return n;
+	}
+
+	function xml_start(tag) {
+		return tag ? "<"+tag+">" : "";
+	}
+	function xml_end(tag) {
+		return tag ? "</"+tag+">" : "";
+	}
+
+	function xml_top(tag, profile, header, footer) {
+		var xml = "<"+tag+" profile='" + profile + "'";
+		if (header)
+			xml += " header='" + header + "'";
+		if (footer)
+			xml += " footer='" + footer + "'";
+		xml += ">";
+		return xml;
+	}
+
+	function xml_body_header() {
+		var xml = "";
+		// detects if current mode is timeline
+		var mode = scheduler._mode;
+		if (scheduler.matrix && scheduler.matrix[scheduler._mode])
+			mode = (scheduler.matrix[scheduler._mode].render == "cell") ? "matrix" : "timeline";
+		xml += "<scale mode='" + mode + "' today='" + scheduler._els.dhx_cal_date[0].innerHTML + "'>";
+
+		if (scheduler._mode == "week_agenda") {
+			var xh = scheduler._els.dhx_cal_data[0].getElementsByTagName("DIV");
+			for (var i = 0; i < xh.length; i++)
+				if (xh[i].className == "dhx_wa_scale_bar")
+					xml += "<column>" + clean_html(xh[i].innerHTML) + "</column>";
+		} else if (scheduler._mode == "agenda" || scheduler._mode == "map") {
+			var xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;
+
+			xml += "<column>" + clean_html(xh[0].innerHTML) + "</column><column>" + clean_html(xh[1].innerHTML) + "</column>";
+		} else if (scheduler._mode == "year") {
+			var xh = scheduler._els.dhx_cal_data[0].childNodes;
+			for (var i = 0; i < xh.length; i++) {
+				xml += "<month label='" + clean_html(xh[i].childNodes[0].innerHTML) + "'>";
+				xml += xml_month_scale(xh[i].childNodes[1].childNodes);
+				xml += xml_month(xh[i].childNodes[2]);
+				xml += "</month>";
+			}
+		} else {
+			xml += "<x>";
+			var xh = scheduler._els.dhx_cal_header[0].childNodes;
+			xml += xml_month_scale(xh);
+			xml += "</x>";
+
+			var yh = scheduler._els.dhx_cal_data[0];
+			if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {
+				xml += "<y>";
+				for (var i = 0; i < yh.firstChild.rows.length; i++) {
+					var el = yh.firstChild.rows[i];
+					xml += "<row><![CDATA[" + clean_html(el.cells[0].innerHTML) + "]]></row>";
+				}
+				xml += "</y>";
+				dy = yh.firstChild.rows[0].cells[0].offsetHeight;
+			} else if (yh.firstChild.tagName == "TABLE") {
+				xml += xml_month(yh);
+			} else {
+				yh = yh.childNodes[yh.childNodes.length - 1];
+				while (yh.className.indexOf("dhx_scale_holder") == -1)
+					yh = yh.previousSibling;
+				yh = yh.childNodes;
+
+				xml += "<y>";
+				for (var i = 0; i < yh.length; i++)
+					xml += "\n<row><![CDATA[" + clean_html(yh[i].innerHTML) + "]]></row>";
+				xml += "</y>";
+				dy = yh[0].offsetHeight;
+			}
+		}
+		xml += "</scale>";
+		return xml;
+	}
+
+	function xml_month(yh) {
+		var xml = "";
+		var r = yh.firstChild.rows;
+		for (var i = 0; i < r.length; i++) {
+			var days = [];
+			for (var j = 0; j < r[i].cells.length; j++)
+				days.push(r[i].cells[j].firstChild.innerHTML);
+
+			xml += "\n<row height='" + yh.firstChild.rows[i].cells[0].offsetHeight + "'><![CDATA[" + clean_html(days.join("|")) + "]]></row>";
+			dy = yh.firstChild.rows[0].cells[0].offsetHeight;
+		}
+		return xml;
+	}
+
+	function xml_month_scale(xh) {
+		var xhs,
+			xml = "";
+		if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {
+			if (scheduler.matrix[scheduler._mode].second_scale)
+				xhs = xh[1].childNodes;
+
+			xh = xh[0].childNodes;
+		}
+
+		for (var i = 0; i < xh.length; i++)
+			xml += "\n<column><![CDATA[" + clean_html(xh[i].innerHTML) + "]]></column>";
+		dx = xh[0].offsetWidth;
+
+		if (xhs) {
+			var width = 0;
+			var top_width = xh[0].offsetWidth;
+			var top_col = 1;
+			for (var i = 0; i < xhs.length; i++) {
+				xml += "\n<column second_scale='" + top_col + "'><![CDATA[" + clean_html(xhs[i].innerHTML) + "]]></column>";
+				width += xhs[i].offsetWidth;
+				if (width >= top_width) {
+					top_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);
+					top_col++;
+				}
+				dx = xhs[0].offsetWidth;
+			}
+		}
+		return xml;
+	}
+
+	function xml_body(colors) {
+		var xml = "";
+		var evs = scheduler._rendered;
+		var matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];
+
+		if (scheduler._mode == "agenda" || scheduler._mode == "map") {
+
+			for (var i = 0; i < evs.length; i++)
+                xml += "<event><head><![CDATA[" + clean_html(evs[i].childNodes[0].innerHTML) + "]]></head><body><![CDATA[" + clean_html(evs[i].childNodes[2].innerHTML) + "]]></body></event>";
+
+		} else if (scheduler._mode == "week_agenda") {
+
+			for (var i = 0; i < evs.length; i++)
+				xml += "<event day='" + evs[i].parentNode.getAttribute("day") + "'><body>" + clean_html(evs[i].innerHTML) + "</body></event>";
+
+		} else if (scheduler._mode == "year") {
+
+			var evs = scheduler.get_visible_events();
+			for (var i = 0; i < evs.length; i++) {
+				var d = evs[i].start_date;
+				if (d.valueOf() < scheduler._min_date.valueOf())
+					d = scheduler._min_date;
+
+				while (d < evs[i].end_date) {
+					var m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;
+					var day = scheduler.week_starts[m] + d.getDate() - 1;
+					var text_color = colors ? get_style(scheduler._get_year_cell(d), "color") : "";
+					var bg_color = colors ? get_style(scheduler._get_year_cell(d), "backgroundColor") : "";
+
+					xml += "<event day='" + (day % 7) + "' week='" + Math.floor(day / 7) + "' month='" + m + "' backgroundColor='" + bg_color + "' color='" + text_color + "'></event>";
+					d = scheduler.date.add(d, 1, "day");
+					if (d.valueOf() >= scheduler._max_date.valueOf())
+						break;
+				}
+			}
+		} else if (matrix && matrix.render == "cell") {
+			var evs = scheduler._els.dhx_cal_data[0].getElementsByTagName("TD");
+			for (var i = 0; i < evs.length; i++) {
+				var text_color = colors ? get_style(evs[i], "color") : "";
+				var bg_color = colors ? get_style(evs[i], "backgroundColor") : "";
+				xml += "\n<event><body backgroundColor='" + bg_color + "' color='" + text_color + "'><![CDATA[" + clean_html(evs[i].innerHTML) + "]]></body></event>";
+			}
+		} else {
+			for (var i = 0; i < evs.length; i++) {
+				var zx, zdx;
+				if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {
+					// logic for timeline view
+					zx = x_norm(evs[i].style.left);
+					zdx = x_norm(evs[i].offsetWidth)-1;
+				} else {
+					// we should use specific logic for day/week/units view
+					var left_norm = scheduler.config.use_select_menu_space ? 0 : 26;
+					zx = x_norm_event(evs[i].style.left, left_norm, true);
+					zdx = x_norm_event(evs[i].style.width, left_norm)-1;
+				}
+				if (isNaN(zdx * 1)) continue;
+				var zy = y_norm(evs[i].style.top);
+				var zdy = y_norm(evs[i].style.height);
+
+				var e_type = evs[i].className.split(" ")[0].replace("dhx_cal_", "");
+				if (e_type === 'dhx_tooltip_line') continue;
+
+				var dets = scheduler.getEvent(evs[i].getAttribute("event_id"));
+                if (!dets) continue;
+				var day = dets._sday;
+				var week = dets._sweek;
+				var length = dets._length || 0;
+
+				if (scheduler._mode == "month") {
+					zdy = parseInt(evs[i].offsetHeight, 10);
+					zy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;
+
+					day = de_day(evs[i], day);
+					week = de_week(evs[i], week);
+				} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {
+					day = 0;
+					var el = evs[i].parentNode.parentNode.parentNode;
+					week = el.rowIndex;
+					var dy_copy = dy;
+					dy = evs[i].parentNode.offsetHeight;
+					zy = y_norm(evs[i].style.top);
+					zy -= zy * 0.2;
+					dy = dy_copy;
+				} else {
+					if (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;
+					var parent = scheduler._els["dhx_cal_data"][0].childNodes[0];
+					var offset = parseFloat(parent.className.indexOf("dhx_scale_holder") != -1 ? parent.style.left : 0);
+					zx += x_norm(evs[i].parentNode.style.left, offset);
+				}
+
+				xml += "\n<event week='" + week + "' day='" + day + "' type='" + e_type + "' x='" + zx + "' y='" + zy + "' width='" + zdx + "' height='" + zdy + "' len='" + length + "'>";
+
+				if (e_type == "event") {
+					xml += "<header><![CDATA[" + clean_html(evs[i].childNodes[1].innerHTML) + "]]></header>";
+					var text_color = colors ? get_style(evs[i].childNodes[2], "color") : "";
+					var bg_color = colors ? get_style(evs[i].childNodes[2], "backgroundColor") : "";
+					xml += "<body backgroundColor='" + bg_color + "' color='" + text_color + "'><![CDATA[" + clean_html(evs[i].childNodes[2].innerHTML) + "]]></body>";
+				} else {
+					var text_color = colors ? get_style(evs[i], "color") : "";
+					var bg_color = colors ? get_style(evs[i], "backgroundColor") : "";
+					xml += "<body backgroundColor='" + bg_color + "' color='" + text_color + "'><![CDATA[" + clean_html(evs[i].innerHTML) + "]]></body>";
+				}
+				xml += "</event>";
+			}
+			}
+
+		return xml;
+	}
+
+	function to_pdf(start, end, view, url, mode, header, footer) {
+		var colors = false;
+		if (mode == "fullcolor") {
+			colors = true;
+			mode = "color";
+		}
+
+		mode = mode || "color";
+
+		var uid = scheduler.uid();
+		var d = document.createElement("div");
+		d.style.display = "none";
+		document.body.appendChild(d);
+
+		d.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>';
+
+
+		var xml = "";
+		if (start) {
+			var original_date = scheduler._date;
+			var original_mode = scheduler._mode;
+			end = scheduler.date[view+"_start"](end);
+			end = scheduler.date["get_"+view+"_end"] ? scheduler.date["get_"+view+"_end"](end) : scheduler.date.add(end, 1, view);
+
+			xml = xml_top("pages", mode, header, footer);
+			for (var temp_date = new Date(start); +temp_date < +end; temp_date = scheduler.date.add(temp_date, 1, view)) {
+				scheduler.setCurrentView(temp_date, view);
+				xml += xml_start("page") + xml_body_header().replace("\u2013", "-") + xml_body(colors) + xml_end("page");
+			}
+			xml += xml_end("pages");
+
+			scheduler.setCurrentView(original_date, original_mode);
+		} else {
+			xml = xml_top("data", mode, header, footer) + xml_body_header().replace("\u2013", "-") + xml_body(colors) + xml_end("data");
+		}
+
+
+		document.getElementById(uid).firstChild.value = encodeURIComponent(xml);
+		document.getElementById(uid).submit();
+		d.parentNode.removeChild(d);
+	}
+
+	scheduler.toPDF = function(url, mode, header, footer) {
+		return to_pdf.apply(this, [null, null, null, url, mode, header, footer]);
+	};
+	scheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {
+		if (typeof start == "string") {
+			start = scheduler.templates.api_date(start);
+			end = scheduler.templates.api_date(end);
+		}
+
+		return to_pdf.apply(this, arguments);
+	};
+})();
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.txt
new file mode 100644
index 0000000000..0cf6c67231
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_pdf.js","sources":["dhtmlxscheduler_pdf.js"],"names":["clean_html","val","replace","newline_regexp","html_regexp","x_norm","x","offset","parseFloat","isNaN","w","colsWidth","width","cols","dx","x_norm_event","is_left","r","header","scheduler","_els","dhx_cal_header","childNodes","els","i","length","el","style","parentNode","y_norm","y","dy","get_style","node","window","getComputedStyle","currentStyle","de_day","n","parseInt","left","_cols","de_week","top","_colsS","heights","xml_start","tag","xml_end","xml_top","profile","footer","xml","xml_body_header","mode","_mode","matrix","render","dhx_cal_date","innerHTML","xh","dhx_cal_data","getElementsByTagName","className","xml_month_scale","xml_month","yh","firstChild","rows","cells","offsetHeight","tagName","indexOf","previousSibling","days","j","push","join","xhs","second_scale","offsetWidth","top_width","top_col","xml_body","colors","evs","_rendered","getAttribute","get_visible_events","d","start_date","valueOf","_min_date","end_date","m","getMonth","getFullYear","week_starts","_month","day","getDate","text_color","_get_year_cell","bg_color","Math","floor","date","add","_max_date","zx","zdx","left_norm","config","use_select_menu_space","zy","zdy","height","e_type","split","dets","getEvent","_sday","week","_sweek","_length","xy","month_head_height","rowIndex","dy_copy","parent","to_pdf","start","end","view","url","uid","document","createElement","display","body","appendChild","original_date","_date","original_mode","temp_date","Date","setCurrentView","getElementById","value","encodeURIComponent","submit","removeChild","RegExp","toPDF","apply","this","toPDFRange","templates","api_date","arguments"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.xml
new file mode 100644
index 0000000000..182d2692bf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_pdf.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.xml
new file mode 100644
index 0000000000..fec6f4e546
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_pdf.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_pdf.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.js
new file mode 100644
index 0000000000..1390c086e8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.js
@@ -0,0 +1,200 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.icons_select = ["icon_details", "icon_delete"];
+scheduler.config.details_on_create = true;
+scheduler.config.show_quick_info = true;
+scheduler.xy.menu_width = 0;
+
+scheduler.attachEvent("onClick", function(id){
+	scheduler.showQuickInfo(id);
+	return true;
+});
+
+(function(){
+	var events = ["onEmptyClick", "onViewChange", "onLightbox", "onBeforeEventDelete", "onBeforeDrag"];
+	var hiding_function = function(){
+		scheduler._hideQuickInfo();
+		return true;
+	};
+	for (var i=0; i<events.length; i++)
+		scheduler.attachEvent(events[i], hiding_function);
+})();
+
+scheduler.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };
+scheduler.templates.quick_info_content = function(start, end, ev){ return ev.details || ev.text; };
+scheduler.templates.quick_info_date = function(start, end, ev){
+	if (scheduler.isOneDayEvent(ev))
+		return scheduler.templates.day_date(start, end, ev) + " " +scheduler.templates.event_header(start, end, ev);
+	else
+		return scheduler.templates.week_date(start, end, ev);
+};
+
+scheduler.showQuickInfo = function(id){
+	if (id == this._quick_info_box_id || !this.config.show_quick_info) return;
+	this.hideQuickInfo(true);
+
+	var pos = this._get_event_counter_part(id);
+	
+	if (pos){
+		this._quick_info_box = this._init_quick_info(pos);
+		this._fill_quick_data(id);
+		this._show_quick_info(pos);
+	}
+};
+scheduler._hideQuickInfo = function(){
+	scheduler.hideQuickInfo();
+};
+scheduler.hideQuickInfo = function(forced){
+	var qi = this._quick_info_box;
+	this._quick_info_box_id = 0;
+
+	if (qi && qi.parentNode){
+		var width = qi._offsetWidth;
+		if (scheduler.config.quick_info_detached)
+			return qi.parentNode.removeChild(qi);
+
+		if (qi.style.right == "auto")
+			qi.style.left = -width + "px";
+		else
+			qi.style.right = -width + "px";
+
+		if (forced)
+			qi.parentNode.removeChild(qi);
+	}
+};
+dhtmlxEvent(window, "keydown", function(e){
+	if (e.keyCode == 27)
+		scheduler.hideQuickInfo();
+});
+
+scheduler._show_quick_info = function(pos){
+	var qi = scheduler._quick_info_box;
+	scheduler._obj.appendChild(qi);
+	var width = qi.offsetWidth;
+	var height = qi.offsetHeight;
+
+	if (scheduler.config.quick_info_detached){
+		qi.style.left = pos.left - pos.dx*(width - pos.width) + "px";
+		qi.style.top = pos.top - (pos.dy?height:-pos.height) + "px";
+	} else {
+		qi.style.top = this.xy.scale_height+this.xy.nav_height + 20 + "px";
+		if (pos.dx == 1){
+			qi.style.right = "auto";
+			qi.style.left = -width + "px";
+			
+			setTimeout(function(){
+				qi.style.left = "-10px";
+			},1);
+		} else {
+			qi.style.left = "auto";
+			qi.style.right = -width + "px";
+			
+			setTimeout(function(){
+				qi.style.right = "-10px";
+			},1);
+		}
+		qi.className = qi.className.replace("dhx_qi_left","").replace("dhx_qi_right","")+" dhx_qi_"+(pos==1?"left":"right");
+	}
+};
+scheduler.attachEvent("onTemplatesReady", function(){
+	scheduler.hideQuickInfo();
+	if(this._quick_info_box){
+		var box = this._quick_info_box;
+		if(box.parentNode){
+			box.parentNode.removeChild(box);
+		}
+		this._quick_info_box = null;
+	}
+});
+scheduler._quick_info_onscroll_handler = function(e){
+	scheduler.hideQuickInfo();
+};
+scheduler._init_quick_info = function(){
+	if (!this._quick_info_box){
+		var sizes = scheduler.xy;
+
+		var qi = this._quick_info_box = document.createElement("div");
+		qi.className = "dhx_cal_quick_info";
+		if (scheduler.$testmode)
+			qi.className += " dhx_no_animate";
+	//title
+		var html = "<div class=\"dhx_cal_qi_title\" style=\"height:"+sizes.quick_info_title+"px\">" +
+			"<div class=\"dhx_cal_qi_tcontent\"></div><div  class=\"dhx_cal_qi_tdate\"></div>" +
+			"</div>" +
+			"<div class=\"dhx_cal_qi_content\"></div>";
+
+	//buttons
+		html += "<div class=\"dhx_cal_qi_controls\" style=\"height:"+sizes.quick_info_buttons+"px\">";
+		var buttons = scheduler.config.icons_select;
+		for (var i = 0; i < buttons.length; i++)
+			html += "<div class=\"dhx_qi_big_icon "+buttons[i]+"\" title=\""+scheduler.locale.labels[buttons[i]]+"\"><div class='dhx_menu_icon " + buttons[i] + "'></div><div>"+scheduler.locale.labels[buttons[i]]+"</div></div>";
+		html += "</div>";
+
+		qi.innerHTML = html;
+		dhtmlxEvent(qi, "click", function(ev){
+			ev = ev || event;
+			scheduler._qi_button_click(ev.target || ev.srcElement);
+		});
+		if (scheduler.config.quick_info_detached){
+			scheduler._detachDomEvent(scheduler._els["dhx_cal_data"][0], "scroll", scheduler._quick_info_onscroll_handler);
+			dhtmlxEvent(scheduler._els["dhx_cal_data"][0], "scroll", scheduler._quick_info_onscroll_handler);
+		}
+	}
+
+	return this._quick_info_box;
+};
+
+scheduler._qi_button_click = function(node){
+	var box = scheduler._quick_info_box;
+	if (!node || node == box) return;
+
+	var mask = node.className;
+	if (mask.indexOf("_icon")!=-1){
+		var id = scheduler._quick_info_box_id;
+		scheduler._click.buttons[mask.split(" ")[1].replace("icon_","")](id);
+	} else
+		scheduler._qi_button_click(node.parentNode);
+};
+scheduler._get_event_counter_part = function(id){
+	var domEv = scheduler.getRenderedEvent(id);
+	var left = 0;
+	var top = 0;
+
+	var node = domEv;
+	while (node && node != scheduler._obj){
+		left += node.offsetLeft;
+		top += node.offsetTop-node.scrollTop;
+		node = node.offsetParent;
+	}
+	if(node){
+		var dx = (left + domEv.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;
+		var dy = (top + domEv.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;
+
+		return { left:left, top:top, dx:dx, dy:dy,
+			width:domEv.offsetWidth, height:domEv.offsetHeight };
+	}
+	return 0;
+};
+
+scheduler._fill_quick_data  = function(id){
+	var ev = scheduler.getEvent(id);
+	var qi = scheduler._quick_info_box;
+
+	scheduler._quick_info_box_id = id;
+
+//title content
+	var titleContent = qi.firstChild.firstChild;
+	titleContent.innerHTML = scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev);
+	var titleDate = titleContent.nextSibling;
+	titleDate.innerHTML = scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev);
+
+//main content
+	var main = qi.firstChild.nextSibling;
+	main.innerHTML = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);
+};
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.txt
new file mode 100644
index 0000000000..c316de0e41
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_quick_info.js","sources":["dhtmlxscheduler_quick_info.js"],"names":["scheduler","config","icons_select","details_on_create","show_quick_info","xy","menu_width","attachEvent","id","showQuickInfo","events","hiding_function","_hideQuickInfo","i","length","templates","quick_info_title","start","end","ev","text","substr","quick_info_content","details","quick_info_date","isOneDayEvent","day_date","event_header","week_date","this","_quick_info_box_id","hideQuickInfo","pos","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","forced","qi","parentNode","width","_offsetWidth","quick_info_detached","removeChild","style","right","left","dhtmlxEvent","window","e","keyCode","_obj","appendChild","offsetWidth","height","offsetHeight","dx","top","dy","scale_height","nav_height","setTimeout","className","replace","box","_quick_info_onscroll_handler","sizes","document","createElement","$testmode","html","quick_info_buttons","buttons","locale","labels","innerHTML","event","_qi_button_click","target","srcElement","_detachDomEvent","_els","node","mask","indexOf","_click","split","domEv","getRenderedEvent","offsetLeft","offsetTop","scrollTop","offsetParent","_x","_y","getEvent","titleContent","firstChild","start_date","end_date","titleDate","nextSibling","main"],"mappings":";;;;;;;;AAQAA,UAAUC,OAAOC,cAAgB,eAAgB,eACjDF,UAAUC,OAAOE,mBAAoB,EACrCH,UAAUC,OAAOG,iBAAkB,EACnCJ,UAAUK,GAAGC,WAAa,EAE1BN,UAAUO,YAAY,UAAW,SAASC,GAEzC,MADAR,WAAUS,cAAcD,IACjB,IAGR,WAMC,IAAK,GALDE,IAAU,eAAgB,eAAgB,aAAc,sBAAuB,gBAC/EC,EAAkB,WAErB,MADAX,WAAUY,kBACH,GAECC,EAAE,EAAGA,EAAEH,EAAOI,OAAQD,IAC9Bb,UAAUO,YAAYG,EAAOG,GAAIF,MAGnCX,UAAUe,UAAUC,iBAAmB,SAASC,EAAOC,EAAKC;AAAK,MAAOA,GAAGC,KAAKC,OAAO,EAAE,KACzFrB,UAAUe,UAAUO,mBAAqB,SAASL,EAAOC,EAAKC,GAAK,MAAOA,GAAGI,SAAWJ,EAAGC,MAC3FpB,UAAUe,UAAUS,gBAAkB,SAASP,EAAOC,EAAKC,GAC1D,MAAInB,WAAUyB,cAAcN,GACpBnB,UAAUe,UAAUW,SAAST,EAAOC,EAAKC,GAAM,IAAKnB,UAAUe,UAAUY,aAAaV,EAAOC,EAAKC,GAEjGnB,UAAUe,UAAUa,UAAUX,EAAOC,EAAKC,IAGnDnB,UAAUS,cAAgB,SAASD,GAClC,GAAIA,GAAMqB,KAAKC,oBAAuBD,KAAK5B,OAAOG,gBAAlD,CACAyB,KAAKE,eAAc,EAEnB,IAAIC,GAAMH,KAAKI,wBAAwBzB,EAEnCwB,KACHH,KAAKK,gBAAkBL,KAAKM,iBAAiBH;AAC7CH,KAAKO,iBAAiB5B,GACtBqB,KAAKQ,iBAAiBL,MAGxBhC,UAAUY,eAAiB,WAC1BZ,UAAU+B,iBAEX/B,UAAU+B,cAAgB,SAASO,GAClC,GAAIC,GAAKV,KAAKK,eAGd,IAFAL,KAAKC,mBAAqB,EAEtBS,GAAMA,EAAGC,WAAW,CACvB,GAAIC,GAAQF,EAAGG,YACf,IAAI1C,UAAUC,OAAO0C,oBACpB,MAAOJ,GAAGC,WAAWI,YAAYL,EAEZ,SAAlBA,EAAGM,MAAMC,MACZP,EAAGM,MAAME,MAAQN,EAAQ,KAEzBF,EAAGM,MAAMC,OAASL,EAAQ,KAEvBH,GACHC,EAAGC,WAAWI,YAAYL,KAG7BS,YAAYC,OAAQ,UAAW,SAASC,GACtB,IAAbA,EAAEC,SACLnD,UAAU+B;AAGZ/B,UAAUqC,iBAAmB,SAASL,GACrC,GAAIO,GAAKvC,UAAUkC,eACnBlC,WAAUoD,KAAKC,YAAYd,EAC3B,IAAIE,GAAQF,EAAGe,YACXC,EAAShB,EAAGiB,YAEZxD,WAAUC,OAAO0C,qBACpBJ,EAAGM,MAAME,KAAOf,EAAIe,KAAOf,EAAIyB,IAAIhB,EAAQT,EAAIS,OAAS,KACxDF,EAAGM,MAAMa,IAAM1B,EAAI0B,KAAO1B,EAAI2B,GAAGJ,GAAQvB,EAAIuB,QAAU,OAEvDhB,EAAGM,MAAMa,IAAM7B,KAAKxB,GAAGuD,aAAa/B,KAAKxB,GAAGwD,WAAa,GAAK,KAChD,GAAV7B,EAAIyB,IACPlB,EAAGM,MAAMC,MAAQ,OACjBP,EAAGM,MAAME,MAAQN,EAAQ,KAEzBqB,WAAW,WACVvB,EAAGM,MAAME,KAAO,SACf,KAEFR,EAAGM,MAAME,KAAO,OAChBR,EAAGM,MAAMC,OAASL,EAAQ,KAE1BqB,WAAW,WACVvB,EAAGM,MAAMC,MAAQ;;EAChB,IAEHP,EAAGwB,UAAYxB,EAAGwB,UAAUC,QAAQ,cAAc,IAAIA,QAAQ,eAAe,IAAI,YAAiB,GAALhC,EAAO,OAAO,WAG7GhC,UAAUO,YAAY,mBAAoB,WAEzC,GADAP,UAAU+B,gBACPF,KAAKK,gBAAgB,CACvB,GAAI+B,GAAMpC,KAAKK,eACZ+B,GAAIzB,YACNyB,EAAIzB,WAAWI,YAAYqB,GAE5BpC,KAAKK,gBAAkB,QAGzBlC,UAAUkE,6BAA+B,SAAShB,GACjDlD,UAAU+B,iBAEX/B,UAAUmC,iBAAmB,WAC5B,IAAKN,KAAKK,gBAAgB,CACzB,GAAIiC,GAAQnE,UAAUK,GAElBkC,EAAKV,KAAKK,gBAAkBkC,SAASC,cAAc;;AACvD9B,EAAGwB,UAAY,qBACX/D,UAAUsE,YACb/B,EAAGwB,WAAa,kBAEjB,IAAIQ,GAAO,+CAAkDJ,EAAMnD,iBAAiB,8HAMpFuD,IAAQ,kDAAqDJ,EAAMK,mBAAmB,MAEtF,KAAK,GADDC,GAAUzE,UAAUC,OAAOC,aACtBW,EAAI,EAAGA,EAAI4D,EAAQ3D,OAAQD,IACnC0D,GAAQ,+BAAgCE,EAAQ5D,GAAG,YAAcb,UAAU0E,OAAOC,OAAOF,EAAQ5D,IAAI,gCAAkC4D,EAAQ5D,GAAK,gBAAgBb,UAAU0E,OAAOC,OAAOF,EAAQ5D,IAAI;;AACzM0D,GAAQ,SAERhC,EAAGqC,UAAYL,EACfvB,YAAYT,EAAI,QAAS,SAASpB,GACjCA,EAAKA,GAAM0D,MACX7E,UAAU8E,iBAAiB3D,EAAG4D,QAAU5D,EAAG6D,cAExChF,UAAUC,OAAO0C,sBACpB3C,UAAUiF,gBAAgBjF,UAAUkF,KAAmB,aAAE,GAAI,SAAUlF,UAAUkE,8BACjFlB,YAAYhD,UAAUkF,KAAmB,aAAE,GAAI,SAAUlF,UAAUkE,+BAIrE,MAAOrC,MAAKK,iBAGblC,UAAU8E,iBAAmB,SAASK,GACrC,GAAIlB,GAAMjE,UAAUkC,eACpB,IAAKiD,GAAQA,GAAQlB,EAArB,CAEA,GAAImB,GAAOD,EAAKpB,SAChB,IAA2B,IAAvBqB,EAAKC,QAAQ,SAAa;AAC7B,GAAI7E,GAAKR,UAAU8B,kBACnB9B,WAAUsF,OAAOb,QAAQW,EAAKG,MAAM,KAAK,GAAGvB,QAAQ,QAAQ,KAAKxD,OAEjER,WAAU8E,iBAAiBK,EAAK3C,cAElCxC,UAAUiC,wBAA0B,SAASzB,GAM5C,IALA,GAAIgF,GAAQxF,UAAUyF,iBAAiBjF,GACnCuC,EAAO,EACPW,EAAM,EAENyB,EAAOK,EACJL,GAAQA,GAAQnF,UAAUoD,MAChCL,GAAQoC,EAAKO,WACbhC,GAAOyB,EAAKQ,UAAUR,EAAKS,UAC3BT,EAAOA,EAAKU,YAEb,IAAGV,EAAK,CACP,GAAI1B,GAAMV,EAAOyC,EAAMlC,YAAY,EAAMtD,UAAU8F,GAAG,EAAK,EAAI,EAC3DnC,EAAMD,EAAM8B,EAAMhC,aAAa,EAAMxD,UAAU+F,GAAG,EAAK,EAAI,CAE/D,QAAShD,KAAKA,EAAMW,IAAIA,EAAKD,GAAGA,EAAIE,GAAGA,EACtClB,MAAM+C,EAAMlC,YAAaC,OAAOiC,EAAMhC,cAExC,MAAO,IAGRxD,UAAUoC,iBAAoB,SAAS5B;AACtC,GAAIW,GAAKnB,UAAUgG,SAASxF,GACxB+B,EAAKvC,UAAUkC,eAEnBlC,WAAU8B,mBAAqBtB,CAG/B,IAAIyF,GAAe1D,EAAG2D,WAAWA,UACjCD,GAAarB,UAAY5E,UAAUe,UAAUC,iBAAiBG,EAAGgF,WAAYhF,EAAGiF,SAAUjF,EAC1F,IAAIkF,GAAYJ,EAAaK,WAC7BD,GAAUzB,UAAY5E,UAAUe,UAAUS,gBAAgBL,EAAGgF,WAAYhF,EAAGiF,SAAUjF,EAGtF,IAAIoF,GAAOhE,EAAG2D,WAAWI,WACzBC,GAAK3B,UAAY5E,UAAUe,UAAUO,mBAAmBH,EAAGgF,WAAYhF,EAAGiF,SAAUjF"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.xml
new file mode 100644
index 0000000000..d0da576546
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_quick_info.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.xml
new file mode 100644
index 0000000000..427d8d8b0d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_quick_info.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_quick_info.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.js
new file mode 100644
index 0000000000..22d24ed400
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.js
@@ -0,0 +1,161 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onTemplatesReady", function() {
+	var original_sns = scheduler.config.lightbox.sections.slice();
+	var original_left_buttons = scheduler.config.buttons_left.slice();
+	var original_right_buttons = scheduler.config.buttons_right.slice();
+
+
+	scheduler.attachEvent("onBeforeLightbox", function(id) {
+		if (this.config.readonly_form || this.getEvent(id).readonly) {
+			this.config.readonly_active = true;
+
+			for (var i = 0; i < this.config.lightbox.sections.length; i++) {
+				this.config.lightbox.sections[i].focus = false;
+			}
+		}
+		else {
+			this.config.readonly_active = false;
+			scheduler.config.lightbox.sections = original_sns.slice(); // restore original list of sections including recurring
+			scheduler.config.buttons_left = original_left_buttons.slice();
+			scheduler.config.buttons_right = original_right_buttons.slice();
+		}
+
+		var sns = this.config.lightbox.sections;
+		if (this.config.readonly_active) {
+			for (var i = 0; i < sns.length; i++) {
+				if (sns[i].type == 'recurring') {
+					if (this.config.readonly_active) {
+						sns.splice(i, 1);
+					}
+					break;
+				}
+			}
+
+			var forbidden_buttons = ["dhx_delete_btn", "dhx_save_btn"];
+			var button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];
+			for (var i = 0; i < forbidden_buttons.length; i++) {
+				var forbidden_button = forbidden_buttons[i];
+				for (var k = 0; k < button_arrays.length; k++) {
+					var button_array = button_arrays[k];
+					var index = -1;
+					for (var p = 0; p < button_array.length; p++) {
+						if (button_array[p] == forbidden_button) {
+							index = p;
+							break;
+						}
+					}
+					if (index != -1) {
+						button_array.splice(index, 1);
+					}
+				}
+			}
+
+
+		}
+
+		this.resetLightbox();
+
+		return true;
+	});
+
+	function txt_replace(tag, d, n, text) {
+		var txts = d.getElementsByTagName(tag);
+		var txtt = n.getElementsByTagName(tag);
+		for (var i = txtt.length - 1; i >= 0; i--) {
+			var n = txtt[i];
+			if (!text){
+				n.disabled = true;
+				//radio and checkboxes loses state after .cloneNode in IE
+				if(d.checked)
+					n.checked = true;
+			}else {
+				var t = document.createElement("SPAN");
+				t.className = "dhx_text_disabled";
+				t.innerHTML = text(txts[i]);
+				n.parentNode.insertBefore(t, n);
+				n.parentNode.removeChild(n);
+			}
+		}
+	}
+
+	var old = scheduler._fill_lightbox;
+	scheduler._fill_lightbox = function() {
+
+		var lb = this.getLightbox();
+		if (this.config.readonly_active) {
+			lb.style.visibility = 'hidden';
+			// lightbox should have actual sizes before rendering controls
+			// currently only matters for dhtmlxCombo
+			lb.style.display = 'block';
+		}
+		var res = old.apply(this, arguments);
+		if (this.config.readonly_active) {
+			//reset visibility and display
+			lb.style.visibility = '';
+			lb.style.display = 'none';
+		}
+
+		if (this.config.readonly_active) {
+
+			var d = this.getLightbox();
+			var n = this._lightbox_r = d.cloneNode(true);
+			n.id = scheduler.uid();
+
+			txt_replace("textarea", d, n, function(a) {
+				return a.value;
+			});
+			txt_replace("input", d, n, false);
+			txt_replace("select", d, n, function(a) {
+				if(!a.options.length) return "";
+				return a.options[Math.max((a.selectedIndex || 0), 0)].text;
+			});
+
+			d.parentNode.insertBefore(n, d);
+
+			olds.call(this, n);
+			if (scheduler._lightbox)
+				scheduler._lightbox.parentNode.removeChild(scheduler._lightbox);
+			this._lightbox = n;
+
+			if (scheduler.config.drag_lightbox)
+				n.firstChild.onmousedown = scheduler._ready_to_dnd;
+			this.setLightboxSize();
+			n.onclick = function(e) {
+				var src = e ? e.target : event.srcElement;
+				if (!src.className) src = src.previousSibling;
+				if (src && src.className)
+					switch (src.className) {
+						case "dhx_cancel_btn":
+							scheduler.callEvent("onEventCancel", [scheduler._lightbox_id]);
+							scheduler._edit_stop_event(scheduler.getEvent(scheduler._lightbox_id), false);
+							scheduler.hide_lightbox();
+							break;
+					}
+			};
+		}
+		return res;
+	};
+
+	var olds = scheduler.showCover;
+	scheduler.showCover = function() {
+		if (!this.config.readonly_active)
+			olds.apply(this, arguments);
+	};
+
+	var hold = scheduler.hide_lightbox;
+	scheduler.hide_lightbox = function() {
+		if (this._lightbox_r) {
+			this._lightbox_r.parentNode.removeChild(this._lightbox_r);
+			this._lightbox_r = this._lightbox = null;
+		}
+
+		return hold.apply(this, arguments);
+	};
+});
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.txt
new file mode 100644
index 0000000000..5c1dac0db8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_readonly.js","sources":["dhtmlxscheduler_readonly.js"],"names":["scheduler","attachEvent","txt_replace","tag","d","n","text","txts","getElementsByTagName","txtt","i","length","t","document","createElement","className","innerHTML","parentNode","insertBefore","removeChild","disabled","checked","original_sns","config","lightbox","sections","slice","original_left_buttons","buttons_left","original_right_buttons","buttons_right","id","this","readonly_form","getEvent","readonly","readonly_active","focus","sns","type","splice","forbidden_buttons","button_arrays","forbidden_button","k","button_array","index","p","resetLightbox","old","_fill_lightbox","lb","getLightbox","style","visibility","display","res","apply","arguments","_lightbox_r","cloneNode","uid","a","value","options","Math","max","selectedIndex","olds","call","_lightbox","drag_lightbox","firstChild","onmousedown","_ready_to_dnd","setLightboxSize","onclick","e","src","target","event","srcElement","previousSibling","callEvent","_lightbox_id","_edit_stop_event","hide_lightbox","showCover","hold"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.xml
new file mode 100644
index 0000000000..bfa841452f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_readonly.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.xml
new file mode 100644
index 0000000000..14942e54eb
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_readonly.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_readonly.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.js
new file mode 100644
index 0000000000..1b4c2abff6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.js
@@ -0,0 +1,1041 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.occurrence_timestamp_in_utc = false;
+scheduler.config.recurring_workdays = [1,2,3,4,5];
+scheduler.form_blocks["recurring"] = {
+	_get_node : function(node){
+		if (typeof node == "string")
+			node = document.getElementById(node);
+		if (node.style.display == 'none')
+			node.style.display = "";
+		return node;
+	},
+	_outer_html: function(node){
+		return node.outerHTML || getOuterHTML(node);
+
+		//probably not needed, FF v10- only
+		function getOuterHTML(n){
+			var div = document.createElement('div'), h;
+			div.appendChild( n.cloneNode(true) );
+			h = div.innerHTML;
+			div = null;
+			return h;
+		}
+	},
+	render:function(sns) {
+		if(sns.form){
+			var rec = scheduler.form_blocks["recurring"];
+			var form = rec._get_node(sns.form);
+			var html = rec._outer_html(form);
+			form.style.display = 'none';
+			return html;
+		}
+
+		return scheduler.__recurring_template;
+
+	},
+	_ds: {},
+	_get_form_node: function(els, name, value){
+		var col = els[name];
+		if(!col) return null;
+		if(col.nodeName) return col;
+
+		if(col.length){
+			for(var i=0; i < col.length; i++){
+				if(col[i].value == value)
+					return col[i];
+			}
+		}
+	},
+	_get_node_value: function(els, name, multiselect){
+		var col = els[name];
+		if(!col) return "";
+		if(col.length){
+			if(multiselect){
+				var res = [];
+				for (var i = 0; i < col.length; i++)
+					if (col[i].checked) res.push(col[i].value);
+
+				return res;
+			}else{
+				for (var i = 0; i < col.length; i++)
+					if (col[i].checked) return col[i].value;
+			}
+		}
+
+		if(col.value)
+			return !multiselect ? col.value : [col.value];
+	},
+
+	_set_node_value: function(els, name, value){
+		var col = els[name];
+		if(!col) return;
+
+		if(col.name == name){
+			col.value = value;
+		}else if(col.length){
+			var hash_value = typeof value == "object";
+			for (var i = 0; i < col.length; i++)
+				if (hash_value || col[i].value == value){
+					col[i].checked = hash_value ? !!value[col[i].value] : !!value;
+				}
+		}
+	},
+
+	_init_set_value:function(node, value, ev) {
+		var block = scheduler.form_blocks["recurring"];
+		var get_value = block._get_node_value;
+		var set_value = block._set_node_value;
+		scheduler.form_blocks["recurring"]._ds = {start:ev.start_date, end:ev._end_date};
+
+		var str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date);
+		var str_date = function(str_date) {
+			var date = str_date_format(str_date);
+			if (scheduler.config.include_end_by)
+				date = scheduler.date.add(date, 1, 'day');
+			return date;
+		};
+
+		var date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);
+
+		var top = node.getElementsByTagName("FORM")[0];
+		var els = {};
+
+		function register_els(inps) {
+			for (var i = 0; i < inps.length; i++) {
+				var inp = inps[i];
+
+				if(inp.name){
+					if(!els[inp.name]){
+						els[inp.name] = inp;
+					}else if(els[inp.name].nodeType){
+						var node = els[inp.name];
+						els[inp.name] = [node, inp];
+
+					}else{
+						els[inp.name].push(inp);
+					}
+
+				}
+			}
+		}
+
+		register_els(top.getElementsByTagName("INPUT"));
+		register_els(top.getElementsByTagName("SELECT"));
+
+		if (!scheduler.config.repeat_date_of_end) {
+			var formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);
+			scheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, "day"));
+		}
+		set_value(els, "date_of_end", scheduler.config.repeat_date_of_end);
+
+		var $ = function(a) {
+			return document.getElementById(a) || { style:{} };//return fake object if node not found
+		};
+
+		function change_current_view() {
+			$("dhx_repeat_day").style.display = "none";
+			$("dhx_repeat_week").style.display = "none";
+			$("dhx_repeat_month").style.display = "none";
+			$("dhx_repeat_year").style.display = "none";
+			$("dhx_repeat_" + this.value).style.display = "block";
+			scheduler.setLightboxSize();
+		}
+
+		function get_repeat_code(dates) {
+			var code = [get_value(els, "repeat")];
+			get_rcode[code[0]](code, dates);
+
+			while (code.length < 5) code.push("");
+			var repeat = "";
+
+			var end = get_end_rule(els);
+
+			if (end == "no") {
+				dates.end = new Date(9999, 1, 1);
+				repeat = "no";
+			}
+			else if (end == "date_of_end") {
+				dates.end = str_date(get_value(els, "date_of_end"));
+			}
+			else {
+				scheduler.transpose_type(code.join("_"));
+				repeat = Math.max(1, get_value(els, "occurences_count"));
+
+				var transp = 0;
+
+				//var transp = ((code[0] == "week" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);
+
+				// which is equal to following code, seems to produce extra instance, not clear why needed
+
+				/*if(code[0] == "week"){
+					var days = code[4] || "";
+					if(scheduler.config.start_on_monday){
+						if(days.indexOf(1) == -1)
+						transp = 1;
+					}else{
+						if(days.indexOf(0) == -1)
+						transp = 1;
+					}
+				}*/
+
+				dates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join("_"));
+			}
+
+			return code.join("_") + "#" + repeat;
+		}
+		function get_end_rule(els){
+			var end = els["end"];
+			if(end.length){
+				for(var i =0; i < end.length; i++){
+					if(end[i].checked){
+						if(end[i].value && end[i].value != "on"){//seems to be default value:var input = document.createElement("input"); input.type = "radio"; input.value
+							return end[i].value;
+						}else{
+							if(!i){
+								return "no";
+							}else if(i == 2){
+								return "date_of_end";
+							}else{
+								return "occurences_count";
+							}
+						}
+					}
+				}
+			}else{
+				if(end.value)
+					return end.value;
+			}
+			return "no";
+		}
+		function set_end_rule(els, value){
+			var end = els["end"];
+
+			if(end.length){
+				var has_values = !!end[0].value && end[0].value != "on";
+				if(has_values){
+					for(var i =0; i < end.length; i++){
+						if(end[i].value == value)
+							end[i].checked = true;
+					}
+				}else{
+					var ind = 0;
+					switch(value){
+						case "no":
+							ind = 0;
+							break;
+						case "date_of_end":
+							ind = 2;
+							break;
+						default:
+							ind = 1;
+							break;
+					}
+					end[ind].checked = true;
+				}
+			}else{
+				end.value = value;
+			}
+		}
+
+
+		scheduler.form_blocks["recurring"]._get_repeat_code = get_repeat_code;
+		var get_rcode = {
+			month:function(code, dates) {
+				var get_value = scheduler.form_blocks["recurring"]._get_node_value;
+				if (get_value(els, "month_type") == "d") {
+					code.push(Math.max(1, get_value(els, "month_count")));
+					dates.start.setDate(get_value(els, "month_day"));
+				} else {
+					code.push(Math.max(1, get_value(els, "month_count2")));
+					code.push( get_value(els, "month_day2"));
+					code.push(Math.max(1, get_value(els, "month_week2")));
+					if (!scheduler.config.repeat_precise){
+						dates.start.setDate(1);
+					}
+				}
+				dates._start = true;
+			},
+			week:function(code, dates) {
+				var get_value = scheduler.form_blocks["recurring"]._get_node_value;
+
+				code.push(Math.max(1, get_value(els, "week_count")));
+				code.push("");
+				code.push("");
+				var t = [];
+
+				var col = get_value(els, "week_day", true);
+				//var col = els["week_day"];
+				var day = dates.start.getDay();
+				var start_exists = false;
+
+				for (var i = 0; i < col.length; i++){
+					t.push(col[i]);
+					start_exists = start_exists || col[i] == day;
+				}
+				if (!t.length){
+					t.push(day);
+					start_exists = true;
+				}
+				t.sort();
+
+
+				if (!scheduler.config.repeat_precise){
+					dates.start = scheduler.date.week_start(dates.start);
+					dates._start = true;
+				} else if (!start_exists){
+					scheduler.transpose_day_week(dates.start, t, 1, 7);
+					dates._start = true;
+				}
+
+				code.push(t.join(","));
+			},
+			day:function(code) {
+				var get_value = scheduler.form_blocks["recurring"]._get_node_value;
+
+				if (get_value(els, "day_type") == "d") {
+					code.push(Math.max(1, get_value(els, "day_count")));
+				}
+				else {
+					code.push("week");
+					code.push(1);
+					code.push("");
+					code.push("");
+					code.push(scheduler.config.recurring_workdays.join(","));
+					code.splice(0, 1);
+				}
+			},
+			year:function(code, dates) {
+				var get_value = scheduler.form_blocks["recurring"]._get_node_value;
+
+				if (get_value(els, "year_type") == "d") {
+					code.push("1");
+					dates.start.setMonth(0);
+					dates.start.setDate(get_value(els, "year_day"));
+					dates.start.setMonth(get_value(els, "year_month"));
+
+				} else {
+					code.push("1");
+					code.push(get_value(els, "year_day2"));
+					code.push(get_value(els, "year_week2"));
+					dates.start.setDate(1);
+					dates.start.setMonth(get_value(els, "year_month2"));
+				}
+				dates._start = true;
+			}
+		};
+		var set_rcode = {
+			week:function(code, dates) {
+				var set_value = scheduler.form_blocks["recurring"]._set_node_value;
+				set_value(els, "week_count", code[1]);
+
+				var t = code[4].split(",");
+				var d = {};
+				for (var i = 0; i < t.length; i++) d[t[i]] = true;
+
+				set_value(els, "week_day", d);
+
+				//for (var i = 0; i < col.length; i++)
+				//	col[i].checked = (!!d[col[i].value]);
+			},
+			month:function(code, dates) {
+				var set_value = scheduler.form_blocks["recurring"]._set_node_value;
+
+				if (code[2] === "") {
+					set_value(els, "month_type", "d");
+					set_value(els, "month_count", code[1]);
+					set_value(els, "month_day", dates.start.getDate());
+				} else {
+					set_value(els, "month_type", "w");
+					set_value(els, "month_count2", code[1]);
+					set_value(els, "month_week2",  code[3]);
+					set_value(els, "month_day2", code[2]);
+				}
+			},
+			day:function(code, dates) {
+				var set_value = scheduler.form_blocks["recurring"]._set_node_value;
+				set_value(els, "day_type", "d");
+				set_value(els, "day_count", code[1]);
+			},
+			year:function(code, dates) {
+				var set_value = scheduler.form_blocks["recurring"]._set_node_value;
+
+				if (code[2] === "") {
+					set_value(els, "year_type", "d");
+					set_value(els, "year_day", dates.start.getDate());
+					set_value(els, "year_month", dates.start.getMonth());
+
+				} else {
+					set_value(els, "year_type", "w");
+					set_value(els, "year_week2", code[3]);
+					set_value(els, "year_day2", code[2]);
+					set_value(els, "year_month2", dates.start.getMonth());
+				}
+			}
+		};
+
+		function set_repeat_code(code, dates) {
+			var set_value = scheduler.form_blocks["recurring"]._set_node_value;
+			var data = code.split("#");
+			code = data[0].split("_");
+			set_rcode[code[0]](code, dates);
+
+
+			switch (data[1]) {
+				case "no":
+					set_end_rule(els, "no");
+					break;
+				case "":
+					set_end_rule(els, "date_of_end");
+
+					var end_date = dates.end;
+					if (scheduler.config.include_end_by){
+						end_date = scheduler.date.add(end_date, -1, 'day');
+					}
+					set_value(els, "date_of_end", date_str(end_date));
+
+					break;
+				default:
+					set_end_rule(els, "occurences_count");
+					set_value(els, "occurences_count", data[1]);
+
+					break;
+			}
+
+			set_value(els, "repeat", code[0]);
+			//e.checked = true;
+
+			var node = scheduler.form_blocks["recurring"]._get_form_node(els, "repeat", code[0]);
+			if(node.nodeName == "SELECT" && node.onchange){
+				node.onchange();
+			}else if(node.onclick){
+				node.onclick();
+			}
+		}
+		function activate(els, mode){
+
+		}
+		scheduler.form_blocks["recurring"]._set_repeat_code = set_repeat_code;
+
+		for (var i = 0; i < top.elements.length; i++) {
+			var el = top.elements[i];
+			switch (el.name) {
+				case "repeat":
+					if(el.nodeName == "SELECT"){
+						el.onchange = change_current_view;
+					}else{
+						el.onclick = change_current_view;
+					}
+
+
+					break;
+			}
+		}
+		scheduler._lightbox._rec_init_done = true;
+	},
+	set_value:function(node, value, ev) {
+		var rf = scheduler.form_blocks["recurring"];
+		if (!scheduler._lightbox._rec_init_done)
+			rf._init_set_value(node, value, ev);
+		node.open = !ev.rec_type;
+		if (this._is_modified_occurence(ev))
+			node.blocked = true;
+		else node.blocked = false;
+
+		var ds = rf._ds;
+		ds.start = ev.start_date;
+		ds.end = ev._end_date;
+
+		rf.button_click(0, node.previousSibling.firstChild.firstChild, node, node);
+		if (value)
+			rf._set_repeat_code(value, ds);
+	},
+	get_value:function(node, ev) {
+		if (node.open) {
+			var ds = scheduler.form_blocks["recurring"]._ds;
+			var actual_dates = {};
+			this.formSection('time').getValue(actual_dates);
+			ds.start = actual_dates.start_date;
+			ev.rec_type = scheduler.form_blocks["recurring"]._get_repeat_code(ds);
+			if (ds._start) {
+				ev.start_date = new Date(ds.start);
+				ev._start_date = new Date(ds.start);
+				ds._start = false;
+			} else
+				ev._start_date = null;
+
+			ev._end_date = ds.end;
+			ev.rec_pattern = ev.rec_type.split("#")[0];
+		} else {
+			ev.rec_type = ev.rec_pattern = "";
+			ev._end_date = ev.end_date;
+		}
+		return ev.rec_type;
+	},
+	_get_button: function(){
+		var node = scheduler.formSection("recurring").header;
+		return node.firstChild.firstChild;
+	},
+	_get_form: function(){
+		return scheduler.formSection("recurring").node;
+	},
+	open:function(){
+		var block = scheduler.form_blocks.recurring;
+
+		var cont = block._get_form();
+		if(!cont.open)
+			block._toggle_block();
+	},
+	close: function(){
+		var block = scheduler.form_blocks.recurring;
+
+		var cont = block._get_form();
+
+		if(cont.open)
+			block._toggle_block();
+	},
+	_toggle_block: function(){
+		var block = scheduler.form_blocks.recurring;
+
+		var cont = block._get_form(),
+			el = block._get_button();
+		if (!cont.open && !cont.blocked) {
+			cont.style.height = "auto";//reset to default value
+			if(el){
+				el.style.backgroundPosition = "-5px 0px";
+				el.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;
+			}
+		} else {
+			cont.style.height = "0px";
+			if(el){
+				el.style.backgroundPosition = "-5px 20px";
+				el.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;
+			}
+		}
+		cont.open = !cont.open;
+
+		scheduler.setLightboxSize();
+	},
+	focus:function(node) {
+	},
+	button_click:function(index, el, section, cont) {
+		scheduler.form_blocks.recurring._toggle_block();
+	}
+};
+
+
+//problem may occur if we will have two repeating events in the same moment of time
+scheduler._rec_markers = {};
+scheduler._rec_markers_pull = {};
+scheduler._add_rec_marker = function(ev, time) {
+	ev._pid_time = time;
+	this._rec_markers[ev.id] = ev;
+	if (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};
+	this._rec_markers_pull[ev.event_pid][time] = ev;
+};
+scheduler._get_rec_marker = function(time, id) {
+	var ch = this._rec_markers_pull[id];
+	if (ch) return ch[time];
+	return null;
+};
+scheduler._get_rec_markers = function(id) {
+	return (this._rec_markers_pull[id] || []);
+};
+scheduler._rec_temp = [];
+(function() {
+	var old_add_event = scheduler.addEvent;
+	scheduler.addEvent = function(start_date, end_date, text, id, extra_data) {
+		var ev_id = old_add_event.apply(this, arguments);
+
+		if (ev_id) {
+			var ev = scheduler.getEvent(ev_id);
+			if (this._is_modified_occurence(ev))
+				scheduler._add_rec_marker(ev, ev.event_length * 1000);
+			if (ev.rec_type)
+				ev.rec_pattern = ev.rec_type.split("#")[0];
+		}
+		return ev_id;
+	};
+})();
+scheduler.attachEvent("onEventIdChange", function(id, new_id) {
+	if (this._ignore_call) return;
+	this._ignore_call = true;
+
+	if(scheduler._rec_markers[id]){
+		//important for for correct work of scheduler.getEvents(from, to) and collision detection
+		scheduler._rec_markers[new_id] = scheduler._rec_markers[id];
+		delete scheduler._rec_markers[id];
+	}
+
+	for (var i = 0; i < this._rec_temp.length; i++) {
+		var tev = this._rec_temp[i];
+		if (tev.event_pid == id) {
+			tev.event_pid = new_id;
+			this.changeEventId(tev.id, new_id + "#" + tev.id.split("#")[1]);
+		}
+	}
+
+	delete this._ignore_call;
+});
+scheduler.attachEvent("onConfirmedBeforeEventDelete", function(id) {
+	var ev = this.getEvent(id);
+	if (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {
+		id = id.split("#");
+		var nid = this.uid();
+		var tid = (id[1]) ? id[1] : (ev._pid_time / 1000);
+
+		var nev = this._copy_event(ev);
+		nev.id = nid;
+		nev.event_pid = ev.event_pid || id[0];
+		var timestamp = tid;
+		nev.event_length = timestamp;
+		nev.rec_type = nev.rec_pattern = "none";
+		this.addEvent(nev);
+
+		this._add_rec_marker(nev, timestamp * 1000);
+	} else {
+		if (ev.rec_type && this._lightbox_id)
+			this._roll_back_dates(ev);
+		var sub = this._get_rec_markers(id);
+		for (var i in sub) {
+			if (sub.hasOwnProperty(i)) {
+				id = sub[i].id;
+				if (this.getEvent(id))
+					this.deleteEvent(id, true);
+			}
+		}
+	}
+	return true;
+});
+scheduler.attachEvent("onEventDeleted", function(id, ev){
+	if(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){
+		if(!scheduler._events[id]){
+			ev.rec_type = ev.rec_pattern = "none";
+			this.setEvent(id, ev);
+		}
+	}
+});
+scheduler.attachEvent("onEventChanged", function(id) {
+	if (this._loading) return true;
+
+	var ev = this.getEvent(id);
+
+	if (this._is_virtual_event(id)) {
+		var id = id.split("#");
+		var nid = this.uid();
+		this._not_render = true;
+
+		var nev = this._copy_event(ev);
+		nev.id = nid;
+		nev.event_pid = id[0];
+		var timestamp = id[1];
+		nev.event_length = timestamp;
+		nev.rec_type = nev.rec_pattern = "";
+
+		this._add_rec_marker(nev, timestamp * 1000);
+		this.addEvent(nev);
+
+		this._not_render = false;
+
+	} else {
+		if (ev.rec_type && this._lightbox_id)
+			this._roll_back_dates(ev);
+		var sub = this._get_rec_markers(id);
+		for (var i in sub) {
+			if (sub.hasOwnProperty(i)) {
+				delete this._rec_markers[sub[i].id];
+				this.deleteEvent(sub[i].id, true);
+			}
+		}
+		delete this._rec_markers_pull[id];
+
+		// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag
+		var isEventFound = false;
+		for (var k = 0; k < this._rendered.length; k++) {
+			if (this._rendered[k].getAttribute('event_id') == id)
+				isEventFound = true;
+		}
+		if (!isEventFound)
+			this._select_id = null;
+	}
+	return true;
+});
+scheduler.attachEvent("onEventAdded", function(id) {
+	if (!this._loading) {
+		var ev = this.getEvent(id);
+		if (ev.rec_type && !ev.event_length)
+			this._roll_back_dates(ev);
+	}
+	return true;
+});
+scheduler.attachEvent("onEventSave", function(id, data, is_new_event) {
+	var ev = this.getEvent(id);
+	if (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))
+		this._select_id = null;
+	return true;
+});
+scheduler.attachEvent("onEventCreated", function(id) {
+	var ev = this.getEvent(id);
+	if (!ev.rec_type)
+		ev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = "";
+	return true;
+});
+scheduler.attachEvent("onEventCancel", function(id) {
+	var ev = this.getEvent(id);
+	if (ev.rec_type) {
+		this._roll_back_dates(ev);
+		// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process
+		this.render_view_data();
+	}
+});
+scheduler._roll_back_dates = function(ev) {
+	ev.event_length = (ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000;
+	ev.end_date = ev._end_date;
+	if (ev._start_date) {
+		ev.start_date.setMonth(0);
+		ev.start_date.setDate(ev._start_date.getDate());
+		ev.start_date.setMonth(ev._start_date.getMonth());
+		ev.start_date.setFullYear(ev._start_date.getFullYear());
+
+	}
+};
+
+scheduler._is_virtual_event = function(id){
+	return id.toString().indexOf("#") != -1;
+};
+scheduler._is_modified_occurence = function(ev){
+	return (ev.event_pid && ev.event_pid != "0");
+};
+
+scheduler._validId = function(id) {
+	return !this._is_virtual_event(id);
+};
+
+scheduler.showLightbox_rec = scheduler.showLightbox;
+scheduler.showLightbox = function(id) {
+	var locale = this.locale;
+	var c = scheduler.config.lightbox_recurring;
+	var ev = this.getEvent(id);
+	var pid = ev.event_pid;
+	var isVirtual = this._is_virtual_event(id);
+	if (isVirtual)
+		pid = id.split("#")[0];
+
+	// show series
+	var showSeries = function(id) {
+		var event = scheduler.getEvent(id);
+		event._end_date = event.end_date;
+		event.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);
+		return scheduler.showLightbox_rec(id); // editing series
+	};
+
+	if ( (pid || pid*1 === 0) && ev.rec_type) {
+		// direct API call on series id
+		return showSeries(id);
+	}
+	if ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {
+		// editing instance or non recurring event
+		return this.showLightbox_rec(id);
+	}
+	if (c == 'ask') {
+		var that = this;
+		dhtmlx.modalbox({
+			text: locale.labels.confirm_recurring,
+			title: locale.labels.title_confirm_recurring,
+			width: "500px",
+			position: "middle",
+			buttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],
+			callback: function(index) {
+				switch(+index) {
+					case 0:
+						return showSeries(pid);
+					case 1:
+						return that.showLightbox_rec(id);
+					case 2:
+						return;
+				}
+			}
+		});
+	} else {
+		showSeries(pid);
+	}
+};
+
+
+scheduler.get_visible_events_rec = scheduler.get_visible_events;
+scheduler.get_visible_events = function(only_timed) {
+	for (var i = 0; i < this._rec_temp.length; i++)
+		delete this._events[this._rec_temp[i].id];
+	this._rec_temp = [];
+
+	var stack = this.get_visible_events_rec(only_timed);
+	var out = [];
+	for (var i = 0; i < stack.length; i++) {
+		if (stack[i].rec_type) {
+			//deleted element of serie
+			if (stack[i].rec_pattern != "none")
+				this.repeat_date(stack[i], out);
+		}
+		else out.push(stack[i]);
+	}
+	return out;
+};
+
+
+(function() {
+	var old = scheduler.isOneDayEvent;
+	scheduler.isOneDayEvent = function(ev) {
+		if (ev.rec_type) return true;
+		return old.call(this, ev);
+	};
+	var old_update_event = scheduler.updateEvent;
+	scheduler.updateEvent = function(id) {
+		var ev = scheduler.getEvent(id);
+		if(ev && ev.rec_type){
+			//rec_type can be changed without the lightbox,
+			// make sure rec_pattern updated as well
+			ev.rec_pattern = (ev.rec_type || "").split("#")[0];
+		}
+		if (ev && ev.rec_type && !this._is_virtual_event(id)) {
+			scheduler.update_view();
+		} else {
+			old_update_event.call(this, id);
+		}
+	};
+})();
+
+scheduler.transponse_size = {
+	day:1, week:7, month:1, year:12
+};
+scheduler.date.day_week = function(sd, day, week) {
+	sd.setDate(1);
+	week = (week - 1) * 7;
+	var cday = sd.getDay();
+	var nday = day * 1 + week - cday + 1;
+	sd.setDate(nday <= week ? (nday + 7) : nday);
+};
+scheduler.transpose_day_week = function(sd, list, cor, size, cor2) {
+	var cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;
+	for (var i = 0; i < list.length; i++) {
+		if (list[i] > cday)
+			return sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));
+	}
+	this.transpose_day_week(sd, list, cor + size, null, cor);
+};
+scheduler.transpose_type = function(type) {
+	var f = "transpose_" + type;
+	if (!this.date[f]) {
+		var str = type.split("_");
+		var day = 60 * 60 * 24 * 1000;
+		var gf = "add_" + type;
+		var step = this.transponse_size[str[0]] * str[1];
+
+		if (str[0] == "day" || str[0] == "week") {
+			var days = null;
+			if (str[4]) {
+				days = str[4].split(",");
+				if (scheduler.config.start_on_monday) {
+					for (var i = 0; i < days.length; i++)
+						days[i] = (days[i] * 1) || 7;
+					days.sort();
+				}
+			}
+
+			this.date[f] = function(nd, td) { 
+				var delta = Math.floor((td.valueOf() - nd.valueOf()) / (day * step));
+				if (delta > 0)
+					nd.setDate(nd.getDate() + delta * step);
+				if (days)
+					scheduler.transpose_day_week(nd, days, 1, step);
+			};
+			this.date[gf] = function(sd, inc) {
+				var nd = new Date(sd.valueOf());
+				if (days) {
+					for (var count = 0; count < inc; count++)
+						scheduler.transpose_day_week(nd, days, 0, step);
+				} else
+					nd.setDate(nd.getDate() + inc * step);
+
+				return nd;
+			};
+		}
+		else if (str[0] == "month" || str[0] == "year") {
+			this.date[f] = function(nd, td) {
+				var delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1)) / (step));
+				if (delta >= 0)
+					nd.setMonth(nd.getMonth() + delta * step);
+				if (str[3])
+					scheduler.date.day_week(nd, str[2], str[3]);
+			};
+			this.date[gf] = function(sd, inc) {
+				var nd = new Date(sd.valueOf());
+				nd.setMonth(nd.getMonth() + inc * step);
+				if (str[3])
+					scheduler.date.day_week(nd, str[2], str[3]);
+				return nd;
+			};
+		}
+	}
+};
+scheduler.repeat_date = function(ev, stack, non_render, from, to) {
+
+	from = from || this._min_date;
+	to = to || this._max_date;
+
+	var td = new Date(ev.start_date.valueOf());
+
+	if (!ev.rec_pattern && ev.rec_type)
+		ev.rec_pattern = ev.rec_type.split("#")[0];
+
+	this.transpose_type(ev.rec_pattern);
+	scheduler.date["transpose_" + ev.rec_pattern](td, from);
+	while (td < ev.start_date || scheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() || td.valueOf() + ev.event_length * 1000 <= from.valueOf())
+		td = this.date.add(td, 1, ev.rec_pattern);
+	while (td < to && td < ev.end_date) {
+		var timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();
+		var ch = this._get_rec_marker(timestamp, ev.id);
+		if (!ch) { // unmodified element of series
+			var ted = new Date(td.valueOf() + ev.event_length * 1000);
+			var copy = this._copy_event(ev);
+			//copy._timed = ev._timed;
+			copy.text = ev.text;
+			copy.start_date = td;
+			copy.event_pid = ev.id;
+			copy.id = ev.id + "#" + Math.ceil(timestamp / 1000);
+			copy.end_date = ted;
+
+			copy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);
+
+			copy._timed = this.isOneDayEvent(copy);
+
+			if (!copy._timed && !this._table_view && !this.config.multi_day) return;
+			stack.push(copy);
+
+			if (!non_render) {
+				this._events[copy.id] = copy;
+				this._rec_temp.push(copy);
+			}
+
+		} else
+		if (non_render) stack.push(ch);
+
+		td = this.date.add(td, 1, ev.rec_pattern);
+	}
+};
+scheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {
+	var shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();
+	if (shift) {
+		if (shift > 0) {
+			// e.g. 24h -> 23h
+			return new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);
+		}
+		else {
+			// e.g. 24h -> 25h
+			return new Date(end_date.valueOf() - shift * 60 * 1000);
+		}
+	}
+	return new Date(default_date.valueOf());
+};
+scheduler.getRecDates = function(id, max) {
+	var ev = typeof id == "object" ? id : scheduler.getEvent(id);
+	var count = 0;
+	var result = [];
+	max = max || 100;
+
+	var td = new Date(ev.start_date.valueOf());
+	var from = new Date(td.valueOf());
+
+	if (!ev.rec_type) {
+		return [
+			{ start_date: ev.start_date, end_date: ev.end_date }
+		];
+	}
+	if (ev.rec_type == "none") {
+		return [];
+	}
+	this.transpose_type(ev.rec_pattern);
+	scheduler.date["transpose_" + ev.rec_pattern](td, from);
+
+	while (td < ev.start_date || (td.valueOf() + ev.event_length * 1000) <= from.valueOf())
+		td = this.date.add(td, 1, ev.rec_pattern);
+	while (td < ev.end_date) {
+		var ch = this._get_rec_marker(td.valueOf(), ev.id);
+		var res = true;
+		if (!ch) { // unmodified element of series
+			var sed = new Date(td);
+			var ted = new Date(td.valueOf() + ev.event_length * 1000);
+
+			ted = scheduler._fix_daylight_saving_date(sed, ted, ev, td, ted);
+
+			result.push({start_date:sed, end_date:ted});
+		} else if(ch.rec_type == "none") {
+			res = false;
+		} else {
+			result.push({ start_date: ch.start_date, end_date: ch.end_date });
+		}
+		
+		td = this.date.add(td, 1, ev.rec_pattern);
+		if (res) {
+			count++;
+			if (count == max)
+				break;
+		}
+	}
+	return result;
+};
+scheduler.getEvents = function(from, to) {
+	var result = [];
+	for (var a in this._events) {
+		var ev = this._events[a];
+		if (ev && ev.start_date < to && ev.end_date > from) {
+			if (ev.rec_pattern) {
+				if (ev.rec_pattern == "none") continue;
+				var sev = [];
+				this.repeat_date(ev, sev, true, from, to);
+				for (var i = 0; i < sev.length; i++) {
+					// if event is in rec_markers then it will be checked by himself, here need to skip it
+					if (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {
+						result.push(sev[i]);
+					}
+				}
+			} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it
+				result.push(ev);
+			}
+		}
+	}
+	return result;
+};
+
+scheduler.config.repeat_date = "%m.%d.%Y";
+scheduler.config.lightbox.sections = [
+	{name:"description", height:130, map_to:"text", type:"textarea" , focus:true},
+	{name:"recurring", type:"recurring", map_to:"rec_type", button:"recurring"},
+	{name:"time", height:72, type:"time", map_to:"auto"}
+];
+
+
+//drop secondary attributes
+scheduler._copy_dummy = function(ev) {
+	var start_date = new Date(this.start_date);
+	var end_date = new Date(this.end_date);
+	this.start_date = start_date;
+	this.end_date = end_date;
+	this.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;
+};
+
+scheduler.config.include_end_by = false;
+scheduler.config.lightbox_recurring = 'ask'; // series, instance
+
+scheduler.attachEvent("onClearAll", function(){
+	scheduler._rec_markers = {}; //clear recurring events data
+	scheduler._rec_markers_pull = {};
+	scheduler._rec_temp = [];
+});
+
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daily</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Weekly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monthly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Yearly</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />day<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Every workday</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repeat every<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week next days:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Monday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Thursday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tuesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Friday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Wednesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Saturday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunday</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeat</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />day every<input class="dhx_repeat_text" type="text" name="month_count" value="1" />month<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="0">Sunday</select>every<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />month<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />day<select name="year_month"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select>month<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="7">Sunday</select>of<select name="year_month2"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>No end date</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />After</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />End by</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.txt
new file mode 100644
index 0000000000..d7ba61fc96
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_recurring.js","sources":["dhtmlxscheduler_recurring.js"],"names":["scheduler","config","occurrence_timestamp_in_utc","recurring_workdays","form_blocks","_get_node","node","document","getElementById","style","display","_outer_html","getOuterHTML","n","h","div","createElement","appendChild","cloneNode","innerHTML","outerHTML","render","sns","form","rec","html","__recurring_template","_ds","_get_form_node","els","name","value","col","nodeName","length","i","_get_node_value","multiselect","res","checked","push","_set_node_value","hash_value","_init_set_value","ev","register_els","inps","inp","nodeType","change_current_view","$","this","setLightboxSize","get_repeat_code","dates","code","get_value","get_rcode","repeat","end","get_end_rule","Date","str_date","transpose_type","join","Math","max","transp","date","add","start","set_end_rule","has_values","ind","set_repeat_code","set_value","data","split","set_rcode","end_date","include_end_by","date_str","onchange","onclick","block","start_date","_end_date","str_date_format","str_to_date","repeat_date","date_to_str","top","getElementsByTagName","repeat_date_of_end","formatter","_currentDate","a","_get_repeat_code","month","setDate","repeat_precise","_start","week","t","day","getDay","start_exists","sort","transpose_day_week","week_start","splice","year","setMonth","d","getDate","getMonth","_set_repeat_code","elements","el","_lightbox","_rec_init_done","rf","open","rec_type","_is_modified_occurence","blocked","ds","button_click","previousSibling","firstChild","actual_dates","formSection","getValue","_start_date","rec_pattern","_get_button","header","_get_form","recurring","cont","_toggle_block","close","height","backgroundPosition","nextSibling","locale","labels","button_recurring","button_recurring_open","focus","index","section","_rec_markers","_rec_markers_pull","_add_rec_marker","time","_pid_time","id","event_pid","_get_rec_marker","ch","_get_rec_markers","_rec_temp","old_add_event","addEvent","text","extra_data","ev_id","apply","arguments","getEvent","event_length","attachEvent","new_id","_ignore_call","tev","changeEventId","_is_virtual_event","nid","uid","tid","nev","_copy_event","timestamp","_lightbox_id","_roll_back_dates","sub","hasOwnProperty","deleteEvent","_events","setEvent","_loading","_not_render","isEventFound","k","_rendered","getAttribute","_select_id","is_new_event","render_view_data","valueOf","setFullYear","getFullYear","toString","indexOf","_validId","showLightbox_rec","showLightbox","c","lightbox_recurring","pid","isVirtual","showSeries","event","confirm_recurring","that","dhtmlx","modalbox","title","title_confirm_recurring","width","position","buttons","button_edit_series","button_edit_occurrence","icon_cancel","callback","get_visible_events_rec","get_visible_events","only_timed","stack","out","old","isOneDayEvent","call","old_update_event","updateEvent","update_view","transponse_size","day_week","sd","cday","nday","list","cor","size","cor2","start_on_monday","type","f","str","gf","step","days","nd","td","delta","floor","inc","count","ceil","non_render","from","to","_min_date","_max_date","_fix_daylight_saving_date","UTC","getHours","getMinutes","getSeconds","ted","copy","_timed","_table_view","multi_day","counter","default_date","shift","getTimezoneOffset","getRecDates","result","sed","getEvents","sev","lightbox","sections","map_to","button","_copy_dummy"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.xml
new file mode 100644
index 0000000000..ca90ac7b53
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_recurring.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.xml
new file mode 100644
index 0000000000..5d7fbbcb37
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_recurring.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_recurring.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.js
new file mode 100644
index 0000000000..bdd331b751
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.js
@@ -0,0 +1,111 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler._get_serializable_data = function(){
+	var res = {};
+	for (var a in this._events){
+		var ev = this._events[a];
+		if (ev.id.toString().indexOf("#") == -1){
+			res[ev.id] = ev;
+		}
+	}
+	return res;
+};
+
+//redefine this method, if you want to provide a custom set of attributes for serialization
+scheduler.data_attributes=function(){
+	var attrs = [];
+	var format = scheduler.templates.xml_format;
+	var all_events = this._get_serializable_data();
+	for (var a in all_events){
+		var ev = all_events[a];
+		for (var name in ev)
+			if (name.substr(0,1) !="_")
+				attrs.push([name,((name == "start_date" || name == "end_date")?format:null)]);
+		break;
+	}
+	return attrs;
+};
+
+scheduler.toXML = function(header){
+	var xml = [];
+	var attrs = this.data_attributes();
+
+	var all_events = this._get_serializable_data();
+	for (var a in all_events){
+		var ev = all_events[a];
+
+		xml.push("<event>");	
+		for (var i=0; i < attrs.length; i++)
+			xml.push("<"+attrs[i][0]+"><![CDATA["+(attrs[i][1]?attrs[i][1](ev[attrs[i][0]]):ev[attrs[i][0]])+"]]></"+attrs[i][0]+">");
+			
+		xml.push("</event>");
+	}
+	return (header||"")+"<data>"+xml.join("\n")+"</data>";
+};
+
+scheduler._serialize_json_value = function(value){
+	if(value === null || typeof value === "boolean"){
+		value = "" + value;
+	}else{
+		if(!value && value !== 0){
+			value = "";
+		}
+		value = '"' + value.toString().
+			replace(/\n/g,"").
+			replace(/\\/g,"\\\\").
+			replace(/\"/g, '\\"') + '"';
+	}
+	return value;
+};
+
+scheduler.toJSON = function(){
+	var json = [], value = "";
+	var attrs = this.data_attributes();
+	var all_events = this._get_serializable_data();
+	for (var a in all_events){
+		var ev = all_events[a];
+
+		var line =[];	
+		for (var i=0; i < attrs.length; i++){
+			value = (attrs[i][1]) ? attrs[i][1](ev[attrs[i][0]]) : ev[attrs[i][0]];
+
+			line.push(' "'+attrs[i][0]+'": '+ this._serialize_json_value(value));
+		}
+		json.push("{"+line.join(",")+"}");
+	}
+	return "["+json.join(",\n")+"]";
+};
+
+
+scheduler.toICal = function(header){
+	var start = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\nDESCRIPTION:";
+	var end = "END:VCALENDAR";
+	var format = scheduler.date.date_to_str("%Y%m%dT%H%i%s");
+	var full_day_format = scheduler.date.date_to_str("%Y%m%d");
+		
+	var ical = [];
+	var all_events = this._get_serializable_data();
+	for (var a in all_events){
+		var ev = all_events[a];
+		
+		
+		ical.push("BEGIN:VEVENT");	
+		if (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))
+			ical.push("DTSTART:"+full_day_format(ev.start_date));	
+		else
+			ical.push("DTSTART:"+format(ev.start_date));
+		if (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))
+			ical.push("DTEND:"+full_day_format(ev.end_date));	
+		else
+			ical.push("DTEND:"+format(ev.end_date));
+		ical.push("SUMMARY:"+ev.text);	
+		ical.push("END:VEVENT");
+	}
+	return start+(header||"")+"\n"+ical.join("\n")+"\n"+end;
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.txt
new file mode 100644
index 0000000000..cb2e4201a6
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_serialize.js","sources":["dhtmlxscheduler_serialize.js"],"names":["scheduler","_get_serializable_data","res","a","this","_events","ev","id","toString","indexOf","data_attributes","attrs","format","templates","xml_format","all_events","name","substr","push","toXML","header","xml","i","length","join","_serialize_json_value","value","replace","toJSON","json","line","toICal","start","end","date","date_to_str","full_day_format","ical","_timed","start_date","getHours","getMinutes","end_date","text"],"mappings":";;;;;;;;AAQAA,UAAUC,uBAAyB,WAClC,GAAIC,KACJ,KAAK,GAAIC,KAAKC,MAAKC,QAAQ,CAC1B,GAAIC,GAAKF,KAAKC,QAAQF,EACe,KAAjCG,EAAGC,GAAGC,WAAWC,QAAQ,OAC5BP,EAAII,EAAGC,IAAMD,GAGf,MAAOJ,IAIRF,UAAUU,gBAAgB,WACzB,GAAIC,MACAC,EAASZ,UAAUa,UAAUC,WAC7BC,EAAaX,KAAKH,wBACtB,KAAK,GAAIE,KAAKY,GAAW,CACxB,GAAIT,GAAKS,EAAWZ,EACpB,KAAK,GAAIa,KAAQV,GACO,KAAnBU,EAAKC,OAAO,EAAE,IACjBN,EAAMO,MAAMF,EAAe,cAARA,GAAgC,YAARA,EAAoBJ,EAAO,MACxE,OAED,MAAOD,IAGRX,UAAUmB,MAAQ,SAASC,GAC1B,GAAIC,MACAV,EAAQP,KAAKM,kBAEbK,EAAaX,KAAKH,wBACtB,KAAK,GAAIE,KAAKY,GAAW;AACxB,GAAIT,GAAKS,EAAWZ,EAEpBkB,GAAIH,KAAK,UACT,KAAK,GAAII,GAAE,EAAGA,EAAIX,EAAMY,OAAQD,IAC/BD,EAAIH,KAAK,IAAIP,EAAMW,GAAG,GAAG,cAAcX,EAAMW,GAAG,GAAGX,EAAMW,GAAG,GAAGhB,EAAGK,EAAMW,GAAG,KAAKhB,EAAGK,EAAMW,GAAG,KAAK,QAAQX,EAAMW,GAAG,GAAG,IAEtHD,GAAIH,KAAK,YAEV,OAAQE,GAAQ,IAAI,SAASC,EAAIG,KAAK,MAAM,WAG7CxB,UAAUyB,sBAAwB,SAASC,GAY1C,MAXa,QAAVA,GAAmC,iBAAVA,GAC3BA,EAAQ,GAAKA,GAETA,GAAmB,IAAVA,IACZA,EAAQ,IAETA,EAAQ,IAAMA,EAAMlB,WACnBmB,QAAQ,MAAM,IACdA,QAAQ,MAAM,QACdA,QAAQ,MAAO,OAAS,KAEnBD,GAGR1B,UAAU4B,OAAS,WAClB,GAAIC,MAAWH,EAAQ,GACnBf,EAAQP,KAAKM,kBACbK,EAAaX,KAAKH;;AACtB,IAAK,GAAIE,KAAKY,GAAW,CAIxB,IAAK,GAHDT,GAAKS,EAAWZ,GAEhB2B,KACKR,EAAE,EAAGA,EAAIX,EAAMY,OAAQD,IAC/BI,EAASf,EAAMW,GAAG,GAAMX,EAAMW,GAAG,GAAGhB,EAAGK,EAAMW,GAAG,KAAOhB,EAAGK,EAAMW,GAAG,IAEnEQ,EAAKZ,KAAK,KAAKP,EAAMW,GAAG,GAAG,MAAOlB,KAAKqB,sBAAsBC,GAE9DG,GAAKX,KAAK,IAAIY,EAAKN,KAAK,KAAK,KAE9B,MAAO,IAAIK,EAAKL,KAAK,OAAO,KAI7BxB,UAAU+B,OAAS,SAASX,GAC3B,GAAIY,GAAQ,0FACRC,EAAM,gBACNrB,EAASZ,UAAUkC,KAAKC,YAAY,iBACpCC,EAAkBpC,UAAUkC,KAAKC,YAAY,UAE7CE,KACAtB,EAAaX,KAAKH,wBACtB,KAAK,GAAIE,KAAKY,GAAW,CACxB,GAAIT,GAAKS,EAAWZ;;AAGpBkC,EAAKnB,KAAK,gBAITmB,EAAKnB,KAHDZ,EAAGgC,SAAYhC,EAAGiC,WAAWC,YAAelC,EAAGiC,WAAWE,cAGpD,WAAW7B,EAAON,EAAGiC,YAFrB,WAAWH,EAAgB9B,EAAGiC,aAMxCF,EAAKnB,KAHDZ,EAAGgC,SAAYhC,EAAGoC,SAASF,YAAelC,EAAGoC,SAASD,cAGhD,SAAS7B,EAAON,EAAGoC,UAFnB,SAASN,EAAgB9B,EAAGoC,WAGvCL,EAAKnB,KAAK,WAAWZ,EAAGqC,MACxBN,EAAKnB,KAAK,cAEX,MAAOc,IAAOZ,GAAQ,IAAI,KAAKiB,EAAKb,KAAK,MAAM,KAAKS"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.xml
new file mode 100644
index 0000000000..70acdfc129
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_serialize.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.xml
new file mode 100644
index 0000000000..d64329a957
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_serialize.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_serialize.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.js
new file mode 100644
index 0000000000..2705532198
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.js
@@ -0,0 +1,225 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+window.dhtmlXTooltip = scheduler.dhtmlXTooltip = window.dhtmlxTooltip = {};
+
+dhtmlXTooltip.config = {
+	className: 'dhtmlXTooltip tooltip',
+	timeout_to_display: 50,
+	timeout_to_hide: 50,
+	delta_x: 15,
+	delta_y: -20
+};
+
+dhtmlXTooltip.tooltip = document.createElement('div');
+dhtmlXTooltip.tooltip.className = dhtmlXTooltip.config.className;
+
+dhtmlXTooltip.show = function(event, text) { //browser event, text to display
+	if (scheduler.config.touch && !scheduler.config.touch_tooltip) return;
+	
+	var dhxTooltip = dhtmlXTooltip;
+	var tooltip_div = this.tooltip;
+	var tooltip_div_style = tooltip_div.style;
+	dhxTooltip.tooltip.className = dhxTooltip.config.className;
+	var pos = this.position(event);
+
+	var target = event.target || event.srcElement;
+	// if we are over tooltip -- do nothing, just return (so tooltip won't move)
+	if (this.isTooltip(target)) {
+		return;
+	}
+
+	var actual_x = pos.x + (dhxTooltip.config.delta_x || 0);
+	var actual_y = pos.y - (dhxTooltip.config.delta_y || 0);
+
+	tooltip_div_style.visibility = "hidden";
+
+	if (tooltip_div_style.removeAttribute) {
+		tooltip_div_style.removeAttribute("right");
+		tooltip_div_style.removeAttribute("bottom");
+	} else {
+		tooltip_div_style.removeProperty("right");
+		tooltip_div_style.removeProperty("bottom");
+	}
+
+	tooltip_div_style.left = "0";
+	tooltip_div_style.top = "0";
+
+	this.tooltip.innerHTML = text;
+	document.body.appendChild(this.tooltip);
+
+	var tooltip_width = this.tooltip.offsetWidth;
+	var tooltip_height = this.tooltip.offsetHeight;
+
+	if ((document.body.offsetWidth - actual_x - tooltip_width) < 0) { // tooltip is out of the right page bound
+		if(tooltip_div_style.removeAttribute)
+			tooltip_div_style.removeAttribute("left");
+		else
+			tooltip_div_style.removeProperty("left");
+		tooltip_div_style.right = (document.body.offsetWidth - actual_x + 2 * (dhxTooltip.config.delta_x||0)) + "px";
+	} else {
+		if (actual_x < 0) {
+			// tooltips is out of the left page bound
+			tooltip_div_style.left = (pos.x + Math.abs(dhxTooltip.config.delta_x||0)) + "px";
+		} else {
+			// normal situation
+			tooltip_div_style.left = actual_x + "px";
+		}
+	}
+
+	if ((document.body.offsetHeight - actual_y - tooltip_height) < 0) { // tooltip is below bottom of the page
+		if(tooltip_div_style.removeAttribute)
+			tooltip_div_style.removeAttribute("top");
+		else
+			tooltip_div_style.removeProperty("top");
+		tooltip_div_style.bottom = (document.body.offsetHeight - actual_y - 2 * (dhxTooltip.config.delta_y||0)) + "px";
+	} else {
+		if (actual_y < 0) {
+			// tooltip is higher then top of the page
+			tooltip_div_style.top = (pos.y + Math.abs(dhxTooltip.config.delta_y||0)) + "px";
+		} else {
+			// normal situation
+			tooltip_div_style.top = actual_y + "px";
+		}
+	}
+
+	tooltip_div_style.visibility = "visible";
+	this.tooltip.onmouseleave = function(e){
+		e = e || window.event;
+		/*
+		 A rare but reported scenario, when tooltip appears at the edge of the scheduler (e.g. left part inside cal, right part - outside).
+		 User moves mouse from the scheduler into the tooltip, and then from the tooltip to the page outside the calendar.
+		 As a result - tooltip freezes and no longer reacts until mouse reenters the calendar.
+		*/
+		var tooltip = scheduler.dhtmlXTooltip;
+
+		var node = e.relatedTarget;
+		while (node != scheduler._obj && node) {
+			node = node.parentNode;
+		}
+
+		if(node != scheduler._obj)
+			tooltip.delay(tooltip.hide, tooltip, [], tooltip.config.timeout_to_hide);
+	};
+
+	scheduler.callEvent("onTooltipDisplayed", [this.tooltip, this.tooltip.event_id]);
+};
+dhtmlXTooltip._clearTimeout = function(){
+	if(this.tooltip._timeout_id) {
+		window.clearTimeout(this.tooltip._timeout_id);
+	}
+};
+
+dhtmlXTooltip.hide = function() {
+	if (this.tooltip.parentNode) {
+		var event_id = this.tooltip.event_id;
+		this.tooltip.event_id = null;
+		this.tooltip.onmouseleave = null;
+		this.tooltip.parentNode.removeChild(this.tooltip);
+		scheduler.callEvent("onAfterTooltip", [event_id]);
+	}
+	this._clearTimeout();
+};
+dhtmlXTooltip.delay = function(method, object, params, delay) {
+	this._clearTimeout();
+	this.tooltip._timeout_id = setTimeout(function() {
+		var ret = method.apply(object, params);
+		method = object = params = null;
+		return ret;
+	}, delay || this.config.timeout_to_display);
+};
+
+dhtmlXTooltip.isTooltip = function(node) {
+	var res = false;
+	if (node.className.split(" ")[0] == "dhtmlXTooltip") {
+		//debugger;
+	}
+	while (node && !res) {
+		res = (node.className == this.tooltip.className);
+		node = node.parentNode;
+	}
+	return res;
+};
+
+dhtmlXTooltip.position = function(ev) {
+	ev = ev || window.event;
+	if (ev.pageX || ev.pageY) //FF, KHTML
+		return {x:ev.pageX, y:ev.pageY};
+	//IE
+	var d = ((window._isIE) && (document.compatMode != "BackCompat")) ? document.documentElement : document.body;
+	return {
+		x:ev.clientX + d.scrollLeft - d.clientLeft,
+		y:ev.clientY + d.scrollTop - d.clientTop
+	};
+};
+
+scheduler.attachEvent("onMouseMove", function(event_id, e) { // (scheduler event_id, browser event)
+	var ev = window.event || e;
+	var target = ev.target || ev.srcElement;
+	var dhxTooltip = dhtmlXTooltip;
+
+	var is_tooltip = dhxTooltip.isTooltip(target);
+	var is_tooltip_target = (dhxTooltip.isTooltipTarget && dhxTooltip.isTooltipTarget(target));
+
+	// if we are over event or tooltip or custom target for tooltip
+	if (event_id || is_tooltip || is_tooltip_target) {
+		var text;
+
+		if (event_id || dhxTooltip.tooltip.event_id) {
+			var event = scheduler.getEvent(event_id) || scheduler.getEvent(dhxTooltip.tooltip.event_id);
+			if (!event)
+				return;
+
+			dhxTooltip.tooltip.event_id = event.id;
+			text = scheduler.templates.tooltip_text(event.start_date, event.end_date, event);
+			if (!text)
+				return dhxTooltip.hide();
+		}
+		if (is_tooltip_target) {
+			text = "";
+		}
+
+		var evt;
+		if (_isIE) {
+			//make a copy of event, will be used in timed call
+
+			evt = {'pageX':undefined,
+				'pageY':undefined,
+				'clientX':undefined,
+				'clientY':undefined,
+				'target':undefined,
+				'srcElement':undefined
+			};
+			for(var i in evt){
+				evt[i] = ev[i];
+			}
+		}
+
+		if (!scheduler.callEvent("onBeforeTooltip", [event_id]) || !text)
+			return;
+
+		dhxTooltip.delay(dhxTooltip.show, dhxTooltip, [(evt || ev), text]); // showing tooltip
+	} else {
+		dhxTooltip.delay(dhxTooltip.hide, dhxTooltip, [], dhxTooltip.config.timeout_to_hide);
+	}
+});
+scheduler.attachEvent("onBeforeDrag", function() {
+	dhtmlXTooltip.hide();
+	return true;
+});
+scheduler.attachEvent("onEventDeleted", function() {
+	dhtmlXTooltip.hide();
+	return true;
+});
+
+/* Could be redifined */
+scheduler.templates.tooltip_date_format = scheduler.date.date_to_str("%Y-%m-%d %H:%i");
+
+scheduler.templates.tooltip_text = function(start, end, event) {
+	return "<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);
+};
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.txt
new file mode 100644
index 0000000000..1c46eda17f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_tooltip.js","sources":["dhtmlxscheduler_tooltip.js"],"names":["window","dhtmlXTooltip","scheduler","dhtmlxTooltip","config","className","timeout_to_display","timeout_to_hide","delta_x","delta_y","tooltip","document","createElement","show","event","text","touch","touch_tooltip","dhxTooltip","tooltip_div","this","tooltip_div_style","style","pos","position","target","srcElement","isTooltip","actual_x","x","actual_y","y","visibility","removeAttribute","removeProperty","left","top","innerHTML","body","appendChild","tooltip_width","offsetWidth","tooltip_height","offsetHeight","right","Math","abs","bottom","onmouseleave","e","node","relatedTarget","_obj","parentNode","delay","hide","callEvent","event_id","_clearTimeout","_timeout_id","clearTimeout","removeChild","method","object","params","setTimeout","ret","apply","res","split","ev","pageX","pageY","d","compatMode","documentElement","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","attachEvent","is_tooltip","is_tooltip_target","isTooltipTarget","getEvent","id","templates","tooltip_text","start_date","end_date","evt","_isIE","undefined","i","tooltip_date_format","date","date_to_str","start","end"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.xml
new file mode 100644
index 0000000000..774b6430c7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_tooltip.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.xml
new file mode 100644
index 0000000000..9339e68162
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_tooltip.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_tooltip.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.js
new file mode 100644
index 0000000000..28d3a682d9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.js
@@ -0,0 +1,81 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler._get_url_nav = function(){
+	var p = {};
+	var data = (document.location.hash || "").replace("#", "").split(",");
+	for (var i = 0; i < data.length; i++) {
+		var s = data[i].split("=");
+		if (s.length == 2)
+			p[s[0]] = s[1];
+	}
+	return p;
+};
+
+scheduler.attachEvent("onTemplatesReady", function () {
+	var first = true;
+	var s2d = scheduler.date.str_to_date("%Y-%m-%d");
+	var d2s = scheduler.date.date_to_str("%Y-%m-%d");
+	var select_event =  scheduler._get_url_nav().event || null;
+
+	scheduler.attachEvent("onAfterEventDisplay", function(ev){
+		select_event = null;
+		return true;
+	});
+
+	scheduler.attachEvent("onBeforeViewChange", function (om, od, m, d) {
+		if (first) {
+			first = false;
+			var p = scheduler._get_url_nav();
+
+			if (p.event){
+				try{
+					if(scheduler.getEvent(p.event)){
+						showEvent(p.event);
+						return false;
+					}else{
+						var handler = scheduler.attachEvent("onXLE", function(){
+							showEvent(p.event);
+							scheduler.detachEvent(handler);
+						});
+					}
+				} catch (e){}
+			}
+
+			if (p.date || p.mode) {
+				try {
+					this.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));
+				} catch (e) {
+					//assuming that mode is not available anymore
+					this.setCurrentView((p.date ? s2d(p.date) : null), m);
+				}
+				return false;
+			}
+		}
+
+		var values = [
+			"date=" + d2s(d || od),
+			"mode=" + (m || om)
+		];
+
+		if(select_event){
+			values.push("event=" + select_event);
+		}
+
+		var text = "#" + values.join(",");
+		document.location.hash = text;
+		return true;
+	});
+
+	function showEvent(e){
+		select_event = e;
+		if(scheduler.getEvent(e)){
+			scheduler.showEvent(e);
+		}
+	}
+});
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.txt
new file mode 100644
index 0000000000..ab17718e72
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_url.js","sources":["dhtmlxscheduler_url.js"],"names":["scheduler","_get_url_nav","p","data","document","location","hash","replace","split","i","length","s","attachEvent","showEvent","e","select_event","getEvent","first","s2d","date","str_to_date","d2s","date_to_str","event","ev","om","od","m","d","handler","detachEvent","mode","this","setCurrentView","values","push","text","join"],"mappings":";;;;;;;;AAQAA,UAAUC,aAAe,WAGxB,IAAK,GAFDC,MACAC,GAAQC,SAASC,SAASC,MAAQ,IAAIC,QAAQ,IAAK,IAAIC,MAAM,KACxDC,EAAI,EAAGA,EAAIN,EAAKO,OAAQD,IAAK,CACrC,GAAIE,GAAIR,EAAKM,GAAGD,MAAM,IACN,IAAZG,EAAED,SACLR,EAAES,EAAE,IAAMA,EAAE,IAEd,MAAOT,IAGRF,UAAUY,YAAY,mBAAoB,WAuDzC,QAASC,GAAUC,GAClBC,EAAeD,EACZd,UAAUgB,SAASF,IACrBd,UAAUa,UAAUC,GAzDtB,GAAIG,IAAQ,EACRC,EAAMlB,UAAUmB,KAAKC,YAAY,YACjCC,EAAMrB,UAAUmB,KAAKG,YAAY,YACjCP,EAAgBf,UAAUC,eAAesB,OAAS,IAEtDvB,WAAUY,YAAY,sBAAuB,SAASY,GAErD,MADAT,GAAe;CACR,IAGRf,UAAUY,YAAY,qBAAsB,SAAUa,EAAIC,EAAIC,EAAGC,GAChE,GAAIX,EAAO,CACVA,GAAQ,CACR,IAAIf,GAAIF,UAAUC,cAElB,IAAIC,EAAEqB,MACL,IACC,GAAGvB,UAAUgB,SAASd,EAAEqB,OAEvB,MADAV,GAAUX,EAAEqB,QACL,CAEP,IAAIM,GAAU7B,UAAUY,YAAY,QAAS,WAC5CC,EAAUX,EAAEqB,OACZvB,UAAU8B,YAAYD,KAGvB,MAAOf,IAGV,GAAIZ,EAAEiB,MAAQjB,EAAE6B,KAAM,CACrB,IACCC,KAAKC,eAAgB/B,EAAEiB,KAAOD,EAAIhB,EAAEiB,MAAQ,KAAQjB,EAAE6B,MAAQ,MAC7D,MAAOjB,GAERkB,KAAKC,eAAgB/B,EAAEiB,KAAOD,EAAIhB,EAAEiB,MAAQ,KAAOQ,GAEpD,OAAO,GAIT,GAAIO,IACH,QAAUb,EAAIO,GAAKF,GACnB,SAAWC,GAAKF,GAGdV,IACFmB,EAAOC,KAAK,SAAWpB,EAGxB,IAAIqB,GAAO,IAAMF,EAAOG,KAAK,IAE7B,OADAjC,UAASC,SAASC,KAAO8B;CAClB"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.xml
new file mode 100644
index 0000000000..50228b8756
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_url.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.xml
new file mode 100644
index 0000000000..197fb57cdf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_url.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_url.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.js
new file mode 100644
index 0000000000..8dcdceecc1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.js
@@ -0,0 +1,21 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.attachEvent("onLightBox",function(){
+	if (this._cover){
+		try{
+			this._cover.style.height = this.expanded ? "100%" : ((document.body.parentNode||document.body).scrollHeight+"px");
+		} catch(e) {}
+	}
+});
+
+scheduler.form_blocks.select.set_value=function(node,value,ev){
+	if (typeof value == "undefined" || value === "")
+		value = (node.firstChild.options[0]||{}).value;
+	node.firstChild.value=value||"";
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.txt
new file mode 100644
index 0000000000..86c879c91e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_wp.js","sources":["dhtmlxscheduler_wp.js"],"names":["scheduler","attachEvent","this","_cover","style","height","expanded","document","body","parentNode","scrollHeight","e","form_blocks","select","set_value","node","value","ev","firstChild","options"],"mappings":";;;;;;;;AAQAA,UAAUC,YAAY,aAAa,WAClC,GAAIC,KAAKC,OACR,IACCD,KAAKC,OAAOC,MAAMC,OAASH,KAAKI,SAAW,QAAWC,SAASC,KAAKC,YAAYF,SAASC,MAAME,aAAa,KAC3G,MAAMC,OAIVX,UAAUY,YAAYC,OAAOC,UAAU,SAASC,EAAKC,EAAMC,IACtC,mBAATD,IAAkC,KAAVA,KAClCA,GAASD,EAAKG,WAAWC,QAAQ,QAAQH,OAC1CD,EAAKG,WAAWF,MAAMA,GAAO"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.xml
new file mode 100644
index 0000000000..67e87f3a90
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_wp.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.xml
new file mode 100644
index 0000000000..1bee759143
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_wp.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_wp.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.js
new file mode 100644
index 0000000000..62eda738bc
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.js
@@ -0,0 +1,392 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.config.year_x = 4;
+scheduler.config.year_y = 3;
+scheduler.xy.year_top = 0;
+
+scheduler.templates.year_date = function(date) {
+	return scheduler.date.date_to_str(scheduler.locale.labels.year_tab + " %Y")(date);
+};
+scheduler.templates.year_month = scheduler.date.date_to_str("%F");
+scheduler.templates.year_scale_date = scheduler.date.date_to_str("%D");
+scheduler.templates.year_tooltip = function(s, e, ev) {
+	return ev.text;
+};
+
+(function() {
+	var is_year_mode = function() {
+		return scheduler._mode == "year";
+	};
+
+	scheduler.dblclick_dhx_month_head = function(e) {
+		if (is_year_mode()) {
+			var t = (e.target || e.srcElement);
+			if (t.parentNode.className.indexOf("dhx_before") != -1 || t.parentNode.className.indexOf("dhx_after") != -1) return false;
+			var start = this.templates.xml_date(t.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("date"));
+			start.setDate(parseInt(t.innerHTML, 10));
+			var end = this.date.add(start, 1, "day");
+			if (!this.config.readonly && this.config.dblclick_create)
+				this.addEventNow(start.valueOf(), end.valueOf(), e);
+		}
+	};
+
+	var chid = scheduler.changeEventId;
+	scheduler.changeEventId = function() {
+		chid.apply(this, arguments);
+		if (is_year_mode())
+			this.year_view(true);
+	};
+
+
+	var old = scheduler.render_data;
+	var to_attr = scheduler.date.date_to_str("%Y/%m/%d");
+	var from_attr = scheduler.date.str_to_date("%Y/%m/%d");
+	scheduler.render_data = function(evs) {
+		if (!is_year_mode()) return old.apply(this, arguments);
+		for (var i = 0; i < evs.length; i++)
+			this._year_render_event(evs[i]);
+	};
+
+	var clear = scheduler.clear_view;
+	scheduler.clear_view = function() {
+		if (!is_year_mode()) return clear.apply(this, arguments);
+		var dates = scheduler._year_marked_cells,
+			div = null;
+		for (var date in dates) {
+			if (dates.hasOwnProperty(date)) {
+				div = dates[date];
+				div.className = "dhx_month_head";
+				div.setAttribute("date", "");
+			}
+		}
+		scheduler._year_marked_cells = {};
+	};
+
+	scheduler._hideToolTip = function() {
+		if (this._tooltip) {
+			this._tooltip.style.display = "none";
+			this._tooltip.date = new Date(9999, 1, 1);
+		}
+	};
+
+	scheduler._showToolTip = function(date, pos, e, src) {
+		if (this._tooltip) {
+			if (this._tooltip.date.valueOf() == date.valueOf()) return;
+			this._tooltip.innerHTML = "";
+		} else {
+			var t = this._tooltip = document.createElement("DIV");
+			t.className = "dhx_year_tooltip";
+			document.body.appendChild(t);
+			t.onclick = scheduler._click.dhx_cal_data;
+		}
+		var evs = this.getEvents(date, this.date.add(date, 1, "day"));
+		var html = "";
+
+		for (var i = 0; i < evs.length; i++) {
+			var ev = evs[i];
+			if(!this.filter_event(ev.id, ev))
+				continue;
+
+			var bg_color = (ev.color ? ("background:" + ev.color + ";") : "");
+			var color = (ev.textColor ? ("color:" + ev.textColor + ";") : "");
+
+			html += "<div class='dhx_tooltip_line' style='" + bg_color + "" + color + "' event_id='" + evs[i].id + "'>";
+			html += "<div class='dhx_tooltip_date' style='" + bg_color + "" + color + "'>" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : "") + "</div>";
+			html += "<div class='dhx_event_icon icon_details'>&nbsp;</div>";
+			html += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + "</div>";
+		}
+
+		this._tooltip.style.display = "";
+		this._tooltip.style.top = "0px";
+
+
+		if (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)
+			this._tooltip.style.left = pos.left - this._tooltip.offsetWidth + "px";
+		else
+			this._tooltip.style.left = pos.left + src.offsetWidth + "px";
+
+		this._tooltip.date = date;
+		this._tooltip.innerHTML = html;
+
+		if (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)
+			this._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + "px";
+		else
+			this._tooltip.style.top = pos.top + "px";
+	};
+
+	scheduler._year_view_tooltip_handler = function(e){
+		if (!is_year_mode()) return;
+
+		var e = e || event;
+		var src = e.target || e.srcElement;
+		if (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)
+			src = src.parentNode;
+		if ((src.className || "").indexOf("dhx_year_event") != -1)
+			scheduler._showToolTip(from_attr(src.getAttribute("date")), getOffset(src), e, src);
+		else
+			scheduler._hideToolTip();
+	};
+	scheduler._init_year_tooltip = function() {
+		scheduler._detachDomEvent(scheduler._els["dhx_cal_data"][0], "mouseover", scheduler._year_view_tooltip_handler);
+		dhtmlxEvent(scheduler._els["dhx_cal_data"][0], "mouseover", scheduler._year_view_tooltip_handler);
+	};
+
+	scheduler.attachEvent("onSchedulerResize", function() {
+		if (is_year_mode()) {
+			this.year_view(true);
+			return false;
+		}
+		return true;
+	});
+	scheduler._get_year_cell = function(d) {
+		//there can be more than 1 year in view
+		//year can start not from January
+		var m = d.getMonth() + 12 * (d.getFullYear() - this._min_date.getFullYear()) - this.week_starts._month;
+		var t = this._els["dhx_cal_data"][0].childNodes[m];
+		var d = this.week_starts[m] + d.getDate() - 1;
+
+
+		return t.childNodes[2].firstChild.rows[Math.floor(d / 7)].cells[d % 7].firstChild;
+	};
+
+	scheduler._year_marked_cells = {};
+	scheduler._mark_year_date = function(d, ev) {
+		var date = to_attr(d);
+		var c = this._get_year_cell(d);
+		var ev_class = this.templates.event_class(ev.start_date, ev.end_date, ev);
+		if (!scheduler._year_marked_cells[date]) {
+			c.className = "dhx_month_head dhx_year_event";
+			c.setAttribute("date", date);
+			scheduler._year_marked_cells[date] = c;
+		}
+		c.className += (ev_class) ? (" "+ev_class) : "";
+	};
+	scheduler._unmark_year_date = function(d) {
+		this._get_year_cell(d).className = "dhx_month_head";
+	};
+	scheduler._year_render_event = function(ev) {
+		var d = ev.start_date;
+		if (d.valueOf() < this._min_date.valueOf())
+			d = this._min_date;
+		else d = this.date.date_part(new Date(d));
+
+		while (d < ev.end_date) {
+			this._mark_year_date(d, ev);
+			d = this.date.add(d, 1, "day");
+			if (d.valueOf() >= this._max_date.valueOf())
+				return;
+		}
+	};
+
+	scheduler.year_view = function(mode) {
+		var temp;
+		if (mode) {
+			temp = scheduler.xy.scale_height;
+			scheduler.xy.scale_height = -1;
+		}
+
+		scheduler._els["dhx_cal_header"][0].style.display = mode ? "none" : "";
+		scheduler.set_sizes();
+
+		if (mode)
+			scheduler.xy.scale_height = temp;
+
+
+		scheduler._table_view = mode;
+		if (this._load_mode && this._load()) return;
+
+		if (mode) {
+			scheduler._init_year_tooltip();
+			scheduler._reset_year_scale();
+			if (scheduler._load_mode && scheduler._load()){
+				scheduler._render_wait = true;
+				return;
+			}
+			scheduler.render_view_data();
+		} else {
+			scheduler._hideToolTip();
+		}
+	};
+	scheduler._reset_year_scale = function() {
+		this._cols = [];
+		this._colsS = {};
+		var week_starts = []; //start day of first week in each month
+		var b = this._els["dhx_cal_data"][0];
+
+		var c = this.config;
+		b.scrollTop = 0; //fix flickering in FF
+		b.innerHTML = "";
+
+		var dx = Math.floor(parseInt(b.style.width) / c.year_x);
+		var dy = Math.floor((parseInt(b.style.height) - scheduler.xy.year_top) / c.year_y);
+		if (dy < 190) {
+			dy = 190;
+			dx = Math.floor((parseInt(b.style.width) - scheduler.xy.scroll_width) / c.year_x);
+		}
+
+		var summ = dx - 11;
+		var left = 0;
+		var week_template = document.createElement("div");
+		var dummy_date = this.date.week_start(scheduler._currentDate());
+		for (var i = 0; i < 7; i++) {
+			this._cols[i] = Math.floor(summ / (7 - i));
+			this._render_x_header(i, left, dummy_date, week_template);
+			dummy_date = this.date.add(dummy_date, 1, "day");
+			summ -= this._cols[i];
+			left += this._cols[i];
+		}
+		week_template.lastChild.className += " dhx_scale_bar_last";
+
+		var sd = this.date[this._mode + "_start"](this.date.copy(this._date));
+		var ssd = sd;
+		var d = null;
+		for (var i = 0; i < c.year_y; i++)
+			for (var j = 0; j < c.year_x; j++) {
+				d = document.createElement("DIV");
+				d.style.cssText = "position:absolute;";
+				d.setAttribute("date", this.templates.xml_format(sd));
+				d.innerHTML = "<div class='dhx_year_month'></div><div class='dhx_year_week'>" + week_template.innerHTML + "</div><div class='dhx_year_body'></div>";
+				d.childNodes[0].innerHTML = this.templates.year_month(sd);
+
+				var dd = this.date.week_start(sd);
+				var ed = this._reset_month_scale(d.childNodes[2], sd, dd);
+
+				var r = d.childNodes[2].firstChild.rows;
+				for (var k=r.length; k<6; k++) {
+					r[0].parentNode.appendChild(r[0].cloneNode(true));
+					for (var ri= 0, len = r[k].childNodes.length; ri < len; ri++) {
+					   r[k].childNodes[ri].className = "dhx_after";
+					   r[k].childNodes[ri].firstChild.innerHTML = scheduler.templates.month_day(ed);
+					   ed = scheduler.date.add(ed,1,"day");
+					}
+				}
+				b.appendChild(d);
+
+				d.childNodes[1].style.height = d.childNodes[1].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)
+				var dt = Math.round((dy - 190) / 2);
+				d.style.marginTop = dt + "px";
+				this.set_xy(d, dx - 10, dy - dt - 10, dx * j + 5, dy * i + 5 + scheduler.xy.year_top);
+
+				week_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;
+				sd = this.date.add(sd, 1, "month");
+
+			}
+		this._els["dhx_cal_date"][0].innerHTML = this.templates[this._mode + "_date"](ssd, sd, this._mode);
+		this.week_starts = week_starts;
+		week_starts._month = ssd.getMonth();
+		this._min_date = ssd;
+		this._max_date = sd;
+	};
+
+	var getActionData = scheduler.getActionData;
+	scheduler.getActionData = function(n_ev) {
+		if(!is_year_mode())
+			return getActionData.apply(scheduler, arguments);
+
+		var trg = n_ev?n_ev.target:event.srcElement;
+		var date = scheduler._get_year_month_date(trg);
+
+		var day = scheduler._get_year_month_cell(trg);
+		var pos = scheduler._get_year_day_indexes(day);
+
+		if(pos && date){
+			date = scheduler.date.add(date, pos.week, "week");
+			date = scheduler.date.add(date, pos.day, "day");
+		}else{
+			date = null;
+		}
+
+		return {
+			date:date,
+			section:null
+		};
+
+	};
+	scheduler._get_year_day_indexes = function(targetCell){
+		var month = scheduler._get_year_el_node(targetCell, this._locate_year_month_table);
+		if(!month)
+			return null;
+
+		var week = 0, day = 0;
+		for(var week = 0, weeks = month.rows.length; week < weeks;week ++){
+			var w = month.rows[week].getElementsByTagName("td");
+			for(var day = 0, days = w.length; day < days; day++){
+				if(w[day] == targetCell)
+					break;
+			}
+			if(day < days)
+				break;
+		}
+
+		if(week < weeks)
+			return {day:day, week:week};
+		else
+			return null;
+	};
+	scheduler._get_year_month_date = function (node){
+		var node = scheduler._get_year_el_node(node, scheduler._locate_year_month_root);
+		if(!node)
+			return null;
+
+		var date = node.getAttribute("date");
+		if(!date)
+			return null;
+
+		return scheduler.date.week_start(scheduler.templates.xml_date(date));
+	};
+	scheduler._locate_year_month_day = function(n){
+		return n.className && n.className.indexOf("dhx_year_event") != -1 && n.hasAttribute && n.hasAttribute("date");
+	};
+
+	var locateEvent = scheduler._locate_event;
+	scheduler._locate_event = function(node) {
+		var id = locateEvent.apply(scheduler, arguments);
+		if(!id){
+			var day = scheduler._get_year_el_node(node, scheduler._locate_year_month_day);
+
+			if(!day || !day.hasAttribute("date")) return null;
+
+			var dat = scheduler.templates.xml_date(day.getAttribute("date"));
+			var evs = scheduler.getEvents(dat, scheduler.date.add(dat, 1, "day"));
+			if(!evs.length) return null;
+
+			//can be multiple events in the cell, return any single one
+			id = evs[0].id;
+		}
+		return id;
+	};
+	scheduler._locate_year_month_cell = function(n){
+		return n.nodeName.toLowerCase() == "td";
+	};
+	scheduler._locate_year_month_table = function(n){
+		return n.nodeName.toLowerCase() == "table";
+	};
+	scheduler._locate_year_month_root = function(n){
+		return n.hasAttribute && n.hasAttribute("date");
+	};
+
+	scheduler._get_year_month_cell = function(node){
+		return this._get_year_el_node(node, this._locate_year_month_cell);
+	};
+
+	scheduler._get_year_month_table = function(node){
+		return this._get_year_el_node (node, this._locate_year_month_table);
+	};
+	scheduler._get_year_month_root = function(node){
+		return this._get_year_el_node(this._get_year_month_table(node), this._locate_year_month_root);
+	};
+	scheduler._get_year_el_node = function(node, condition){
+		while(node && !condition(node)){
+			node = node.parentNode;
+		}
+		return node;
+	};
+
+
+})();
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.txt
new file mode 100644
index 0000000000..0df7c9d0d0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"dhtmlxscheduler_year_view.js","sources":["dhtmlxscheduler_year_view.js"],"names":["scheduler","config","year_x","year_y","xy","year_top","templates","year_date","date","date_to_str","locale","labels","year_tab","year_month","year_scale_date","year_tooltip","s","e","ev","text","is_year_mode","_mode","dblclick_dhx_month_head","t","target","srcElement","parentNode","className","indexOf","start","this","xml_date","getAttribute","setDate","parseInt","innerHTML","end","add","readonly","dblclick_create","addEventNow","valueOf","chid","changeEventId","apply","arguments","year_view","old","render_data","to_attr","from_attr","str_to_date","evs","i","length","_year_render_event","clear","clear_view","dates","_year_marked_cells","div","hasOwnProperty","setAttribute","_hideToolTip","_tooltip","style","display","Date","_showToolTip","pos","src","document","createElement","body","appendChild","onclick","_click","dhx_cal_data","getEvents","html","filter_event","id","bg_color","color","textColor","_timed","event_date","start_date","end_date","top","offsetWidth","left","offsetHeight","_year_view_tooltip_handler","event","tagName","toLowerCase","getOffset","_init_year_tooltip","_detachDomEvent","_els","dhtmlxEvent","attachEvent","_get_year_cell","d","m","getMonth","getFullYear","_min_date","week_starts","_month","childNodes","getDate","firstChild","rows","Math","floor","cells","_mark_year_date","c","ev_class","event_class","_unmark_year_date","date_part","_max_date","mode","temp","scale_height","set_sizes","_table_view","_load_mode","_load","_reset_year_scale","_render_wait","render_view_data","_cols","_colsS","b","scrollTop","dx","width","dy","height","scroll_width","summ","week_template","dummy_date","week_start","_currentDate","_render_x_header","lastChild","sd","copy","_date","ssd","j","cssText","xml_format","dd","ed","_reset_month_scale","r","k","cloneNode","ri","len","month_day","dt","round","marginTop","set_xy","getDay","start_on_monday","getActionData","n_ev","trg","_get_year_month_date","day","_get_year_month_cell","_get_year_day_indexes","week","section","targetCell","month","_get_year_el_node","_locate_year_month_table","weeks","w","getElementsByTagName","days","node","_locate_year_month_root","_locate_year_month_day","n","hasAttribute","locateEvent","_locate_event","dat","_locate_year_month_cell","nodeName","_get_year_month_table","_get_year_month_root","condition"],"mappings":"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"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.xml
new file mode 100644
index 0000000000..dbe678d453
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_year_view.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.xml
new file mode 100644
index 0000000000..4870d48ae3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/ext/dhtmlxscheduler_year_view.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_year_view.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale.xml
new file mode 100644
index 0000000000..c319b996ac
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>locale</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.js
new file mode 100644
index 0000000000..2b753d9693
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.js
@@ -0,0 +1,53 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["كانون الثاني", "شباط", "آذار", "نيسان", "أيار", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"],
+		month_short: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
+		day_full: ["الأحد", "الأثنين", "ألثلاثاء", "الأربعاء", "ألحميس", "ألجمعة", "السبت"],
+		day_short: ["احد", "اثنين", "ثلاثاء", "اربعاء", "خميس", "جمعة", "سبت"]
+	},
+	labels: {
+		dhx_cal_today_button: "اليوم",
+		day_tab: "يوم",
+		week_tab: "أسبوع",
+		month_tab: "شهر",
+		new_event: "حدث جديد",
+		icon_save: "اخزن",
+		icon_cancel: "الغاء",
+		icon_details: "تفاصيل",
+		icon_edit: "تحرير",
+		icon_delete: "حذف",
+		confirm_closing: "التغييرات سوف تضيع, هل انت متأكد؟", //Your changes will be lost, are your sure ?
+		confirm_deleting: "الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟",
+		section_description: "الوصف",
+		section_time: "الفترة الزمنية",
+		full_day: "طوال اليوم",
+
+		confirm_recurring: "هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟",
+		section_recurring: "تكرار الحدث",
+		button_recurring: "تعطيل",
+		button_recurring_open: "تمكين",
+		button_edit_series: "تحرير سلسلة",
+		button_edit_occurrence: "تعديل نسخة",
+
+		/*grid view extension*/
+		grid_tab: "جدول",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.txt
new file mode 100644
index 0000000000..c8d977a9b7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_ar.js","sources":["locale_ar.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,eAAgB,OAAQ,OAAQ,QAAS,OAAQ,SAAU,OAAQ,KAAM,QAAS,cAAe,eAAgB,eAC9HC,aAAc,QAAS,SAAU,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,UACnHC,UAAW,QAAS,UAAW,WAAY,WAAY,SAAU,SAAU,SAC3EC,WAAY,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,QAEjEC,QACCC,qBAAsB,QACtBC,QAAS,MACTC,SAAU,QACVC,UAAW,MACXC,UAAW;AACXC,UAAW,OACXC,YAAa,QACbC,aAAc,SACdC,UAAW,QACXC,YAAa,MACbC,gBAAiB,oCACjBC,iBAAkB,0CAClBC,oBAAqB,QACrBC,aAAc,iBACdC,SAAU,aAEVC,kBAAmB,kDACnBC,kBAAmB,cACnBC,iBAAkB,QAClBC,sBAAuB,QACvBC,mBAAoB,cACpBC,uBAAwB;AAGxBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.xml
new file mode 100644
index 0000000000..1bbaa97427
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ar.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.xml
new file mode 100644
index 0000000000..a3c34ff376
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ar.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ar.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.js
new file mode 100644
index 0000000000..7961422a7d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.js
@@ -0,0 +1,65 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+/*
+ Translation by Sofya Morozova
+ */
+scheduler.locale = {
+	date: {
+		month_full: ["Студзень", "Люты", "Сакавік", "Красавік", "Maй", "Чэрвень", "Ліпень", "Жнівень", "Верасень", "Кастрычнік", "Лістапад", "Снежань"],
+		month_short: ["Студз", "Лют", "Сак", "Крас", "Maй", "Чэр", "Ліп", "Жнів", "Вер", "Каст", "Ліст", "Снеж"],
+		day_full: [ "Нядзеля", "Панядзелак", "Аўторак", "Серада", "Чацвер", "Пятніца", "Субота"],
+		day_short: ["Нд", "Пн", "Аўт", "Ср", "Чцв", "Пт", "Сб"]
+	},
+	labels: {
+		dhx_cal_today_button: "Сёння",
+		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: "Рэдагаваць асобнік",
+
+		/*agenda view extension*/
+		agenda_tab: "Спіс",
+		date: "Дата",
+		description: "Апісанне",
+
+		/*year view extension*/
+		year_tab: "Год",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Спіс",
+
+		/*grid view extension*/
+		grid_tab: "Спic",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.txt
new file mode 100644
index 0000000000..0c0dff7418
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_be.js","sources":["locale_be.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAWAA,UAAUC,QACTC,MACCC,YAAa,WAAY,OAAQ,UAAW,WAAY,MAAO,UAAW,SAAU,UAAW,WAAY,aAAc,WAAY,WACrIC,aAAc,QAAS,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,OAAQ,QACjGC,UAAY,UAAW,aAAc,UAAW,SAAU,SAAU,UAAW,UAC/EC,WAAY,KAAM,KAAM,MAAO,KAAM,MAAO,KAAM,OAEnDC,QACCC,qBAAsB,QACtBC,QAAS,QACTC,SAAU,UACVC,UAAW,QACXC,UAAW,eACXC,UAAW;AACXC,YAAa,WACbC,aAAc,SACdC,UAAW,UACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,gDAClBC,oBAAqB,WACrBC,aAAc,cACdC,SAAU,cAEVC,kBAAmB,mDACnBC,kBAAmB,aACnBC,iBAAkB,YAClBC,sBAAuB,WACvBC,mBAAoB,mBACpBC,uBAAwB,qBAGxBC,WAAY;AACZ3B,KAAM,OACN4B,YAAa,WAGbC,SAAU,MAGVC,gBAAiB,OAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.xml
new file mode 100644
index 0000000000..05a7366b24
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_be.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.xml
new file mode 100644
index 0000000000..c10face70b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_be.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_be.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.js
new file mode 100644
index 0000000000..a9e8b89a1c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.js
@@ -0,0 +1,65 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+/*
+ @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com
+ */
+scheduler.locale = {
+	date: {
+		month_full: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
+		month_short: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"],
+		day_full: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"],
+		day_short: ["Dg", "Dl", "Dm", "Dc", "Dj", "Dv", "Ds"]
+	},
+	labels: {
+		dhx_cal_today_button: "Hui",
+		day_tab: "Dia",
+		week_tab: "Setmana",
+		month_tab: "Mes",
+		new_event: "Nou esdeveniment",
+		icon_save: "Guardar",
+		icon_cancel: "Cancel·lar",
+		icon_details: "Detalls",
+		icon_edit: "Editar",
+		icon_delete: "Esborrar",
+		confirm_closing: "", //"Els seus canvis es perdràn, continuar ?"
+		confirm_deleting: "L'esdeveniment s'esborrarà definitivament, continuar ?",
+		section_description: "Descripció",
+		section_time: "Periode de temps",
+		full_day: "Tot el dia",
+
+		confirm_recurring: "¿Desitja modificar el conjunt d'esdeveniments repetits?",
+		section_recurring: "Repeteixca l'esdeveniment",
+		button_recurring: "Impedit",
+		button_recurring_open: "Permés",
+		button_edit_series: "Edit sèrie",
+		button_edit_occurrence: "Edita Instància",
+
+		/*agenda view extension*/
+		agenda_tab: "Agenda",
+		date: "Data",
+		description: "Descripció",
+
+		/*year view extension*/
+		year_tab: "Any",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Taula",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.txt
new file mode 100644
index 0000000000..f49ebf7a12
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_ca.js","sources":["locale_ca.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAWAA,UAAUC,QACTC,MACCC,YAAa,QAAS,SAAU,OAAQ,QAAS,OAAQ,OAAQ,SAAU,QAAS,WAAY,UAAW,WAAY,YACvHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,WAAY,UAAW,UAAW,WAAY,SAAU,YAAa,YAChFC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,MACtBC,QAAS,MACTC,SAAU,UACVC,UAAW,MACXC,UAAW,mBACXC,UAAW,UACXC,YAAa;AACbC,aAAc,UACdC,UAAW,SACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,yDAClBC,oBAAqB,aACrBC,aAAc,mBACdC,SAAU,aAEVC,kBAAmB,0DACnBC,kBAAmB,4BACnBC,iBAAkB,UAClBC,sBAAuB,SACvBC,mBAAoB,aACpBC,uBAAwB,kBAGxBC,WAAY;AACZ3B,KAAM,OACN4B,YAAa,aAGbC,SAAU,MAGVC,gBAAiB,SAGjBC,SAAU,QAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.xml
new file mode 100644
index 0000000000..e1cd1be132
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ca.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.xml
new file mode 100644
index 0000000000..9745db2656
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ca.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ca.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.js
new file mode 100644
index 0000000000..c078324cc0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.js
@@ -0,0 +1,70 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+/*
+Translation by FreezeSoul
+*/
+scheduler.config.day_date="%M %dæ—¥ %D";
+scheduler.config.default_date="%Yå¹´ %M %dæ—¥";
+scheduler.config.month_date="%Yå¹´ %M";
+
+scheduler.locale={
+	date: {
+		month_full: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+		month_short: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+		day_full: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
+		day_short: ["日", "一", "二", "三", "四", "五", "六"]
+	},
+	labels: {
+		dhx_cal_today_button: "今天",
+		day_tab: "æ—¥",
+		week_tab: "周",
+		month_tab: "月",
+		new_event: "新建日程",
+		icon_save: "保存",
+		icon_cancel: "关闭",
+		icon_details: "详细",
+		icon_edit: "编辑",
+		icon_delete: "删除",
+		confirm_closing: "请确认是否撤销修改!", //Your changes will be lost, are your sure?
+		confirm_deleting: "是否删除日程?",
+		section_description: "描述",
+		section_time: "时间范围",
+		full_day: "整天",
+
+		confirm_recurring:"请确认是否将日程设为重复模式?",
+		section_recurring:"重复周期",
+		button_recurring:"禁用",
+		button_recurring_open:"启用",
+		button_edit_series: "编辑系列",
+		button_edit_occurrence: "编辑实例",
+		
+		/*agenda view extension*/
+		agenda_tab:"议程",
+		date:"日期",
+		description:"说明",
+		
+		/*year view extension*/
+		year_tab:"今年",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "议程",
+
+		/*grid view extension*/
+		grid_tab:"电网",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.txt
new file mode 100644
index 0000000000..6a873bb478
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_cn.js","sources":["locale_cn.js"],"names":["scheduler","config","day_date","default_date","month_date","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAWAA,UAAUC,OAAOC,SAAS,YAC1BF,UAAUC,OAAOE,aAAa,aAC9BH,UAAUC,OAAOG,WAAW,SAE5BJ,UAAUK,QACTC,MACCC,YAAa,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,OAChFC,aAAc,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAClFC,UAAW,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACrDC,WAAY,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAE3CC,QACCC,qBAAsB,KACtBC,QAAS,IACTC,SAAU,IACVC,UAAW,IACXC,UAAW,OACXC,UAAW,KACXC,YAAa;AACbC,aAAc,KACdC,UAAW,KACXC,YAAa,KACbC,gBAAiB,aACjBC,iBAAkB,UAClBC,oBAAqB,KACrBC,aAAc,OACdC,SAAU,KAEVC,kBAAkB,kBAClBC,kBAAkB,OAClBC,iBAAiB,KACjBC,sBAAsB,KACtBC,mBAAoB,OACpBC,uBAAwB,OAGxBC,WAAW,KACX3B,KAAK,KACL4B,YAAY,KAGZC,SAAS,KAGTC,gBAAiB,KAGjBC,SAAS,KAGTC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.xml
new file mode 100644
index 0000000000..7411d622f5
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_cn.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.xml
new file mode 100644
index 0000000000..1596bb3e7a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cn.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_cn.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.js
new file mode 100644
index 0000000000..0178c1d23e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
+		month_short: ["Led", "Ún", "Bře", "Dub", "Kvě", "Čer", "Čec", "Srp", "Září", "Říj", "List", "Pro"],
+		day_full: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"],
+		day_short: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"]
+	},
+	labels: {
+		dhx_cal_today_button: "Dnes",
+		day_tab: "Den",
+		week_tab: "Týden",
+		month_tab: "Měsíc",
+		new_event: "Nová událost",
+		icon_save: "Uložit",
+		icon_cancel: "Zpět",
+		icon_details: "Detail",
+		icon_edit: "Edituj",
+		icon_delete: "Smazat",
+		confirm_closing: "", //Vaše změny budou ztraceny, opravdu ?
+		confirm_deleting: "Událost bude trvale smazána, opravdu?",
+		section_description: "Poznámky",
+		section_time: "Doba platnosti",
+
+		/*recurring events*/
+		confirm_recurring: "Přejete si upravit celou řadu opakovaných událostí?",
+		section_recurring: "Opakování události",
+		button_recurring: "Vypnuto",
+		button_recurring_open: "Zapnuto",
+		button_edit_series: "Edit series",
+		button_edit_occurrence: "Upravit instance",
+
+		/*agenda view extension*/
+		agenda_tab: "Program",
+		date: "Datum",
+		description: "Poznámka",
+
+		/*year view extension*/
+		year_tab: "Rok",
+		full_day: "Full day",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Program",
+
+		/*grid view extension*/
+		grid_tab: "Mřížka",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.txt
new file mode 100644
index 0000000000..3bc21458f9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_cs.js","sources":["locale_cs.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","agenda_tab","description","year_tab","full_day","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,QAAS,OAAQ,SAAU,QAAS,SAAU,SAAU,WAAY,QAAS,OAAQ,QAAS,WAAY,YACvHC,aAAc,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,OAC5FC,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,QAAS,UACvEC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,OACtBC,QAAS,MACTC,SAAU,QACVC,UAAW,QACXC,UAAW,eACXC,UAAW,SACXC,YAAa,OACbC,aAAc;AACdC,UAAW,SACXC,YAAa,SACbC,gBAAiB,GACjBC,iBAAkB,wCAClBC,oBAAqB,WACrBC,aAAc,iBAGdC,kBAAmB,sDACnBC,kBAAmB,qBACnBC,iBAAkB,UAClBC,sBAAuB,UACvBC,mBAAoB,cACpBC,uBAAwB,mBAGxBC,WAAY,UACZ1B,KAAM,QACN2B,YAAa,WAGbC,SAAU,MACVC,SAAU;AAGVC,gBAAiB,UAGjBC,SAAU,SAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.xml
new file mode 100644
index 0000000000..b203020801
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_cs.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.xml
new file mode 100644
index 0000000000..fa6387ddd1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_cs.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_cs.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.js
new file mode 100644
index 0000000000..80a3fd12c3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.js
@@ -0,0 +1,63 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
+		month_short: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		day_full: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"],
+		day_short: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"]
+	},
+	labels: {
+		dhx_cal_today_button: "Idag",
+		day_tab: "Dag",
+		week_tab: "Uge",
+		month_tab: "MÃ¥ned",
+		new_event: "Ny begivenhed",
+		icon_save: "Gem",
+		icon_cancel: "Fortryd",
+		icon_details: "Detaljer",
+		icon_edit: "Tilret",
+		icon_delete: "Slet",
+		confirm_closing: "Dine rettelser vil gå tabt.. Er dy sikker?", //Your changes will be lost, are your sure ?
+		confirm_deleting: "Bigivenheden vil blive slettet permanent. Er du sikker?",
+		section_description: "Beskrivelse",
+		section_time: "Tidsperiode",
+
+		/*recurring events*/
+		confirm_recurring: "Vil du tilrette hele serien af gentagne begivenheder?",
+		section_recurring: "Gentag begivenhed",
+		button_recurring: "Frakoblet",
+		button_recurring_open: "Tilkoblet",
+		button_edit_series: "Rediger serien",
+		button_edit_occurrence: "Rediger en kopi",
+
+		/*agenda view extension*/
+		agenda_tab: "Dagsorden",
+		date: "Dato",
+		description: "Beskrivelse",
+
+		/*year view extension*/
+		year_tab: "Ã…r",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Dagsorden",
+
+		/*grid view extension*/
+		grid_tab: "Grid",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.txt
new file mode 100644
index 0000000000..aaac1f55f9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_da.js","sources":["locale_da.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,UAAW,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACzHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,UACzEC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,OACtBC,QAAS,MACTC,SAAU,MACVC,UAAW,QACXC,UAAW,gBACXC,UAAW,MACXC,YAAa;AACbC,aAAc,WACdC,UAAW,SACXC,YAAa,OACbC,gBAAiB,6CACjBC,iBAAkB,0DAClBC,oBAAqB,cACrBC,aAAc,cAGdC,kBAAmB,wDACnBC,kBAAmB,oBACnBC,iBAAkB,YAClBC,sBAAuB,YACvBC,mBAAoB,iBACpBC,uBAAwB;AAGxBC,WAAY,YACZ1B,KAAM,OACN2B,YAAa,cAGbC,SAAU,KAGVC,gBAAiB,YAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.xml
new file mode 100644
index 0000000000..01259587ed
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_da.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.xml
new file mode 100644
index 0000000000..1ae85db703
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_da.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_da.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.js
new file mode 100644
index 0000000000..d25ff6a6fe
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.js
@@ -0,0 +1,63 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: [" Januar", " Februar", " März ", " April", " Mai", " Juni", " Juli", " August", " September ", " Oktober", " November ", " Dezember"],
+		month_short: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
+		day_full: [ "Sonntag", "Montag", "Dienstag", " Mittwoch", " Donnerstag", "Freitag", "Samstag"],
+		day_short: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]
+	},
+	labels: {
+		dhx_cal_today_button: "Heute",
+		day_tab: "Tag",
+		week_tab: "Woche",
+		month_tab: "Monat",
+		new_event: "neuer Eintrag",
+		icon_save: "Speichern",
+		icon_cancel: "Abbrechen",
+		icon_details: "Details",
+		icon_edit: "Ändern",
+		icon_delete: "Löschen",
+		confirm_closing: "", //"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? "
+		confirm_deleting: "Der Eintrag wird gelöscht",
+		section_description: "Beschreibung",
+		section_time: "Zeitspanne",
+		full_day: "Ganzer Tag",
+
+		confirm_recurring: "Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?",
+		section_recurring: "Wiederholung",
+		button_recurring: "Aus",
+		button_recurring_open: "An",
+		button_edit_series: "Bearbeiten Sie die Serie",
+		button_edit_occurrence: "Bearbeiten Sie eine Kopie",
+
+		/*agenda view extension*/
+		agenda_tab: "Agenda",
+		date: "Datum",
+		description: "Beschreibung",
+
+		/*year view extension*/
+		year_tab: "Jahre",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Grid",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.txt
new file mode 100644
index 0000000000..771e946607
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_de.js","sources":["locale_de.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,UAAW,WAAY,SAAU,SAAU,OAAQ,QAAS,QAAS,UAAW,cAAe,WAAY,aAAc,aACtIC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAY,UAAW,SAAU,WAAY,YAAa,cAAe,UAAW,WACpFC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,QACtBC,QAAS,MACTC,SAAU,QACVC,UAAW,QACXC,UAAW,gBACXC,UAAW;AACXC,YAAa,YACbC,aAAc,UACdC,UAAW,SACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,4BAClBC,oBAAqB,eACrBC,aAAc,aACdC,SAAU,aAEVC,kBAAmB,yEACnBC,kBAAmB,eACnBC,iBAAkB,MAClBC,sBAAuB,KACvBC,mBAAoB,2BACpBC,uBAAwB;AAGxBC,WAAY,SACZ3B,KAAM,QACN4B,YAAa,eAGbC,SAAU,QAGVC,gBAAiB,SAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.xml
new file mode 100644
index 0000000000..34f33cb08a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_de.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.xml
new file mode 100644
index 0000000000..6768665c25
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_de.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_de.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.js
new file mode 100644
index 0000000000..5a0e994f74
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάϊος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"],
+		month_short: ["ΙΑΝ", "ΦΕΒ", "ΜΑΡ", "ΑΠΡ", "ΜΑΙ", "ΙΟΥΝ", "ΙΟΥΛ", "ΑΥΓ", "ΣΕΠ", "ΟΚΤ", "ΝΟΕ", "ΔΕΚ"],
+		day_full: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Κυριακή"],
+		day_short: ["ΚΥ", "ΔΕ", "ΤΡ", "ΤΕ", "ΠΕ", "ΠΑ", "ΣΑ"]
+	},
+	labels: {
+		dhx_cal_today_button: "Σήμερα",
+		day_tab: "Ημέρα",
+		week_tab: "Εβδομάδα",
+		month_tab: "Μήνας",
+		new_event: "Νέο έργο",
+		icon_save: "Αποθήκευση",
+		icon_cancel: "Άκυρο",
+		icon_details: "Λεπτομέρειες",
+		icon_edit: "Επεξεργασία",
+		icon_delete: "Διαγραφή",
+		confirm_closing: "", //Your changes will be lost, are your sure ?
+		confirm_deleting: "Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;",
+		section_description: "Περιγραφή",
+		section_time: "Χρονική περίοδος",
+		full_day: "Πλήρης Ημέρα",
+
+		/*recurring events*/
+		confirm_recurring: "Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;",
+		section_recurring: "Επαναλαμβανόμενο έργο",
+		button_recurring: "Ανενεργό",
+		button_recurring_open: "Ενεργό",
+		button_edit_series: "Επεξεργαστείτε τη σειρά",
+		button_edit_occurrence: "Επεξεργασία ένα αντίγραφο",
+
+		/*agenda view extension*/
+		agenda_tab: "Ημερήσια Διάταξη",
+		date: "Ημερομηνία",
+		description: "Περιγραφή",
+
+		/*year view extension*/
+		year_tab: "Έτος",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Ημερήσια Διάταξη",
+
+		/*grid view extension*/
+		grid_tab: "Πλέγμα",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.txt
new file mode 100644
index 0000000000..13a8616319
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_el.js","sources":["locale_el.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,aAAc,cAAe,UAAW,WAAY,QAAS,UAAW,UAAW,YAAa,cAAe,YAAa,YAAa,cACtJC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,OAC7FC,UAAW,UAAW,UAAW,QAAS,UAAW,SAAU,YAAa,WAC5EC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,SACtBC,QAAS,QACTC,SAAU,WACVC,UAAW,QACXC,UAAW;AACXC,UAAW,aACXC,YAAa,QACbC,aAAc,eACdC,UAAW,cACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,uDAClBC,oBAAqB,YACrBC,aAAc,mBACdC,SAAU,eAGVC,kBAAmB,2EACnBC,kBAAmB,wBACnBC,iBAAkB,WAClBC,sBAAuB,SACvBC,mBAAoB;AACpBC,uBAAwB,4BAGxBC,WAAY,mBACZ3B,KAAM,aACN4B,YAAa,YAGbC,SAAU,OAGVC,gBAAiB,mBAGjBC,SAAU,SAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.xml
new file mode 100644
index 0000000000..0b53c1e2d4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_el.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.xml
new file mode 100644
index 0000000000..2caf9247f4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_el.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_el.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.js
new file mode 100644
index 0000000000..20cfa7a83f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date:{
+		month_full:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+		month_short:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		day_full:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+		day_short:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
+	},
+	labels:{
+		dhx_cal_today_button:"Today",
+		day_tab:"Day",
+		week_tab:"Week",
+		month_tab:"Month",
+		new_event:"New event",
+		icon_save:"Save",
+		icon_cancel:"Cancel",
+		icon_details:"Details",
+		icon_edit:"Edit",
+		icon_delete:"Delete",
+		confirm_closing:"",//Your changes will be lost, are your sure ?
+		confirm_deleting:"Event will be deleted permanently, are you sure?",
+		section_description:"Description",
+		section_time:"Time period",
+		full_day:"Full day",
+
+		/*recurring events*/
+		confirm_recurring:"Do you want to edit the whole set of repeated events?",
+		section_recurring:"Repeat event",
+		button_recurring:"Disabled",
+		button_recurring_open:"Enabled",
+		button_edit_series: "Edit series",
+		button_edit_occurrence: "Edit occurrence",
+
+		/*agenda view extension*/
+		agenda_tab:"Agenda",
+		date:"Date",
+		description:"Description",
+
+		/*year view extension*/
+		year_tab:"Year",
+
+		/* week agenda extension */
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Grid",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.txt
new file mode 100644
index 0000000000..15a70b86ae
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_en.js","sources":["locale_en.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAY,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC1HC,aAAa,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC1FC,UAAU,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC5EC,WAAW,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEtDC,QACCC,qBAAqB,QACrBC,QAAQ,MACRC,SAAS,OACTC,UAAU,QACVC,UAAU,YACVC,UAAU,OACVC,YAAY;AACZC,aAAa,UACbC,UAAU,OACVC,YAAY,SACZC,gBAAgB,GAChBC,iBAAiB,mDACjBC,oBAAoB,cACpBC,aAAa,cACbC,SAAS,WAGTC,kBAAkB,wDAClBC,kBAAkB,eAClBC,iBAAiB,WACjBC,sBAAsB,UACtBC,mBAAoB,cACpBC,uBAAwB,kBAGxBC,WAAW,SACX3B,KAAK;AACL4B,YAAY,cAGZC,SAAS,OAGTC,gBAAiB,SAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.xml
new file mode 100644
index 0000000000..9c1740b333
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_en.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.xml
new file mode 100644
index 0000000000..52ae442fba
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_en.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_en.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.js
new file mode 100644
index 0000000000..20b40c8baa
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.js
@@ -0,0 +1,65 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+/*
+ @Autor Manuel Fernandez Panzuela - www.mfernandez.es
+ */
+scheduler.locale = {
+	date: {
+		month_full: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
+		month_short: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
+		day_full: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
+		day_short: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"]
+	},
+	labels: {
+		dhx_cal_today_button: "Hoy",
+		day_tab: "Día",
+		week_tab: "Semana",
+		month_tab: "Mes",
+		new_event: "Nuevo evento",
+		icon_save: "Guardar",
+		icon_cancel: "Cancelar",
+		icon_details: "Detalles",
+		icon_edit: "Editar",
+		icon_delete: "Eliminar",
+		confirm_closing: "", //"Sus cambios se perderán, continuar ?"
+		confirm_deleting: "El evento se borrará definitivamente, ¿continuar?",
+		section_description: "Descripción",
+		section_time: "Período",
+		full_day: "Todo el día",
+
+		confirm_recurring: "¿Desea modificar el conjunto de eventos repetidos?",
+		section_recurring: "Repita el evento",
+		button_recurring: "Impedido",
+		button_recurring_open: "Permitido",
+		button_edit_series: "Editar la serie",
+		button_edit_occurrence: "Editar una copia",
+
+		/*agenda view extension*/
+		agenda_tab: "Día",
+		date: "Fecha",
+		description: "Descripción",
+
+		/*year view extension*/
+		year_tab: "Año",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Día",
+
+		/*grid view extension*/
+		grid_tab: "Reja",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.txt
new file mode 100644
index 0000000000..44dc9860e2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_es.js","sources":["locale_es.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAWAA,UAAUC,QACTC,MACCC,YAAa,QAAS,UAAW,QAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,aAAc,UAAW,YAAa,aAC7HC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,UAAW,QAAS,SAAU,YAAa,SAAU,UAAW,UAC3EC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,MACtBC,QAAS,MACTC,SAAU,SACVC,UAAW,MACXC,UAAW,eACXC,UAAW,UACXC,YAAa;AACbC,aAAc,WACdC,UAAW,SACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,oDAClBC,oBAAqB,cACrBC,aAAc,UACdC,SAAU,cAEVC,kBAAmB,qDACnBC,kBAAmB,mBACnBC,iBAAkB,WAClBC,sBAAuB,YACvBC,mBAAoB,kBACpBC,uBAAwB,mBAGxBC,WAAY,MACZ3B,KAAM;AACN4B,YAAa,cAGbC,SAAU,MAGVC,gBAAiB,MAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.xml
new file mode 100644
index 0000000000..67910f7def
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_es.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.xml
new file mode 100644
index 0000000000..cbadbcb117
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_es.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_es.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.js
new file mode 100644
index 0000000000..8fa2eacee7
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kes&auml;kuu", "Hein&auml;kuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"],
+		month_short: ["Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou"],
+		day_full: ["Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"],
+		day_short: ["Su", "Ma", "Ti", "Ke", "To", "Pe", "La"]
+	},
+	labels: {
+		dhx_cal_today_button: "Tänään",
+		day_tab: "Päivä",
+		week_tab: "Viikko",
+		month_tab: "Kuukausi",
+		new_event: "Uusi tapahtuma",
+		icon_save: "Tallenna",
+		icon_cancel: "Peru",
+		icon_details: "Tiedot",
+		icon_edit: "Muokkaa",
+		icon_delete: "Poista",
+		confirm_closing: "", //Your changes will be lost, are your sure ?
+		confirm_deleting: "Haluatko varmasti poistaa tapahtuman?",
+		section_description: "Kuvaus",
+		section_time: "Aikajakso",
+		full_day: "Koko päivä",
+
+		confirm_recurring: "Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?",
+		section_recurring: "Toista tapahtuma",
+		button_recurring: "Ei k&auml;yt&ouml;ss&auml;",
+		button_recurring_open: "K&auml;yt&ouml;ss&auml;",
+		button_edit_series: "Muokkaa sarja",
+		button_edit_occurrence: "Muokkaa kopio",
+
+		/*agenda view extension*/
+		agenda_tab: "Esityslista",
+		date: "Päivämäärä",
+		description: "Kuvaus",
+
+		/*year view extension*/
+		year_tab: "Vuoden",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Esityslista",
+
+		/*grid view extension*/
+		grid_tab: "Ritilä",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.txt
new file mode 100644
index 0000000000..90fb66563a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_fi.js","sources":["locale_fi.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,WAAY,WAAY,YAAa,WAAY,WAAY,eAAgB,gBAAiB,SAAU,UAAW,UAAW,YAAa,YACxJC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,YAAa,YAAa,UAAW,cAAe,UAAW,YAAa,YACvFC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,SACtBC,QAAS,QACTC,SAAU,SACVC,UAAW,WACXC,UAAW;AACXC,UAAW,WACXC,YAAa,OACbC,aAAc,SACdC,UAAW,UACXC,YAAa,SACbC,gBAAiB,GACjBC,iBAAkB,wCAClBC,oBAAqB,SACrBC,aAAc,YACdC,SAAU,aAEVC,kBAAmB,kEACnBC,kBAAmB,mBACnBC,iBAAkB,6BAClBC,sBAAuB,0BACvBC,mBAAoB;AACpBC,uBAAwB,gBAGxBC,WAAY,cACZ3B,KAAM,aACN4B,YAAa,SAGbC,SAAU,SAGVC,gBAAiB,cAGjBC,SAAU,SAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.xml
new file mode 100644
index 0000000000..c80d04ab12
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_fi.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.xml
new file mode 100644
index 0000000000..4f3c77565a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fi.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_fi.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.js
new file mode 100644
index 0000000000..096e526e51
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.js
@@ -0,0 +1,62 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
+		month_short: ["Jan", "Fév", "Mar", "Avr", "Mai", "Juin", "Juil", "Aoû", "Sep", "Oct", "Nov", "Déc"],
+		day_full: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
+		day_short: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]
+	},
+	labels: {
+		dhx_cal_today_button: "Aujourd'hui",
+		day_tab: "Jour",
+		week_tab: "Semaine",
+		month_tab: "Mois",
+		new_event: "Nouvel événement",
+		icon_save: "Enregistrer",
+		icon_cancel: "Annuler",
+		icon_details: "Détails",
+		icon_edit: "Modifier",
+		icon_delete: "Effacer",
+		confirm_closing: "", //Vos modifications seront perdus, êtes-vous sûr ?
+		confirm_deleting: "L'événement sera effacé sans appel, êtes-vous sûr ?",
+		section_description: "Description",
+		section_time: "Période",
+		full_day: "Journée complète",
+
+		confirm_recurring: "Voulez-vous éditer toute une série d'évènements répétés?",
+		section_recurring: "Périodicité",
+		button_recurring: "Désactivé",
+		button_recurring_open: "Activé",
+		button_edit_series: "Modifier la série",
+		button_edit_occurrence: "Modifier une copie",
+
+		/*agenda view extension*/
+		agenda_tab: "Jour",
+		date: "Date",
+		description: "Description",
+
+		/*year view extension*/
+		year_tab: "Année",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Jour",
+
+		/*grid view extension*/
+		grid_tab: "Grille",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.txt
new file mode 100644
index 0000000000..16a5d48caf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_fr.js","sources":["locale_fr.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,UAAW,UAAW,OAAQ,QAAS,MAAO,OAAQ,UAAW,OAAQ,YAAa,UAAW,WAAY,YAC1HC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,OAC7FC,UAAW,WAAY,QAAS,QAAS,WAAY,QAAS,WAAY,UAC1EC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,cACtBC,QAAS,OACTC,SAAU,UACVC,UAAW,OACXC,UAAW,mBACXC,UAAW;AACXC,YAAa,UACbC,aAAc,UACdC,UAAW,WACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,sDAClBC,oBAAqB,cACrBC,aAAc,UACdC,SAAU,mBAEVC,kBAAmB,2DACnBC,kBAAmB,cACnBC,iBAAkB,YAClBC,sBAAuB,SACvBC,mBAAoB,oBACpBC,uBAAwB;AAGxBC,WAAY,OACZ3B,KAAM,OACN4B,YAAa,cAGbC,SAAU,QAGVC,gBAAiB,OAGjBC,SAAU,SAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.xml
new file mode 100644
index 0000000000..361af247b5
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_fr.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.xml
new file mode 100644
index 0000000000..8a7668df44
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_fr.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_fr.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.js
new file mode 100644
index 0000000000..2682341ca9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"],
+		month_short: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"],
+		day_full: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת"],
+		day_short: ["א", "ב", "ג", "ד", "ה", "ו", "ש"]
+	},
+	labels: {
+		dhx_cal_today_button: "היום",
+		day_tab: "יום",
+		week_tab: "שבוע",
+		month_tab: "חודש",
+		new_event: "ארוע חדש",
+		icon_save: "שמור",
+		icon_cancel: "בטל",
+		icon_details: "פרטים",
+		icon_edit: "ערוך",
+		icon_delete: "מחק",
+		confirm_closing: "", //Your changes will be lost, are your sure ?
+		confirm_deleting: "ארוע ימחק סופית.להמשיך?",
+		section_description: "הסבר",
+		section_time: "תקופה",
+
+		confirm_recurring: "האם ברצונך לשנות כל סדרת ארועים מתמשכים?",
+		section_recurring: "להעתיק ארוע",
+		button_recurring: "לא פעיל",
+		button_recurring_open: "פעיל",
+		full_day: "יום שלם",
+		button_edit_series: "ערוך את הסדרה",
+		button_edit_occurrence: "עריכת עותק",
+
+		/*agenda view extension*/
+		agenda_tab: "סדר יום",
+		date: "תאריך",
+		description: "תיאור",
+
+		/*year view extension*/
+		year_tab: "לשנה",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "סדר יום",
+
+		/*grid view extension*/
+		grid_tab: "סורג",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.txt
new file mode 100644
index 0000000000..3a59269e2a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_he.js","sources":["locale_he.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","confirm_recurring","section_recurring","button_recurring","button_recurring_open","full_day","button_edit_series","button_edit_occurrence","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,QAAS,SAAU,MAAO,QAAS,MAAO,OAAQ,OAAQ,SAAU,SAAU,UAAW,SAAU,SAChHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,QAAS,MAAO,QAAS,QAAS,QAAS,OAAQ,OAC9DC,WAAY,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAE3CC,QACCC,qBAAsB,OACtBC,QAAS,MACTC,SAAU,OACVC,UAAW,OACXC,UAAW,WACXC,UAAW,OACXC,YAAa,MACbC,aAAc,QACdC,UAAW,OACXC,YAAa;AACbC,gBAAiB,GACjBC,iBAAkB,0BAClBC,oBAAqB,OACrBC,aAAc,QAEdC,kBAAmB,2CACnBC,kBAAmB,cACnBC,iBAAkB,UAClBC,sBAAuB,OACvBC,SAAU,UACVC,mBAAoB,gBACpBC,uBAAwB,aAGxBC,WAAY,UACZ3B,KAAM,QACN4B,YAAa,QAGbC,SAAU,OAGVC,gBAAiB,UAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa;AAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.xml
new file mode 100644
index 0000000000..70aa54d857
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_he.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.xml
new file mode 100644
index 0000000000..aa61ed2c33
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_he.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_he.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.js
new file mode 100644
index 0000000000..a0df80713e
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.js
@@ -0,0 +1,58 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"],
+		month_short: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		day_full: ["Vasárnap", "Hétfõ", "Kedd", "Szerda", "Csütörtök", "Péntek", "szombat"],
+		day_short: ["Va", "Hé", "Ke", "Sze", "Csü", "Pé", "Szo"]
+	},
+	labels: {
+		dhx_cal_today_button: "Ma",
+		day_tab: "Nap",
+		week_tab: "Hét",
+		month_tab: "Hónap",
+		new_event: "Új esemény",
+		icon_save: "Mentés",
+		icon_cancel: "Mégse",
+		icon_details: "Részletek",
+		icon_edit: "Szerkesztés",
+		icon_delete: "Törlés",
+		confirm_closing: "", //A változások elvesznek, biztosan folytatja? "
+		confirm_deleting: "Az esemény törölve lesz, biztosan folytatja?",
+		section_description: "Leírás",
+		section_time: "Idõszak",
+		full_day: "Egesz napos",
+
+		/*ismétlõdõ események*/
+		confirm_recurring: "Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?",
+		section_recurring: "Esemény ismétlése",
+		button_recurring: "Tiltás",
+		button_recurring_open: "Engedélyezés",
+		button_edit_series: "Edit series",
+		button_edit_occurrence: "Szerkesztés bíróság",
+
+		/*napirendi nézet*/
+		agenda_tab: "Napirend",
+		date: "Dátum",
+		description: "Leírás",
+
+		/*éves nézet*/
+		year_tab: "Év",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.txt
new file mode 100644
index 0000000000..7e1aec40f2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_hu.js","sources":["locale_hu.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,UAAW,UAAW,UAAW,QAAS,SAAU,SAAU,YAAa,aAAc,UAAW,WAAY,YACvIC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,WAAY,QAAS,OAAQ,SAAU,YAAa,SAAU,WACzEC,WAAY,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,QAEnDC,QACCC,qBAAsB,KACtBC,QAAS,MACTC,SAAU,MACVC,UAAW,QACXC,UAAW,aACXC,UAAW,SACXC,YAAa;AACbC,aAAc,YACdC,UAAW,cACXC,YAAa,SACbC,gBAAiB,GACjBC,iBAAkB,+CAClBC,oBAAqB,SACrBC,aAAc,UACdC,SAAU,cAGVC,kBAAmB,wEACnBC,kBAAmB,oBACnBC,iBAAkB,SAClBC,sBAAuB,eACvBC,mBAAoB,cACpBC,uBAAwB,sBAGxBC,WAAY;AACZ3B,KAAM,QACN4B,YAAa,SAGbC,SAAU,KAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.xml
new file mode 100644
index 0000000000..ec4a9793c0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_hu.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.xml
new file mode 100644
index 0000000000..5ea20355cf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_hu.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_hu.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.js
new file mode 100644
index 0000000000..9764d82277
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.js
@@ -0,0 +1,9 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
	date: {
		month_full: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
		month_short: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"],
		day_full: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"],
		day_short: ["Ming", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"]
	},
	labels: {
		dhx_cal_today_button: "Hari Ini",
		day_tab: "Hari",
		week_tab: "Minggu",
		month_tab: "Bulan",
		new_event: "Acara Baru",
		icon_save: "Simpan",
		icon_cancel: "Batal",
		icon_details: "Detail",
		icon_edit: "Edit",
		icon_delete: "Hapus",
		confirm_closing: "", /*Perubahan tidak akan disimpan ?*/
		confirm_deleting: "Acara akan dihapus",
		section_description: "Keterangan",
		section_time: "Periode",
		full_day: "Hari penuh",

		/*recurring events*/
		confirm_recurring: "Apakah acara ini akan berulang?",
		section_recurring: "Acara Rutin",
		button_recurring: "Tidak Difungsikan",
		button_recurring_open: "Difungsikan",
		button_edit_series: "Mengedit seri",
		button_edit_occurrence: "Mengedit salinan",

		/*agenda view extension*/
		agenda_tab: "Agenda",
		date: "Tanggal",
		description: "Keterangan",

		/*year view extension*/
		year_tab: "Tahun",

		/*week agenda view extension*/
		week_agenda_tab: "Agenda",

		/*grid view extension*/
		grid_tab: "Tabel",

		/* touch tooltip*/
		drag_to_create:"Drag to create",
		drag_to_move:"Drag to move",

		/* dhtmlx message default buttons */
		message_ok:"OK",
		message_cancel:"Cancel"
	}
};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.txt
new file mode 100644
index 0000000000..56320c48e8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_id.js","sources":["locale_id.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,YAC5HC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,SAAU,QAAS,SAAU,OAAQ,QAAS,QAAS,SAClEC,WAAY,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,QAExDC,QACCC,qBAAsB,WACtBC,QAAS,OACTC,SAAU,SACVC,UAAW,QACXC,UAAW,aACXC,UAAW,SACXC,YAAa;AACbC,aAAc,SACdC,UAAW,OACXC,YAAa,QACbC,gBAAiB,GACjBC,iBAAkB,qBAClBC,oBAAqB,aACrBC,aAAc,UACdC,SAAU,aAGVC,kBAAmB,kCACnBC,kBAAmB,cACnBC,iBAAkB,oBAClBC,sBAAuB,cACvBC,mBAAoB,gBACpBC,uBAAwB,mBAGxBC,WAAY,SACZ3B,KAAM,UACN4B,YAAa,aAGbC,SAAU;AAGVC,gBAAiB,SAGjBC,SAAU,QAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.xml
new file mode 100644
index 0000000000..91d5d417e0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_id.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.xml
new file mode 100644
index 0000000000..00babda7e4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_id.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_id.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.js
new file mode 100644
index 0000000000..65fbf46144
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.js
@@ -0,0 +1,62 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+		month_short: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+		day_full: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"],
+		day_short: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"]
+	},
+	labels: {
+		dhx_cal_today_button: "Oggi",
+		day_tab: "Giorno",
+		week_tab: "Settimana",
+		month_tab: "Mese",
+		new_event: "Nuovo evento",
+		icon_save: "Salva",
+		icon_cancel: "Chiudi",
+		icon_details: "Dettagli",
+		icon_edit: "Modifica",
+		icon_delete: "Elimina",
+		confirm_closing: "", //Le modifiche apportate saranno perse, siete sicuri?
+		confirm_deleting: "L'evento sarà eliminato, siete sicuri?",
+		section_description: "Descrizione",
+		section_time: "Periodo di tempo",
+		full_day: "Intera giornata",
+
+		confirm_recurring: "Vuoi modificare l'intera serie di eventi?",
+		section_recurring: "Ripetere l'evento",
+		button_recurring: "Disattivato",
+		button_recurring_open: "Attivato",
+		button_edit_series: "Modificare la serie",
+		button_edit_occurrence: "Modificare una copia",
+
+		/*agenda view extension*/
+		agenda_tab: "Agenda",
+		date: "Data",
+		description: "Descrizione",
+
+		/*year view extension*/
+		year_tab: "Anni",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Griglia",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.txt
new file mode 100644
index 0000000000..baa2f8c1c9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_it.js","sources":["locale_it.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,UAAW,WAAY,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,UAAW,WAAY,YACnIC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,WAAY,SAAU,UAAW,YAAa,UAAW,UAAW,UAC/EC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,OACtBC,QAAS,SACTC,SAAU,YACVC,UAAW,OACXC,UAAW,eACXC,UAAW;AACXC,YAAa,SACbC,aAAc,WACdC,UAAW,WACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,yCAClBC,oBAAqB,cACrBC,aAAc,mBACdC,SAAU,kBAEVC,kBAAmB,4CACnBC,kBAAmB,oBACnBC,iBAAkB,cAClBC,sBAAuB,WACvBC,mBAAoB,sBACpBC,uBAAwB;AAGxBC,WAAY,SACZ3B,KAAM,OACN4B,YAAa,cAGbC,SAAU,OAGVC,gBAAiB,SAGjBC,SAAU,UAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.xml
new file mode 100644
index 0000000000..f1b23fd0f4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_it.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.xml
new file mode 100644
index 0000000000..5c92c0f635
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_it.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_it.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.js
new file mode 100644
index 0000000000..c6c37afe72
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.js
@@ -0,0 +1,66 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+/*
+ Translation by Genexus Japan Inc.
+ */
+scheduler.locale = {
+	date: {
+		month_full: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+		month_short: [ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+		day_full: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"],
+		day_short: ["日", "月", "火", "水", "木", "金", "土"]
+	},
+	labels: {
+		dhx_cal_today_button: "今日",
+		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: "期間",
+		confirm_recurring: "繰り返されているイベントを全て編集しますか?",
+		section_recurring: "イベントを繰り返す",
+		button_recurring: "無効",
+		button_recurring_open: "有効",
+		full_day: "終日",
+		button_edit_series: "シリーズを編集します",
+		button_edit_occurrence: "コピーを編集",
+
+		/*agenda view extension*/
+		agenda_tab: "議題は",
+		date: "日付",
+		description: "説明",
+
+		/*year view extension*/
+		year_tab: "今年",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "議題は",
+
+		/*grid view extension*/
+		grid_tab: "グリッド",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.txt
new file mode 100644
index 0000000000..366d1cb321
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_jp.js","sources":["locale_jp.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","confirm_recurring","section_recurring","button_recurring","button_recurring_open","full_day","button_edit_series","button_edit_occurrence","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAWAA,UAAUC,QACTC,MACCC,YAAa,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OACjFC,aAAe,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OACnFC,UAAW,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACrDC,WAAY,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAE3CC,QACCC,qBAAsB,KACtBC,QAAS,IACTC,SAAU,IACVC,UAAW,IACXC,UAAW,QACXC,UAAW,KACXC,YAAa,QACbC,aAAc,KACdC,UAAW,KACXC,YAAa,KACbC,gBAAiB,GACjBC,iBAAkB;AAClBC,oBAAqB,WACrBC,aAAc,KACdC,kBAAmB,yBACnBC,kBAAmB,YACnBC,iBAAkB,KAClBC,sBAAuB,KACvBC,SAAU,KACVC,mBAAoB,aACpBC,uBAAwB,SAGxBC,WAAY,MACZ3B,KAAM,KACN4B,YAAa,KAGbC,SAAU,KAGVC,gBAAiB,MAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.xml
new file mode 100644
index 0000000000..b822c90d26
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_jp.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.xml
new file mode 100644
index 0000000000..8610ff4691
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_jp.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_jp.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.js
new file mode 100644
index 0000000000..eef6ca7e64
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.js
@@ -0,0 +1,62 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
+		month_short: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		day_full: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"],
+		day_short: ["Søn", "Mon", "Tir", "Ons", "Tor", "Fre", "Lør"]
+	},
+	labels: {
+		dhx_cal_today_button: "I dag",
+		day_tab: "Dag",
+		week_tab: "Uke",
+		month_tab: "MÃ¥ned",
+		new_event: "Ny hendelse",
+		icon_save: "Lagre",
+		icon_cancel: "Avbryt",
+		icon_details: "Detaljer",
+		icon_edit: "Rediger",
+		icon_delete: "Slett",
+		confirm_closing: "", //Your changes will be lost, are your sure ?
+		confirm_deleting: "Hendelsen vil bli slettet permanent. Er du sikker?",
+		section_description: "Beskrivelse",
+		section_time: "Tidsperiode",
+
+		/*recurring events*/
+		confirm_recurring: "Vil du forandre hele dette settet av repeterende hendelser?",
+		section_recurring: "Repeter hendelsen",
+		button_recurring: "Av",
+		button_recurring_open: "PÃ¥",
+		button_edit_series: "Rediger serien",
+		button_edit_occurrence: "Redigere en kopi",
+
+		/*agenda view extension*/
+		agenda_tab: "Agenda",
+		date: "Dato",
+		description: "Beskrivelse",
+
+		/*year view extension*/
+		year_tab: "Ã…r",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Grid",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.txt
new file mode 100644
index 0000000000..b1d009fd0b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_nb.js","sources":["locale_nb.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACxHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,UACzEC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,QACtBC,QAAS,MACTC,SAAU,MACVC,UAAW,QACXC,UAAW,cACXC,UAAW,QACXC,YAAa;AACbC,aAAc,WACdC,UAAW,UACXC,YAAa,QACbC,gBAAiB,GACjBC,iBAAkB,qDAClBC,oBAAqB,cACrBC,aAAc,cAGdC,kBAAmB,8DACnBC,kBAAmB,oBACnBC,iBAAkB,KAClBC,sBAAuB,KACvBC,mBAAoB,iBACpBC,uBAAwB,mBAGxBC,WAAY,SACZ1B,KAAM,OACN2B,YAAa;AAGbC,SAAU,KAGVC,gBAAiB,SAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.xml
new file mode 100644
index 0000000000..44ed8311e8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_nb.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.xml
new file mode 100644
index 0000000000..ac7e756cf2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nb.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_nb.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.js
new file mode 100644
index 0000000000..1e986d2d71
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
+		month_short: ["Jan", "Feb", "mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		day_full: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
+		day_short: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"]
+	},
+	labels: {
+		dhx_cal_today_button: "Vandaag",
+		day_tab: "Dag",
+		week_tab: "Week",
+		month_tab: "Maand",
+		new_event: "Nieuw item",
+		icon_save: "Opslaan",
+		icon_cancel: "Annuleren",
+		icon_details: "Details",
+		icon_edit: "Edit",
+		icon_delete: "Verwijderen",
+		confirm_closing: "", //Your changes will be lost, are your sure ?
+		confirm_deleting: "Item zal permanent worden verwijderd, doorgaan?",
+		section_description: "Beschrijving",
+		section_time: "Tijd periode",
+		full_day: "Hele dag",
+
+		confirm_recurring: "Wilt u alle terugkerende items bijwerken?",
+		section_recurring: "Item herhalen",
+		button_recurring: "Uit",
+		button_recurring_open: "Aan",
+		button_edit_series: "Bewerk de serie",
+		button_edit_occurrence: "Bewerk een kopie",
+
+		/*agenda view extension*/
+		agenda_tab: "Agenda",
+		date: "Datum",
+		description: "Omschrijving",
+
+		/*year view extension*/
+		year_tab: "Jaar",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Tabel",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.txt
new file mode 100644
index 0000000000..c00bec12f9
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_nl.js","sources":["locale_nl.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,WAAY,YAAa,UAAW,WAAY,YAC7HC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,SAAU,UAAW,UAAW,WAAY,YAAa,UAAW,YAC/EC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,UACtBC,QAAS,MACTC,SAAU,OACVC,UAAW,QACXC,UAAW,aACXC,UAAW,UACXC,YAAa;AACbC,aAAc,UACdC,UAAW,OACXC,YAAa,cACbC,gBAAiB,GACjBC,iBAAkB,kDAClBC,oBAAqB,eACrBC,aAAc,eACdC,SAAU,WAEVC,kBAAmB,4CACnBC,kBAAmB,gBACnBC,iBAAkB,MAClBC,sBAAuB,MACvBC,mBAAoB,kBACpBC,uBAAwB,mBAGxBC,WAAY,SACZ3B,KAAM,QACN4B,YAAa;AAGbC,SAAU,OAGVC,gBAAiB,SAGjBC,SAAU,QAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.xml
new file mode 100644
index 0000000000..18403dc9ca
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_nl.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.xml
new file mode 100644
index 0000000000..fe84a947e1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_nl.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_nl.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.js
new file mode 100644
index 0000000000..c4d983eef0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
+		month_short: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		day_full: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"],
+		day_short: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"]
+	},
+	labels: {
+		dhx_cal_today_button: "Idag",
+		day_tab: "Dag",
+		week_tab: "Uke",
+		month_tab: "MÃ¥ned",
+		new_event: "Ny",
+		icon_save: "Lagre",
+		icon_cancel: "Avbryt",
+		icon_details: "Detaljer",
+		icon_edit: "Endre",
+		icon_delete: "Slett",
+		confirm_closing: "Endringer blir ikke lagret, er du sikker?", //Endringer blir ikke lagret, er du sikker?
+		confirm_deleting: "Oppføringen vil bli slettet, er du sikker?",
+		section_description: "Beskrivelse",
+		section_time: "Tidsperiode",
+		full_day: "Full dag",
+
+		/*recurring events*/
+		confirm_recurring: "Vil du endre hele settet med repeterende oppføringer?",
+		section_recurring: "Repeterende oppføring",
+		button_recurring: "Ikke aktiv",
+		button_recurring_open: "Aktiv",
+		button_edit_series: "Rediger serien",
+		button_edit_occurrence: "Redigere en kopi",
+
+		/*agenda view extension*/
+		agenda_tab: "Agenda",
+		date: "Dato",
+		description: "Beskrivelse",
+
+		/*year view extension*/
+		year_tab: "Ã…r",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Grid",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.txt
new file mode 100644
index 0000000000..fded590405
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_no.js","sources":["locale_no.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACxHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,UACzEC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,OACtBC,QAAS,MACTC,SAAU,MACVC,UAAW,QACXC,UAAW,KACXC,UAAW,QACXC,YAAa,SACbC,aAAc;AACdC,UAAW,QACXC,YAAa,QACbC,gBAAiB,4CACjBC,iBAAkB,6CAClBC,oBAAqB,cACrBC,aAAc,cACdC,SAAU,WAGVC,kBAAmB,wDACnBC,kBAAmB,wBACnBC,iBAAkB,aAClBC,sBAAuB,QACvBC,mBAAoB,iBACpBC,uBAAwB,mBAGxBC,WAAY;AACZ3B,KAAM,OACN4B,YAAa,cAGbC,SAAU,KAGVC,gBAAiB,SAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.xml
new file mode 100644
index 0000000000..e9655c3263
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_no.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.xml
new file mode 100644
index 0000000000..0aedb06670
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_no.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_no.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.js
new file mode 100644
index 0000000000..9d50aaed35
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
+		month_short: ["Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru"],
+		day_full: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"],
+		day_short: ["Nie", "Pon", "Wto", "Åšro", "Czw", "PiÄ…", "Sob"]
+	},
+	labels: {
+		dhx_cal_today_button: "DziÅ›",
+		day_tab: "Dzień",
+		week_tab: "Tydzień",
+		month_tab: "MiesiÄ…c",
+		new_event: "Nowe zdarzenie",
+		icon_save: "Zapisz",
+		icon_cancel: "Anuluj",
+		icon_details: "Szczegóły",
+		icon_edit: "Edytuj",
+		icon_delete: "Usuń",
+		confirm_closing: "", //Zmiany zostaną usunięte, jesteś pewien?
+		confirm_deleting: "Zdarzenie zostanie usunięte na zawsze, kontynuować?",
+		section_description: "Opis",
+		section_time: "Okres czasu",
+		full_day: "Cały dzień",
+
+		/*recurring events*/
+		confirm_recurring: "Czy chcesz edytować cały zbiór powtarzających się zdarzeń?",
+		section_recurring: "Powtórz zdarzenie",
+		button_recurring: "Nieaktywne",
+		button_recurring_open: "Aktywne",
+		button_edit_series: "Edytuj seriÄ™",
+		button_edit_occurrence: "Edytuj kopiÄ™",
+
+		/*agenda view extension*/
+		agenda_tab: "Agenda",
+		date: "Data",
+		description: "Opis",
+
+		/*year view extension*/
+		year_tab: "Rok",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Tabela",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.txt
new file mode 100644
index 0000000000..d5e8e26b8d
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_pl.js","sources":["locale_pl.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,UAAW,OAAQ,SAAU,WAAY,MAAO,WAAY,SAAU,WAAY,WAAY,cAAe,WAAY,YACtIC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,YAAa,eAAgB,SAAU,QAAS,WAAY,SAAU,UACjFC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,OACtBC,QAAS,QACTC,SAAU,UACVC,UAAW,UACXC,UAAW;AACXC,UAAW,SACXC,YAAa,SACbC,aAAc,YACdC,UAAW,SACXC,YAAa,OACbC,gBAAiB,GACjBC,iBAAkB,sDAClBC,oBAAqB,OACrBC,aAAc,cACdC,SAAU,aAGVC,kBAAmB,6DACnBC,kBAAmB,oBACnBC,iBAAkB,aAClBC,sBAAuB,UACvBC,mBAAoB,eACpBC,uBAAwB;AAGxBC,WAAY,SACZ3B,KAAM,OACN4B,YAAa,OAGbC,SAAU,MAGVC,gBAAiB,SAGjBC,SAAU,SAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.xml
new file mode 100644
index 0000000000..965e0bbbf8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_pl.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.xml
new file mode 100644
index 0000000000..9ab80c7658
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pl.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_pl.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.js
new file mode 100644
index 0000000000..e3e014f755
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.js
@@ -0,0 +1,74 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+/*
+
+ TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES
+
+ mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /
+
+ www.atrixian.com.br
+
+ */
+
+scheduler.locale = {
+	date: {
+		month_full: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+		month_short: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+		day_full: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"],
+		day_short: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"]
+	},
+	labels: {
+		dhx_cal_today_button: "Hoje",
+		day_tab: "Dia",
+		week_tab: "Semana",
+		month_tab: "Mês",
+		new_event: "Novo evento",
+		icon_save: "Salvar",
+		icon_cancel: "Cancelar",
+		icon_details: "Detalhes",
+		icon_edit: "Editar",
+		icon_delete: "Deletar",
+		confirm_closing: "", //Your changes will be lost, are your sure ?
+		confirm_deleting: "Tem certeza que deseja excluir?",
+		section_description: "Descrição",
+		section_time: "Período de tempo",
+		full_day: "Dia inteiro",
+
+		confirm_recurring: "Deseja editar todos esses eventos repetidos?",
+		section_recurring: "Repetir evento",
+		button_recurring: "Desabilitar",
+		button_recurring_open: "Habilitar",
+		button_edit_series: "Editar a série",
+		button_edit_occurrence: "Editar uma cópia",
+
+		/*agenda view extension*/
+		agenda_tab: "Dia",
+		date: "Data",
+		description: "Descrição",
+
+		/*year view extension*/
+		year_tab: "Ano",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Dia",
+
+		/*grid view extension*/
+		grid_tab: "Grade",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.txt
new file mode 100644
index 0000000000..e3427027af
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_pt.js","sources":["locale_pt.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAkBAA,UAAUC,QACTC,MACCC,YAAa,UAAW,YAAa,QAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,WAAY,UAAW,WAAY,YAC9HC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,UAAW,UAAW,QAAS,SAAU,SAAU,QAAS,UACvEC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,OACtBC,QAAS,MACTC,SAAU,SACVC,UAAW,MACXC,UAAW,cACXC,UAAW,SACXC,YAAa;AACbC,aAAc,WACdC,UAAW,SACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,kCAClBC,oBAAqB,YACrBC,aAAc,mBACdC,SAAU,cAEVC,kBAAmB,+CACnBC,kBAAmB,iBACnBC,iBAAkB,cAClBC,sBAAuB,YACvBC,mBAAoB,iBACpBC,uBAAwB,mBAGxBC,WAAY,MACZ3B,KAAM,OACN4B,YAAa;AAGbC,SAAU,MAGVC,gBAAiB,MAGjBC,SAAU,QAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.xml
new file mode 100644
index 0000000000..b225add7e4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_pt.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.xml
new file mode 100644
index 0000000000..892be5b09c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_pt.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_pt.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.js
new file mode 100644
index 0000000000..a9766e146a
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.js
@@ -0,0 +1,68 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+/*
+	Traducere de Ovidiu Lixandru: http://www.madball.ro
+ */
+
+scheduler.locale = {
+	date:{
+		month_full:["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "November", "December"],
+		month_short:["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		day_full:["Duminica", "Luni", "Marti", "Miercuri", "Joi", "Vineri", "Sambata"],
+		day_short:["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sa"]
+	},
+	labels:{
+		dhx_cal_today_button:"Astazi",
+		day_tab:"Zi",
+		week_tab:"Saptamana",
+		month_tab:"Luna",
+		new_event:"Eveniment nou",
+		icon_save:"Salveaza",
+		icon_cancel:"Anuleaza",
+		icon_details:"Detalii",
+		icon_edit:"Editeaza",
+		icon_delete:"Sterge",
+		confirm_closing:"Schimbarile nu vor fi salvate, esti sigur?",//Your changes will be lost, are your sure ?
+		confirm_deleting:"Evenimentul va fi sters permanent, esti sigur?",
+		section_description:"Descriere",
+		section_time:"Interval",
+		full_day:"Toata ziua",
+
+		/*recurring events*/
+		confirm_recurring:"Vrei sa editezi toata seria de evenimente repetate?",
+		section_recurring:"Repetare",
+		button_recurring:"Dezactivata",
+		button_recurring_open:"Activata",
+		button_edit_series: "Editeaza serie",
+		button_edit_occurrence: "Editeaza doar intrare",
+
+		/*agenda view extension*/
+		agenda_tab:"Agenda",
+		date:"Data",
+		description:"Descriere",
+
+		/*year view extension*/
+		year_tab:"An",
+
+		/* week agenda extension */
+		week_agenda_tab: "Agenda",
+
+		/*grid view extension*/
+		grid_tab: "Lista",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.txt
new file mode 100644
index 0000000000..a2293056a0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_ro.js","sources":["locale_ro.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAYAA,UAAUC,QACTC,MACCC,YAAY,WAAY,YAAa,SAAU,UAAW,MAAO,QAAS,QAAS,SAAU,aAAc,YAAa,WAAY,YACpIC,aAAa,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC1FC,UAAU,WAAY,OAAQ,QAAS,WAAY,MAAO,SAAU,WACpEC,WAAW,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEhDC,QACCC,qBAAqB,SACrBC,QAAQ,KACRC,SAAS,YACTC,UAAU,OACVC,UAAU,gBACVC,UAAU,WACVC,YAAY;AACZC,aAAa,UACbC,UAAU,WACVC,YAAY,SACZC,gBAAgB,6CAChBC,iBAAiB,iDACjBC,oBAAoB,YACpBC,aAAa,WACbC,SAAS,aAGTC,kBAAkB,sDAClBC,kBAAkB,WAClBC,iBAAiB,cACjBC,sBAAsB,WACtBC,mBAAoB,iBACpBC,uBAAwB;AAGxBC,WAAW,SACX3B,KAAK,OACL4B,YAAY,YAGZC,SAAS,KAGTC,gBAAiB,SAGjBC,SAAU,QAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.xml
new file mode 100644
index 0000000000..c7225d24ec
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ro.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.xml
new file mode 100644
index 0000000000..11e9abf22b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ro.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ro.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.js
new file mode 100644
index 0000000000..ca5fa91b03
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.js
@@ -0,0 +1,62 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Январь", "Февраль", "Март", "Апрель", "Maй", "Июнь", "Июль", "Август", "Сентябрь", "Oктябрь", "Ноябрь", "Декабрь"],
+		month_short: ["Янв", "Фев", "Maр", "Aпр", "Maй", "Июн", "Июл", "Aвг", "Сен", "Окт", "Ноя", "Дек"],
+		day_full: [ "Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
+		day_short: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"]
+	},
+	labels: {
+		dhx_cal_today_button: "Сегодня",
+		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: "Редактировать экземпляр",
+
+		/*agenda view extension*/
+		agenda_tab: "Список",
+		date: "Дата",
+		description: "Описание",
+
+		/*year view extension*/
+		year_tab: "Год",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Список",
+
+		/*grid view extension*/
+		grid_tab: "Таблица",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.txt
new file mode 100644
index 0000000000..6b665cffc8
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_ru.js","sources":["locale_ru.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,UAAW,OAAQ,SAAU,MAAO,OAAQ,OAAQ,SAAU,WAAY,UAAW,SAAU,WACtHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAY,cAAe,cAAe,UAAW,QAAS,UAAW,UAAW,WACpFC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,UACtBC,QAAS,OACTC,SAAU,SACVC,UAAW,QACXC,UAAW,gBACXC,UAAW,YACXC,YAAa;AACbC,aAAc,SACdC,UAAW,WACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,kDAClBC,oBAAqB,WACrBC,aAAc,iBACdC,SAAU,YAEVC,kBAAmB,sDACnBC,kBAAmB,aACnBC,iBAAkB,YAClBC,sBAAuB,WACvBC,mBAAoB,sBACpBC,uBAAwB,0BAGxBC,WAAY;AACZ3B,KAAM,OACN4B,YAAa,WAGbC,SAAU,MAGVC,gBAAiB,SAGjBC,SAAU,UAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.xml
new file mode 100644
index 0000000000..dcb6bdc0eb
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ru.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.xml
new file mode 100644
index 0000000000..c01db1bbe3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ru.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ru.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.js
new file mode 100644
index 0000000000..d501a67913
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"],
+		month_short: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		day_full: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "ÄŒetrtek", "Petek", "Sobota"],
+		day_short: ["Ned", "Pon", "Tor", "Sre", "ÄŒet", "Pet", "Sob"]
+	},
+	labels: {
+		dhx_cal_today_button: "Danes",
+		day_tab: "Dan",
+		week_tab: "Teden",
+		month_tab: "Mesec",
+		new_event: "Nov dogodek",
+		icon_save: "Shrani",
+		icon_cancel: "Prekliči",
+		icon_details: "Podrobnosti",
+		icon_edit: "Uredi",
+		icon_delete: "Izbriši",
+		confirm_closing: "", //Spremembe ne bodo shranjene. Želite nadaljevati ?
+		confirm_deleting: "Dogodek bo izbrisan. Želite nadaljevati?",
+		section_description: "Opis",
+		section_time: "ÄŒasovni okvir",
+		full_day: "Ves dan",
+
+		/*recurring events*/
+		confirm_recurring: "Želite urediti celoten set ponavljajočih dogodkov?",
+		section_recurring: "Ponovi dogodek",
+		button_recurring: "Onemogočeno",
+		button_recurring_open: "Omogočeno",
+		button_edit_series: "Edit series",
+		button_edit_occurrence: "Edit occurrence",
+
+		/*agenda view extension*/
+		agenda_tab: "Zadeva",
+		date: "Datum",
+		description: "Opis",
+
+		/*year view extension*/
+		year_tab: "Leto",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Zadeva",
+
+		/*grid view extension*/
+		grid_tab: "Miza",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.txt
new file mode 100644
index 0000000000..2c1e261a7f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_si.js","sources":["locale_si.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,UAAW,QAAS,QAAS,MAAO,QAAS,QAAS,SAAU,YAAa,UAAW,WAAY,YAC3HC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,UAAW,aAAc,QAAS,QAAS,UAAW,QAAS,UAC1EC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,QACtBC,QAAS,MACTC,SAAU,QACVC,UAAW,QACXC,UAAW,cACXC,UAAW,SACXC,YAAa;AACbC,aAAc,cACdC,UAAW,QACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,2CAClBC,oBAAqB,OACrBC,aAAc,gBACdC,SAAU,UAGVC,kBAAmB,qDACnBC,kBAAmB,iBACnBC,iBAAkB,cAClBC,sBAAuB,YACvBC,mBAAoB,cACpBC,uBAAwB,kBAGxBC,WAAY,SACZ3B,KAAM,QACN4B,YAAa;AAGbC,SAAU,OAGVC,gBAAiB,SAGjBC,SAAU,OAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.xml
new file mode 100644
index 0000000000..ea7e2fbeec
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_si.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.xml
new file mode 100644
index 0000000000..b2fbe30ed4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_si.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_si.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.js
new file mode 100644
index 0000000000..d1bbe36e67
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.js
@@ -0,0 +1,64 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"],
+		month_short: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sept", "Okt", "Nov", "Dec"],
+		day_full: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"],
+		day_short: ["Ne", "Po", "Ut", "St", "Å t", "Pi", "So"]
+	},
+	labels: {
+		dhx_cal_today_button: "Dnes",
+		day_tab: "Deň",
+		week_tab: "Týždeň",
+		month_tab: "Mesiac",
+		new_event: "Nová udalosť",
+		icon_save: "Uložiť",
+		icon_cancel: "Späť",
+		icon_details: "Detail",
+		icon_edit: "Edituj",
+		icon_delete: "Zmazať",
+		confirm_closing: "Vaše zmeny nebudú uložené. Skutočne?", //Vaše změny budou ztraceny, opravdu ?
+		confirm_deleting: "Udalosť bude natrvalo vymazaná. Skutočne?",
+		section_description: "Poznámky",
+		section_time: "Doba platnosti",
+
+		/*recurring events*/
+		confirm_recurring: "Prajete si upraviť celú radu opakovaných udalostí?",
+		section_recurring: "Opakovanie udalosti",
+		button_recurring: "Vypnuté",
+		button_recurring_open: "Zapnuté",
+		button_edit_series: "Upraviť opakovania",
+		button_edit_occurrence: "Upraviť inštancie",
+
+		/*agenda view extension*/
+		agenda_tab: "Program",
+		date: "Dátum",
+		description: "Poznámka",
+
+		/*year view extension*/
+		year_tab: "Rok",
+		full_day: "Celý deň", // Full day
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Program",
+
+		/*grid view extension*/
+		grid_tab: "Mriežka",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
+
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.txt
new file mode 100644
index 0000000000..baf966b5dd
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_sk.js","sources":["locale_sk.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","agenda_tab","description","year_tab","full_day","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,UAAW,QAAS,QAAS,MAAO,MAAO,MAAO,SAAU,YAAa,UAAW,WAAY,YACvHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,OAC5FC,UAAW,SAAU,WAAY,SAAU,SAAU,UAAW,SAAU,UAC1EC,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDC,QACCC,qBAAsB,OACtBC,QAAS,MACTC,SAAU,SACVC,UAAW,SACXC,UAAW,eACXC,UAAW,SACXC,YAAa;AACbC,aAAc,SACdC,UAAW,SACXC,YAAa,SACbC,gBAAiB,uCACjBC,iBAAkB,4CAClBC,oBAAqB,WACrBC,aAAc,iBAGdC,kBAAmB,qDACnBC,kBAAmB,sBACnBC,iBAAkB,UAClBC,sBAAuB,UACvBC,mBAAoB,qBACpBC,uBAAwB,oBAGxBC,WAAY;AACZ1B,KAAM,QACN2B,YAAa,WAGbC,SAAU,MACVC,SAAU,WAGVC,gBAAiB,UAGjBC,SAAU,UAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.xml
new file mode 100644
index 0000000000..d199c058bf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_sk.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.xml
new file mode 100644
index 0000000000..22e1804c8b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sk.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_sk.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.js
new file mode 100644
index 0000000000..d72f0486fe
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.js
@@ -0,0 +1,63 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
+		month_short: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		day_full: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"],
+		day_short: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"]
+	},
+	labels: {
+		dhx_cal_today_button: "Idag",
+		day_tab: "Dag",
+		week_tab: "Vecka",
+		month_tab: "MÃ¥nad",
+		new_event: "Ny händelse",
+		icon_save: "Spara",
+		icon_cancel: "Ã…ngra",
+		icon_details: "Detajer",
+		icon_edit: "Ändra",
+		icon_delete: "Ta bort",
+		confirm_closing: "", //Dina förändingar kommer gå förlorade, är du säker?
+		confirm_deleting: "Är du säker på att du vill ta bort händelsen permanent?",
+		section_description: "Beskrivning",
+		section_time: "Tid",
+		full_day: "Hela dagen",
+
+		/*recurring events*/
+		confirm_recurring: "Vill du redigera hela serien med repeterande händelser?",
+		section_recurring: "Upprepa händelse",
+		button_recurring: "Inaktiverat",
+		button_recurring_open: "Aktiverat",
+		button_edit_series: "Redigera serien",
+		button_edit_occurrence: "Redigera en kopia",
+
+		/*agenda view extension*/
+		agenda_tab: "Dagordning",
+		date: "Datum",
+		description: "Beskrivning",
+
+		/*year view extension*/
+		year_tab: "Ã…r",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Dagordning",
+
+		/*grid view extension*/
+		grid_tab: "Galler",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.txt
new file mode 100644
index 0000000000..da1fed4a1b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_sv.js","sources":["locale_sv.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,UAAW,WAAY,OAAQ,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,YAC3HC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,SAAU,SAAU,SAAU,SAAU,UAAW,SAAU,UACxEC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,OACtBC,QAAS,MACTC,SAAU,QACVC,UAAW,QACXC,UAAW,cACXC,UAAW,QACXC,YAAa;AACbC,aAAc,UACdC,UAAW,QACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,0DAClBC,oBAAqB,cACrBC,aAAc,MACdC,SAAU,aAGVC,kBAAmB,0DACnBC,kBAAmB,mBACnBC,iBAAkB,cAClBC,sBAAuB,YACvBC,mBAAoB,kBACpBC,uBAAwB,oBAGxBC,WAAY;AACZ3B,KAAM,QACN4B,YAAa,cAGbC,SAAU,KAGVC,gBAAiB,aAGjBC,SAAU,SAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.xml
new file mode 100644
index 0000000000..53f23704e3
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_sv.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.xml
new file mode 100644
index 0000000000..49dd0f65ef
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_sv.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_sv.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.js
new file mode 100644
index 0000000000..df123e8eb5
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.js
@@ -0,0 +1,63 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Ocak", "Þubat", "Mart", "Nisan", "Mayýs", "Haziran", "Temmuz", "Aðustos", "Eylül", "Ekim", "Kasým", "Aralýk"],
+		month_short: ["Oca", "Þub", "Mar", "Nis", "May", "Haz", "Tem", "Aðu", "Eyl", "Eki", "Kas", "Ara"],
+		day_full: ["Pazar", "Pazartes,", "Salý", "Çarþamba", "Perþembe", "Cuma", "Cumartesi"],
+		day_short: ["Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"]
+	},
+	labels: {
+		dhx_cal_today_button: "Bugün",
+		day_tab: "Gün",
+		week_tab: "Hafta",
+		month_tab: "Ay",
+		new_event: "Uygun",
+		icon_save: "Kaydet",
+		icon_cancel: "Ýptal",
+		icon_details: "Detaylar",
+		icon_edit: "Düzenle",
+		icon_delete: "Sil",
+		confirm_closing: "", //Your changes will be lost, are your sure ?
+		confirm_deleting: "Etkinlik silinecek, devam?",
+		section_description: "Açýklama",
+		section_time: "Zaman aralýðý",
+		full_day: "Tam gün",
+
+		/*recurring events*/
+		confirm_recurring: "Tüm tekrar eden etkinlikler silinecek, devam?",
+		section_recurring: "Etkinliði tekrarla",
+		button_recurring: "Pasif",
+		button_recurring_open: "Aktif",
+		button_edit_series: "Dizi düzenleme",
+		button_edit_occurrence: "Bir kopyasını düzenleyin",
+
+		/*agenda view extension*/
+		agenda_tab: "Ajanda",
+		date: "Tarih",
+		description: "Açýklama",
+
+		/*year view extension*/
+		year_tab: "Yýl",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Ajanda",
+
+		/*grid view extension*/
+		grid_tab: "Izgara",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.txt
new file mode 100644
index 0000000000..cda38b699b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_tr.js","sources":["locale_tr.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,OAAQ,QAAS,OAAQ,QAAS,QAAS,UAAW,SAAU,UAAW,QAAS,OAAQ,QAAS,UAClHC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,QAAS,YAAa,OAAQ,WAAY,WAAY,OAAQ,aACzEC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,QACtBC,QAAS,MACTC,SAAU,QACVC,UAAW,KACXC,UAAW,QACXC,UAAW,SACXC,YAAa,QACbC,aAAc;AACdC,UAAW,UACXC,YAAa,MACbC,gBAAiB,GACjBC,iBAAkB,6BAClBC,oBAAqB,WACrBC,aAAc,gBACdC,SAAU,UAGVC,kBAAmB,gDACnBC,kBAAmB,qBACnBC,iBAAkB,QAClBC,sBAAuB,QACvBC,mBAAoB,iBACpBC,uBAAwB,2BAGxBC,WAAY,SACZ3B,KAAM,QACN4B,YAAa,WAGbC,SAAU,MAGVC,gBAAiB;AAGjBC,SAAU,SAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.xml
new file mode 100644
index 0000000000..089934c867
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_tr.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.xml
new file mode 100644
index 0000000000..2f875e9a0c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_tr.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_tr.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.js b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.js
new file mode 100644
index 0000000000..8b8d60b42b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.js
@@ -0,0 +1,63 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+scheduler.locale = {
+	date: {
+		month_full: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
+		month_short: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"],
+		day_full: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"],
+		day_short: ["Нед", "Пон", "Вів", "Сер", "Чет", "Птн", "Суб"]
+	},
+	labels: {
+		dhx_cal_today_button: "Сьогодні",
+		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: "Весь день",
+
+		/*recurring events*/
+		confirm_recurring: "Хочете редагувати весь перелік повторюваних подій?",
+		section_recurring: "Повторювана подія",
+		button_recurring: "Відключено",
+		button_recurring_open: "Включено",
+		button_edit_series: "Редагувати серію",
+		button_edit_occurrence: "Редагувати примірник",
+
+		/*agenda view extension*/
+		agenda_tab: "Перелік",
+		date: "Дата",
+		description: "Опис",
+
+		/*year view extension*/
+		year_tab: "Рік",
+
+		/*week agenda view extension*/
+		week_agenda_tab: "Перелік",
+
+		/*grid view extension*/
+		grid_tab: "Таблиця",
+
+		/* touch tooltip*/
+		drag_to_create:"Drag to create",
+		drag_to_move:"Drag to move",
+
+		/* dhtmlx message default buttons */
+		message_ok:"OK",
+		message_cancel:"Cancel"
+	}
+};
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.txt b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.txt
new file mode 100644
index 0000000000..7e9e8ab56c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.txt
@@ -0,0 +1 @@
+{"version":3,"file":"locale_ua.js","sources":["locale_ua.js"],"names":["scheduler","locale","date","month_full","month_short","day_full","day_short","labels","dhx_cal_today_button","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","agenda_tab","description","year_tab","week_agenda_tab","grid_tab","drag_to_create","drag_to_move","message_ok","message_cancel"],"mappings":";;;;;;;;AAQAA,UAAUC,QACTC,MACCC,YAAa,SAAU,QAAS,WAAY,UAAW,UAAW,UAAW,SAAU,UAAW,WAAY,UAAW,WAAY,WACrIC,aAAc,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,UAAW,SAAU,YAAa,WAAY,SAAU,SAAU,WAAY,UAC9EC,WAAY,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDC,QACCC,qBAAsB,WACtBC,QAAS,OACTC,SAAU,UACVC,UAAW,SACXC,UAAW,aACXC,UAAW;AACXC,YAAa,UACbC,aAAc,SACdC,UAAW,aACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,0CAClBC,oBAAqB,OACrBC,aAAc,mBACdC,SAAU,YAGVC,kBAAmB,qDACnBC,kBAAmB,oBACnBC,iBAAkB,aAClBC,sBAAuB,WACvBC,mBAAoB,mBACpBC,uBAAwB;AAGxBC,WAAY,UACZ3B,KAAM,OACN4B,YAAa,OAGbC,SAAU,MAGVC,gBAAiB,UAGjBC,SAAU,UAGVC,eAAe,iBACfC,aAAa,eAGbC,WAAW,KACXC,eAAe"}
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.xml
new file mode 100644
index 0000000000..57001f1cf4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ua.js.map</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.xml
new file mode 100644
index 0000000000..c0373c321b
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/locale/locale_ua.js.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>locale_ua.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins.xml
new file mode 100644
index 0000000000..dcbe9393e1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>skins</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.css
new file mode 100644
index 0000000000..d12b2b630f
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.css
@@ -0,0 +1,2243 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area {
+  position: fixed;
+  right: 5px;
+  width: 250px;
+  z-index: 1000;
+}
+.dhtmlx-info {
+  min-width: 120px;
+  padding: 4px 4px 4px 20px;
+  font-family: Tahoma;
+  z-index: 10000;
+  overflow: hidden;
+  margin: 5px;
+  margin-bottom: 10px;
+  -webkit-transition: all .5s ease;
+  -moz-transition: all .5s ease;
+  -o-transition: all .5s ease;
+  transition: all .5s ease;
+}
+.dhtmlx-info.hidden {
+  height: 0px;
+  padding: 0px;
+  border-width: 0px;
+  margin: 0px;
+  overflow: hidden;
+}
+.dhtmlx_modal_box {
+  overflow: hidden;
+  display: inline-block;
+  min-width: 300px;
+  width: 300px;
+  text-align: center;
+  position: fixed;
+  background-color: #fff;
+  background: -webkit-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  background: -moz-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  box-shadow: 0px 0px 14px #888;
+  font-family: Tahoma;
+  z-index: 20000;
+  border-radius: 6px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx_popup_title {
+  border-top-left-radius: 5px;
+  border-top-right-radius: 5px;
+  border-width: 0px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+}
+.dhtmlx-info,
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  user-select: none;
+  -webkit-user-select: none;
+  -moz-user-select: -moz-none;
+  cursor: pointer;
+}
+.dhtmlx_popup_text {
+  overflow: hidden;
+}
+.dhtmlx_popup_controls {
+  border-radius: 6px;
+  padding: 5px;
+}
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  height: 30px;
+  line-height: 30px;
+  display: inline-block;
+  margin: 0 5px;
+  border-radius: 6px;
+  color: #FFF;
+}
+.dhtmlx_popup_button {
+  min-width: 120px;
+}
+div.dhx_modal_cover {
+  background-color: #000;
+  cursor: default;
+  filter: alpha(opacity=20);
+  opacity: 0.2;
+  position: fixed;
+  z-index: 19999;
+  left: 0px;
+  top: 0px;
+  width: 100%;
+  height: 100%;
+  border: none;
+  zoom: 1;
+}
+.dhtmlx-info img,
+.dhtmlx_modal_box img {
+  float: left;
+  margin-right: 20px;
+}
+.dhtmlx-alert-error .dhtmlx_popup_title,
+.dhtmlx-confirm-error .dhtmlx_popup_title {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);
+}
+.dhtmlx-alert-error,
+.dhtmlx-confirm-error {
+  border: 1px solid #ff0000;
+}
+/*Skin section*/
+.dhtmlx_button,
+.dhtmlx_popup_button {
+  box-shadow: 0px 0px 4px #888;
+  border: 1px solid #838383;
+}
+.dhtmlx_button input,
+.dhtmlx_popup_button div {
+  border: 1px solid #FFF;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  border-radius: 6px;
+  font-size: 15px;
+  font-weight: normal;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  color: #fff;
+  padding: 0px;
+  margin: 0px;
+  vertical-align: top;
+  height: 28px;
+  line-height: 28px;
+}
+.dhtmlx_button input:focus,
+.dhtmlx_button input:active,
+.dhtmlx_popup_button div:active,
+.dhtmlx_popup_button div:focus {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+}
+.dhtmlx_popup_title {
+  color: #fff;
+  text-shadow: 1px 1px #000;
+  height: 40px;
+  line-height: 40px;
+  font-size: 20px;
+}
+.dhtmlx_popup_text {
+  margin: 15px 15px 5px 15px;
+  font-size: 14px;
+  color: #000;
+  min-height: 30px;
+  border-radius: 6px;
+}
+.dhtmlx-info,
+.dhtmlx-error {
+  font-size: 14px;
+  color: #000;
+  box-shadow: 0px 0px 10px #888;
+  padding: 0px;
+  background-color: #FFF;
+  border-radius: 3px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx-info div {
+  padding: 5px 10px 5px 10px;
+  background-color: #fff;
+  border-radius: 3px;
+  border: 1px solid #B8B8B8;
+}
+.dhtmlx-error {
+  background-color: #d81b1b;
+  border: 1px solid #ff3c3c;
+  box-shadow: 0px 0px 10px #000;
+}
+.dhtmlx-error div {
+  background-color: #d81b1b;
+  border: 1px solid #940000;
+  color: #FFF;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event .dhx_title,
+.dhx_cal_event .dhx_body,
+.dhx_cal_event .dhx_footer {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  color: #887A2E;
+  overflow: hidden;
+  width: 100%;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_move_denied .dhx_cal_event .dhx_header,
+.dhx_move_denied .dhx_cal_event .dhx_title {
+  cursor: default;
+}
+.dhx_cal_event .dhx_header {
+  height: 1px;
+  margin-left: 1px;
+  border-width: 1px 1px 0px 1px;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_title {
+  height: 12px;
+  border-width: 0px 1px 1px 1px;
+  border-bottom-style: dotted;
+  font-size: 7pt;
+  font-weight: bold;
+  text-align: center;
+  background-position: right;
+  background-repeat: no-repeat;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event.dhx_cal_select_menu .dhx_body {
+  border-width: 0 1px 1px 1px;
+  padding: 5px;
+}
+.dhx_resize_denied,
+.dhx_resize_denied .dhx_event_resize {
+  cursor: default !important;
+}
+.dhx_cal_event .dhx_event_resize {
+  cursor: s-resize;
+}
+.dhx_cal_event .dhx_footer,
+.dhx_cal_event .dhx_select_menu_footer {
+  height: 1px;
+  margin-left: 2px;
+  border-width: 0px 1px 1px 1px;
+  position: relative;
+}
+.dhx_cal_event_line {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  border-radius: 3px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 10px;
+  color: #887A2E;
+  cursor: pointer;
+  overflow: hidden;
+}
+.dhx_cal_event_clear {
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 2px;
+  color: #887A2E;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: pointer;
+}
+.dhx_in_move {
+  background-color: #FFFF80;
+}
+.dhx_cal_event.dhx_cal_editor {
+  border: 1px solid #B7A543;
+  border-top-style: dotted;
+  z-index: 999;
+  position: absolute;
+  overflow: hidden;
+}
+textarea.dhx_cal_editor {
+  width: 100%;
+  height: 100%;
+  border: 0 solid black;
+  margin: 0;
+  padding: 0;
+  overflow: auto;
+}
+div.dhx_menu_head {
+  background-image: url(imgs/controls.gif);
+  background-position: 0px -43px;
+  width: 10px;
+  height: 10px;
+  margin-left: 5px;
+  margin-top: 1px;
+  border: none;
+  cursor: default;
+}
+div.dhx_menu_icon {
+  background-image: url(imgs/controls.gif);
+  width: 20px;
+  height: 20px;
+  margin-left: -5px;
+  margin-top: 0px;
+  border: none;
+  cursor: pointer;
+}
+div.icon_details {
+  background-position: 0px 0px;
+}
+div.icon_edit {
+  background-position: -22px 0px;
+}
+div.icon_save {
+  background-position: -84px -1px;
+}
+div.icon_cancel {
+  background-position: -62px 0px;
+}
+div.icon_delete {
+  background-position: -42px 0px;
+}
+/*view more link in month view*/
+.dhx_month_link {
+  position: absolute;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  text-align: right;
+  cursor: pointer;
+  padding-right: 10px;
+}
+.dhx_month_link a {
+  color: blue;
+}
+.dhx_month_link a:hover {
+  text-decoration: underline;
+}
+.dhx_global_tip {
+  font-family: Tahoma, Helvetica;
+  text-align: center;
+  font-size: 20px;
+  position: fixed;
+  top: 60px;
+  right: 20px;
+  background-color: rgba(255, 255, 255, 0.7);
+  color: #000;
+  z-index: 10000;
+  padding: 20px 30px;
+  width: 190px;
+}
+.dhx_global_tip div {
+  font-size: 30px;
+}
+@media (-moz-touch-enabled) {
+  .dhx_cal_container {
+    user-select: none;
+    -moz-user-select: none;
+  }
+}
+.dhx_unselectable,
+.dhx_unselectable div {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_light {
+  -webkit-tap-highlight-color: transparent;
+  background-color: #FFE763;
+  border-radius: 5px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  border: 1px solid #B7A64B;
+  color: #887A2E;
+  position: absolute;
+  z-index: 10001;
+  width: 580px;
+  height: 300px;
+  box-shadow: 5px 5px 5px #888;
+}
+.dhx_cal_light_wide {
+  width: 650px;
+}
+.dhx_mark {
+  position: relative;
+  top: 3px;
+  background-image: url('imgs/controls.gif');
+  background-position: 0px -43px;
+  padding-left: 10px;
+}
+.dhx_ie6 .dhx_mark {
+  background-position: 6px -41px;
+}
+.dhx_cal_light select {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+  padding: 2px;
+  margin: 0px;
+}
+.dhx_cal_ltitle {
+  padding: 2px 0px 2px 5px;
+  overflow: hidden;
+  white-space: nowrap;
+}
+.dhx_cal_ltitle span {
+  white-space: nowrap;
+}
+.dhx_cal_lsection {
+  background-color: #DBCF8C;
+  color: #FFF4B5;
+  font-weight: bold;
+  padding: 5px 0px 3px 10px;
+}
+.dhx_section_time {
+  background-color: #DBCF8C;
+  white-space: nowrap;
+}
+.dhx_cal_lsection .dhx_fullday {
+  float: right;
+  margin-right: 5px;
+  color: #887A2E;
+  font-size: 12px;
+  font-weight: normal;
+  line-height: 20px;
+  vertical-align: top;
+  cursor: pointer;
+}
+.dhx_cal_lsection {
+  font-size: 18px;
+  font-family: Arial;
+}
+.dhx_cal_ltext {
+  padding: 2px	0px 2px 10px;
+  overflow: hidden;
+}
+.dhx_cal_ltext textarea {
+  background-color: #FFF4B5;
+  /* #FFF4B5; should be the same for dhx_cal_larea, was transperent */
+  overflow: auto;
+  border: none;
+  color: #887A2E;
+  height: 100%;
+  width: 100%;
+  outline: none !important;
+  resize: none;
+}
+.dhx_time {
+  font-weight: bold;
+}
+.dhx_cal_light .dhx_title {
+  padding-left: 10px;
+}
+.dhx_cal_larea {
+  border: 1px solid #DCC43E;
+  background-color: #FFF4B5;
+  overflow: hidden;
+  margin-left: 3px;
+  width: 572px;
+  height: 1px;
+}
+.dhx_btn_set {
+  padding: 5px 10px 0px 10px;
+  float: left;
+}
+.dhx_btn_set div {
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.dhx_save_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -84px 0px;
+  width: 21px;
+}
+.dhx_cancel_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -63px 0px;
+  width: 20px;
+}
+.dhx_delete_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -42px 0px;
+  width: 20px;
+}
+.dhx_cal_cover {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  z-index: 10000;
+  top: 0px;
+  left: 0px;
+  background-color: black;
+  opacity: 0.1;
+  filter: alpha(opacity=10);
+}
+.dhx_custom_button {
+  padding: 0px 3px 0px 3px;
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+  background-color: #FFE763;
+  font-weight: normal;
+  margin-right: 5px;
+  margin-top: 0px;
+  cursor: pointer;
+}
+.dhx_custom_button div {
+  cursor: pointer;
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  border-top-width: 0px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+  border: 0px;
+  float: left;
+  text-align: right;
+  width: 100px;
+  height: 20px;
+  font-size: 16px;
+  padding: 5px 0px 0px 10px;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  border-top: 1px solid #DBCF8C;
+  position: relative;
+  background-color: #DBCF8C;
+  overflow: hidden;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  padding-top: 2px !important;
+  height: 20px !important;
+}
+.dhx_section_time {
+  text-align: center;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  width: 730px;
+}
+.dhx_cal_light_wide {
+  width: 738px;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  background: transparent;
+}
+.dhx_cal_light_wide .dhx_cal_checkbox label {
+  padding-left: 0px;
+}
+.dhx_cal_wide_checkbox input {
+  margin-top: 8px;
+  margin-left: 14px;
+}
+.dhx_cal_light input {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+}
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday {
+  float: none;
+  margin-right: 0px;
+  color: #FFF4B5;
+  font-weight: bold;
+  font-size: 16px;
+  font-family: Arial;
+  cursor: pointer;
+}
+.dhx_custom_button {
+  float: right;
+  height: 21px;
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_cal_light_wide .dhx_custom_button {
+  position: absolute;
+  top: 0;
+  right: 0;
+  margin-top: 2px;
+}
+.dhx_cal_light_wide .dhx_repeat_right {
+  margin-right: 55px;
+}
+.dhx_minical_popup {
+  position: absolute;
+  z-index: 10100;
+  width: 251px;
+  height: 175px;
+}
+.dhx_scale_bar_header {
+  position: absolute;
+  border-bottom: 1px dotted #8894A3;
+  width: 100%;
+}
+.dhx_expand_icon {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  background-image: url(imgs/collapse_expand_icon.gif);
+  width: 18px;
+  height: 18px;
+  cursor: pointer;
+  background-position: 0px 18px;
+  z-index: 16;
+}
+.dhx_scheduler_agenda .dhx_cal_data {
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_area {
+  width: 100%;
+  overflow-y: auto;
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_agenda_line div {
+  float: left;
+  width: 188px;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_agenda_area .dhx_agenda_line div {
+  border-right: 0px dotted #8894A3;
+}
+.dhx_v_border {
+  position: absolute;
+  left: 187px;
+  top: 0;
+  border-right: 1px dotted #8894A3;
+  width: 1px;
+  height: 100%;
+}
+.dhx_agenda_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_agenda_line span {
+  padding-left: 5px;
+  line-height: 21px;
+}
+.dhx_year_body {
+  border-left: 1px dotted #586A7E;
+}
+.dhx_year_week {
+  position: relative;
+}
+.dhx_scale_bar_last {
+  border-right: 1px dotted #586A7E;
+}
+.dhx_year_month {
+  height: 18px;
+  padding-top: 3px;
+  border: 1px dotted #586A7E;
+  text-align: center;
+  vertical-align: middle;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head,
+.dhx_year_body .dhx_before .dhx_month_head a,
+.dhx_year_body .dhx_after .dhx_month_head a {
+  color: #E2E3E6 !important;
+}
+.dhx_year_body .dhx_month_body {
+  height: 0px;
+  overflow: hidden;
+}
+.dhx_month_head.dhx_year_event {
+  background-color: #FFE763;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head {
+  cursor: default;
+}
+.dhx_year_tooltip {
+  border: 1px solid #BBBBBB;
+  background-image: url(imgs/databg.png);
+  position: absolute;
+  z-index: 9998;
+  width: 300px;
+  height: auto;
+  font-family: Tahoma;
+  font-size: 8pt;
+  overflow: hidden;
+}
+.dhx_tooltip_line {
+  line-height: 20px;
+  height: 20px;
+  overflow: hidden;
+}
+.dhx_tooltip_line .dhx_event_icon {
+  width: 20px;
+  height: 20px;
+  padding-right: 10px;
+  float: left;
+  border-width: 0px;
+  position: relative;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_tooltip_date {
+  float: left;
+  width: auto;
+  padding-left: 5px;
+  text-align: center;
+}
+.dhx_text_disabled {
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_mini_calendar {
+  -moz-box-shadow: 5px 5px 5px #888;
+  /*Doesn't work in IE*/
+  -khtml-box-shadow: 5px 5px 5px #888;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  -user-select: none;
+}
+.dhx_mini_calendar .dhx_month_head {
+  cursor: pointer;
+}
+.dhx_mini_calendar .dhx_calendar_click {
+  background-color: #C2D5FC;
+}
+.dhx_cal_navline div.dhx_minical_icon {
+  width: 18px;
+  height: 18px;
+  left: 190px;
+  top: 1px;
+  cursor: pointer;
+  background-image: url(imgs/calendar.gif);
+}
+.dhx_matrix_scell {
+  height: 100%;
+}
+.dhx_matrix_cell,
+.dhx_matrix_scell {
+  overflow: hidden;
+  text-align: center;
+  vertical-align: middle;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_matrix_cell {
+  background-color: white;
+}
+.dhx_matrix_line {
+  overflow: hidden;
+}
+.dhx_matrix_cell div,
+.dhx_matrix_scell div {
+  overflow: hidden;
+  text-align: center;
+  height: auto;
+}
+.dhx_cal_lsection .dhx_readonly {
+  font-size: 9pt;
+  font-size: 8pt;
+  padding: 2px;
+  color: #887A2E;
+}
+.dhx_cal_event_line .dhx_event_resize {
+  cursor: w-resize;
+  background: url(imgs/resize_dots.png) repeat-y;
+  position: absolute;
+  top: 0;
+  width: 4px;
+  height: 100%;
+}
+.dhx_event_resize_start {
+  left: 0;
+}
+.dhx_event_resize_end {
+  right: 0;
+}
+/* Tree view */
+.dhx_matrix_scell.folder,
+.dhx_data_table.folder .dhx_matrix_cell {
+  background-color: #969394;
+  cursor: pointer;
+}
+.dhx_matrix_scell .dhx_scell_level0 {
+  padding-left: 5px;
+}
+.dhx_matrix_scell .dhx_scell_level1 {
+  padding-left: 20px;
+}
+.dhx_matrix_scell .dhx_scell_level2 {
+  padding-left: 35px;
+}
+.dhx_matrix_scell .dhx_scell_level3 {
+  padding-left: 50px;
+}
+.dhx_matrix_scell .dhx_scell_level4 {
+  padding-left: 65px;
+}
+.dhx_matrix_scell.folder {
+  font-weight: bold;
+  text-align: left;
+}
+.dhx_matrix_scell.folder .dhx_scell_expand {
+  float: left;
+  width: 10px;
+  padding-right: 3px;
+}
+.dhx_matrix_scell.folder .dhx_scell_name {
+  float: left;
+  width: auto;
+}
+.dhx_matrix_scell.item .dhx_scell_name {
+  padding-left: 15px;
+  text-align: left;
+}
+.dhx_data_table.folder .dhx_matrix_cell {
+  border-right: 0;
+}
+.dhx_section_timeline {
+  overflow: hidden;
+  padding: 4px 0 2px 10px;
+}
+.dhx_section_timeline select {
+  width: 552px;
+}
+/* Tree view end*/
+/* Map view */
+.dhx_map_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+  background-image: url(imgs/databg.png);
+}
+.dhx_map_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_map_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_map {
+  position: absolute;
+}
+.dhx_map_line div {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .dhx_map_description {
+  float: left;
+  border-right: 0 dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_date,
+.dhx_map_line .headline_description {
+  border-left: 0;
+}
+.dhx_map_line .line_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: left;
+  padding-left: 5px;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line.highlight {
+  background-color: #C4C5CC;
+}
+.dhx_map_area .dhx_map_line div {
+  border-right: 0px dotted #8894A3;
+}
+/* Map view end */
+/* dhtmlXTooltip start */
+.dhtmlXTooltip.tooltip {
+  -moz-box-shadow: 3px 3px 3px #888888;
+  -webkit-box-shadow: 3px 3px 3px #888888;
+  -o-box-shadow: 3px 3px 3px #888888;
+  box-shadow: 3px 3px 3px #888888;
+  filter: progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);
+  background-color: white;
+  border-left: 1px dotted #887A2E;
+  border-top: 1px dotted #887A2E;
+  color: #887A2E;
+  cursor: default;
+  padding: 10px;
+  position: absolute;
+  z-index: 500;
+  font-family: Tahoma;
+  font-size: 8pt;
+  opacity: 1;
+}
+/* dhtmlXTooltip end */
+/* Lightbox checkbox section */
+.dhx_cal_checkbox label {
+  padding-left: 5px;
+}
+/* Lightbox checkbox section end */
+/* Lightbox radiobuttons section */
+.dhx_cal_light .radio {
+  padding: 2px 0px 2px 10px;
+}
+.dhx_cal_light .radio input,
+.dhx_cal_light .radio label {
+  line-height: 15px;
+}
+.dhx_cal_light .radio input {
+  vertical-align: middle;
+  margin: 0px;
+  padding: 0px;
+}
+.dhx_cal_light .radio label {
+  vertical-align: middle;
+  padding-right: 10px;
+}
+/* Lightbox radiobuttons section end */
+/* Lightbox dhtmlx combo section */
+.dhx_cal_light .combo {
+  padding: 4px;
+}
+.dhx_cal_light_wide .dhx_combo_box {
+  width: 608px !important;
+  left: 10px;
+}
+/* Lightbox dhtmlx combo section end */
+/* Agenda week start */
+.dhx_wa_column {
+  float: left;
+}
+.dhx_wa_column_last .dhx_wa_day_cont {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_wa_scale_bar {
+  font-family: Tahoma;
+  padding-left: 10px;
+  font-size: 11px;
+  border-top: 1px dotted #8894A3;
+  border-bottom: 1px dotted #8894A3;
+}
+.dhx_wa_day_data {
+  background-color: #FCFEFC;
+  overflow-y: auto;
+}
+.dhx_wa_ev_body {
+  border-bottom: 1px dotted #778899;
+  font-size: 12px;
+  padding: 5px 0 5px 7px;
+}
+.dhx_wa_dnd {
+  font-family: Tahoma;
+  position: absolute;
+  padding-right: 7px;
+  color: #887AE2 !important;
+  background-color: #FFE763 !important;
+  border: 1px solid #B7A543;
+}
+.dhx_cal_event_selected {
+  background-color: #9cc1db;
+  color: white;
+}
+/* Agenda week end */
+/* timeline second scale start */
+.dhx_second_scale_bar {
+  border-bottom: 1px dotted #586A7E;
+  padding-top: 2px;
+}
+/* timeline second scale end */
+/* grid view */
+.dhx_cal_header div div {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_grid_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  background-color: #FCFEFC;
+}
+.dhx_grid_area table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  width: 100%;
+  table-layout: fixed;
+}
+.dhx_grid_area td {
+  table-layout: fixed;
+  text-align: center;
+}
+.dhx_grid_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_grid_line div {
+  float: left;
+  cursor: default;
+  padding-top: 0;
+  padding-bottom: 0;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_grid_area td,
+.dhx_grid_line div {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.dhx_grid_area tr.dhx_grid_event {
+  height: 21px;
+  overflow: hidden;
+  margin: 0 0 1px 0;
+}
+.dhx_grid_area tr.dhx_grid_event td {
+  /*borders for old ies*/
+  border-bottom: 1px solid #ECEEF4;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td,
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td {
+  border-bottom-width: 0px;
+  border-bottom-style: none;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) {
+  background-color: #ECEEF4;
+}
+.dhx_grid_area .dhx_grid_dummy {
+  table-layout: auto;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+.dhx_grid_v_border {
+  position: absolute;
+  border-right: 1px solid #A4BED4;
+  width: 1px;
+  height: 100%;
+}
+.dhx_grid_event_selected {
+  background-color: #9cc1db !important;
+  color: white !important;
+}
+.dhx_grid_sort_desc .dhx_grid_view_sort {
+  background-position: 0 -55px;
+}
+.dhx_grid_sort_asc .dhx_grid_view_sort {
+  background-position: 0 -66px;
+}
+.dhx_grid_view_sort {
+  width: 10px;
+  height: 10px;
+  position: absolute;
+  border: none !important;
+  top: 5px;
+  background-repeat: no-repeat;
+  background-image: url(imgs/images.png);
+}
+/* end grid */
+/* marked timespans */
+.dhx_marked_timespan {
+  position: absolute;
+  width: 100%;
+  margin-left: 0;
+  /* fix bootstrap conflict [class*="span"] */
+}
+.dhx_time_block {
+  position: absolute;
+  width: 100%;
+  background: silver;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+  z-index: 1;
+}
+.dhx_time_block_reset {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.dhx_scheduler_month .dhx_marked_timespan {
+  display: none;
+}
+.dhx_mini_calendar .dhx_marked_timespan {
+  display: none;
+}
+/* now time */
+.dhx_now_time {
+  width: 100%;
+  border-bottom: 2px solid red;
+  z-index: 1;
+}
+.dhx_scheduler_month .dhx_now_time {
+  border-bottom: 0;
+  border-left: 2px solid red;
+}
+.dhx_matrix_now_time {
+  border-left: 2px solid red;
+  z-index: 1;
+}
+.dhx_now_time,
+.dhx_matrix_now_time {
+  opacity: 0.5;
+}
+/* Quick info */
+.dhx_cal_quick_info {
+  border: 2px solid #888;
+  border-radius: 5px;
+  position: absolute;
+  z-index: 300;
+  background-color: #8e99ae;
+  background-color: rgba(98, 107, 127, 0.5);
+  padding-left: 7px;
+  width: 300px;
+  transition: left 0.5s ease, right 0.5s;
+  -moz-transition: left 0.5s ease, right 0.5s;
+  -webkit-transition: left 0.5s ease, right 0.5s;
+  -o-transition: left 0.5s ease, right 0.5s;
+}
+.dhx_no_animate {
+  transition: none;
+  -moz-transition: none;
+  -webkit-transition: none;
+  -o-transition: none;
+}
+.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon {
+  float: right;
+}
+.dhx_cal_qi_title {
+  padding: 5px 0px 10px 5px;
+  color: #FFF;
+  letter-spacing: 1px;
+}
+.dhx_cal_qi_tdate {
+  font-size: 14px;
+}
+.dhx_cal_qi_tcontent {
+  font-size: 18px;
+  font-weight: bold;
+}
+.dhx_cal_qi_content {
+  border: 1px solid #888;
+  background-color: #fefefe;
+  padding: 16px 8px;
+  font-size: 14px;
+  color: #444;
+  width: 275px;
+  overflow: hidden;
+}
+.dhx_qi_big_icon {
+  border-radius: 3px;
+  color: #444;
+  margin: 5px 9px 5px 0px;
+  min-width: 60px;
+  line-height: 20px;
+  vertical-align: middle;
+  padding: 5px 10px 5px 5px;
+  cursor: pointer;
+  background-color: #fefefe;
+  border-bottom: 1px solid #666;
+  border-right: 1px solid #666;
+  float: left;
+}
+.dhx_cal_qi_controls div {
+  float: left;
+  height: 20px;
+  text-align: center;
+  line-height: 20px;
+}
+.dhx_qi_big_icon .dhx_menu_icon {
+  margin: 0 8px 0 0px;
+}
+.dhx_drag_marker {
+  width: 100%;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: #FFE763;
+  position: absolute;
+  box-sizing: border-box !important;
+  border-top: 1px solid #B6B6B6;
+  border-bottom: 1px solid #b6b6b6;
+}
+/* bootstrap CSS fix start */
+.dhx_cal_navline div,
+.dhx_cal_header,
+.dhx_cal_header div,
+.dhx_cal_data,
+.dhx_cal_data div,
+.dhx_cal_data table *,
+.dhx_multi_day,
+.dhx_multi_day div,
+.dhx_tooltip_line div,
+.dhx_cal_quick_info,
+.dhx_cal_quick_info div {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+.dhx_cal_data table {
+  border-collapse: separate;
+}
+.dhx_cal_light .dhx_cal_radio label {
+  margin-bottom: 0;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+/* bootstrap CSS fix end */
+.dhx_cal_container {
+  background-color: #C2D5FC;
+  font-family: Tahoma;
+  font-size: 8pt;
+  position: relative;
+  overflow: hidden;
+}
+.dhx_cal_container div {
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_navline {
+  height: 20px;
+  position: absolute;
+  z-index: 3;
+  width: 750px;
+  color: #2F3A48;
+}
+.dhx_cal_navline div {
+  position: absolute;
+  top: 2px;
+  white-space: nowrap;
+}
+.dhx_cal_navline .dhx_cal_date {
+  font-weight: 600;
+  left: 210px;
+  padding-top: 1px;
+}
+.dhx_cal_button .dhx_left_bg {
+  width: 1px;
+  overflow: hidden;
+  height: 17px;
+  z-index: 20;
+  top: 0px;
+}
+.dhx_cal_prev_button {
+  background-image: url(imgs/buttons.png);
+  background-position: 0px 0px;
+  width: 29px;
+  height: 17px;
+  left: 50px;
+  cursor: pointer;
+}
+.dhx_cal_next_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -30px 0px;
+  width: 29px;
+  height: 17px;
+  left: 80px;
+  cursor: pointer;
+}
+.dhx_cal_today_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -60px 0px;
+  width: 75px;
+  height: 17px;
+  left: 112px;
+  cursor: pointer;
+  text-align: center;
+  text-decoration: underline;
+}
+.dhx_cal_tab {
+  width: 59px;
+  height: 19px;
+  text-align: center;
+  text-decoration: underline;
+  padding-top: 2px;
+  cursor: pointer;
+  background-color: #D8E1EA;
+  -webkit-border-top-left-radius: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.dhx_cal_tab.active {
+  text-decoration: none;
+  cursor: default;
+  font-weight: bold;
+  border: 1px dotted #586A7E;
+  border-bottom: 0;
+  background-color: #C2D5FC;
+}
+.dhx_cal_header {
+  position: absolute;
+  left: 10px;
+  top: 23px;
+  width: 750px;
+  border-top: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+  z-index: 2;
+  overflow: hidden;
+  color: #2F3A48;
+}
+.dhx_cal_data {
+  -webkit-tap-highlight-color: transparent;
+  border-top: 1px dotted #8894A3;
+  position: absolute;
+  top: 44px;
+  width: 600px;
+  overflow-y: auto;
+  overflow-x: hidden;
+  -webkit-overflow-scrolling: touch;
+}
+.dhx_cal_data {
+  -ms-touch-action: pan-y;
+}
+.dhx_cal_event,
+.dhx_cal_event_line,
+.dhx_cal_event_clear {
+  -ms-touch-action: none;
+}
+.dhx_scale_bar {
+  position: absolute;
+  text-align: center;
+  background-color: #C2D5FC;
+  padding-top: 3px;
+  border-left: 1px dotted #586A7E;
+}
+.dhx_scale_holder {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg.png);
+}
+.dhx_scale_holder_now {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg_now.png);
+}
+.dhx_scale_hour {
+  height: 41px;
+  width: 50px;
+  border-bottom: 1px dotted #8894A3;
+  background-color: #C2D5FC;
+  text-align: center;
+  line-height: 40px;
+  color: #586A7E;
+  overflow: hidden;
+}
+.dhx_month_head {
+  background-color: #EBEFF4;
+  color: #2F3A48;
+  height: 18px;
+  padding-right: 5px;
+  padding-top: 3px;
+  text-align: right;
+  border-right: 1px dotted #586A7E;
+}
+.dhx_month_body {
+  border-right: 1px dotted #586A7E;
+  border-bottom: 1px dotted #586A7E;
+  background-color: #FFFFFF;
+}
+.dhx_now .dhx_month_body {
+  background-color: #E2EDFF;
+}
+.dhx_after .dhx_month_body,
+.dhx_before .dhx_month_body {
+  background-color: #ECECEC;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head {
+  background-color: #E2E3E6;
+  color: #94A6BB;
+}
+.dhx_now .dhx_month_head {
+  background-color: #D1DEF4;
+  font-weight: bold;
+}
+.dhx_scale_ignore {
+  display: none;
+}
+.dhx_cal_drag {
+  position: absolute;
+  z-index: 9999;
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.dhx_loading {
+  position: absolute;
+  width: 128px;
+  height: 15px;
+  background-image: url(imgs/loading.gif);
+  z-index: 9999;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day {
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day {
+  position: absolute;
+  border-top: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  background-position: center center;
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon {
+  background-image: url(imgs/clock_big.gif);
+}
+.dhx_multi_day_icon_small {
+  background-image: url(imgs/clock_small.gif);
+}
+.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
+  background-color: #d0e5ff;
+}
+/* left border config option support */
+.dhx_scale_hour_border,
+.dhx_month_body_border,
+.dhx_scale_bar_border,
+.dhx_month_head_border {
+  border-left: 1px dotted #8894A3;
+}
+/* export to PDF and iCal buttons start */
+.dhx_cal_navline .dhx_cal_export {
+  width: 18px;
+  height: 18px;
+  margin: 2px;
+  cursor: pointer;
+  top: 0px;
+}
+.dhx_cal_navline .dhx_cal_export.pdf {
+  left: 2px;
+  background-image: url('imgs/export_pdf.png');
+}
+.dhx_cal_navline .dhx_cal_export.ical {
+  left: 24px;
+  background-image: url('imgs/export_ical.png');
+}
+/* export to PDF and iCal buttons end */
+/*All*/
+.dhx_form_repeat,
+.dhx_form_repeat input {
+  padding: 0;
+  margin: 0;
+  padding-left: 5px;
+  font-family: Tahoma, Verdana;
+  font-size: 11px;
+  line-height: 24px;
+}
+.dhx_form_repeat {
+  overflow: hidden;
+  /*height:115px;*/
+  background-color: #FFF4B5;
+  /*border: 1px solid #DCC43E;*/
+}
+.dhx_cal_light_wide .dhx_form_repeat {
+  background-color: transparent;
+}
+.dhx_repeat_center,
+.dhx_repeat_left,
+.dhx_repeat_divider,
+.dhx_repeat_right {
+  height: 115px;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.dhx_repeat_center,
+.dhx_repeat_left {
+  padding: 10px 0 0px 10px;
+  float: left;
+}
+.dhx_repeat_left {
+  width: 105px;
+}
+.dhx_repeat_center {
+  width: 345px;
+  padding-top: 22px;
+}
+.dhx_repeat_divider {
+  float: left;
+  border-left: 1px dotted #DCC43E;
+  /*background-color: #DCC43E;*/
+  width: 1px;
+}
+.dhx_repeat_right {
+  float: right;
+  width: 173px;
+  padding: 17px 3px 0px 10px;
+}
+input.dhx_repeat_text {
+  height: 16px;
+  width: 27px;
+  margin: 0 4px 0 4px;
+  line-height: 18px;
+  padding: 0 0 0 2px;
+}
+.dhx_form_repeat select {
+  height: 20px;
+  width: 87px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+}
+input.dhx_repeat_date {
+  height: 18px;
+  width: 80px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+  background-repeat: no-repeat;
+  background-position: 64px 0;
+  border: 1px #7f9db9 solid;
+  line-height: 18px;
+}
+input.dhx_repeat_radio {
+  margin-right: 4px;
+}
+input.dhx_repeat_checkbox {
+  margin: 4px 4px 0 0;
+}
+.dhx_repeat_days td {
+  padding-right: 5px;
+}
+.dhx_repeat_days label {
+  font-size: 10px;
+}
+.dhx_custom_button {
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_custom_button_recurring {
+  background-image: url(imgs/but_repeat.gif);
+  background-position: -5px 20px;
+  width: 20px;
+  margin-right: 10px;
+}
+/* increase width of lightbox */
+.dhx_cal_light_rec {
+  width: 640px;
+}
+.dhx_cal_light_rec .dhx_cal_larea {
+  width: 632px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide {
+  width: 816px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea {
+  width: 808px;
+}
+/* event start */
+.dhx_cal_event .dhx_title {
+  border-width: 1px 1px 0 1px;
+  padding-top: 1px;
+  -webkit-border-top-left-radius: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  font-family: arial;
+  font-weight: bold;
+  font-size: 12px;
+  line-height: 12px;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event.dhx_cal_select_menu .dhx_body {
+  padding-bottom: 8px;
+  -webkit-border-bottom-right-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event.dhx_cal_select_menu .dhx_footer {
+  display: none;
+}
+.dhx_cal_event.dhx_cal_select_menu {
+  -webkit-box-shadow: 0 0 1px #FFF;
+  -moz-box-shadow: 0 0 1px #FFF;
+  box-shadow: 0 0 1px #FFF;
+}
+.dhx_cal_event .dhx_footer {
+  height: 5px;
+  border: 0;
+  margin-top: -6px;
+  background: url(imgs_dhx_terrace/resizing.png) no-repeat center center;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event .dhx_footer,
+.dhx_cal_event .dhx_body,
+.dhx_cal_event .dhx_title {
+  background-color: #1796b0;
+  border-color: transparent;
+  color: white;
+}
+.dhx_cal_event.dhx_cal_editor {
+  border: 1px solid transparent;
+}
+.dhx_cal_editor {
+  font-size: 12px;
+  font-family: Arial, sans-serif;
+}
+div.dhx_menu_head,
+div.dhx_menu_icon {
+  background-image: url(imgs_dhx_terrace/controls.png);
+}
+.dhx_cal_event_line {
+  border: 1px solid transparent;
+  background-color: #1796b0;
+  color: white;
+  height: 17px;
+  line-height: 17px;
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  border-radius: 2px;
+}
+.dhx_cal_event_line_start {
+  -webkit-border-top-left-radius: 9px;
+  -webkit-border-bottom-left-radius: 9px;
+  -moz-border-radius-topleft: 9px;
+  -moz-border-radius-bottomleft: 9px;
+  border-top-left-radius: 9px;
+  border-bottom-left-radius: 9px;
+}
+.dhx_cal_event_line_end {
+  -webkit-border-top-right-radius: 9px;
+  -webkit-border-bottom-right-radius: 9px;
+  -moz-border-radius-topright: 9px;
+  -moz-border-radius-bottomright: 9px;
+  border-top-right-radius: 9px;
+  border-bottom-right-radius: 9px;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event_line {
+  font-size: 12px;
+  font-family: Arial, sans-serif;
+}
+/* event end */
+/* scales, containers start */
+.dhx_cal_container {
+  background-color: white;
+}
+.dhx_cal_data {
+  border-top: 1px solid #CECECE;
+}
+.dhx_scale_holder {
+  background-image: url(imgs_dhx_terrace/databg.png);
+  border-right: 1px solid #CECECE;
+}
+.dhx_scale_holder_now {
+  background-image: url(imgs_dhx_terrace/databg_now.png);
+  border-right: 1px solid #CECECE;
+}
+.dhx_scale_hour {
+  border-bottom: 1px solid #CECECE;
+  background-color: white;
+  font: 11px/44px Arial;
+  color: #767676;
+}
+.dhx_cal_header {
+  border: 1px solid #CECECE;
+  border-left: 0;
+  border-bottom: 0;
+}
+.dhx_scale_bar {
+  border-left: 1px solid #CECECE;
+}
+.dhx_scale_bar {
+  font: 11px/16px Arial;
+  color: #767676;
+  padding-top: 2px;
+  background-color: white;
+}
+/* scales, containers end */
+/* navigation start */
+.dhx_cal_navline div {
+  top: 14px;
+}
+.dhx_cal_tab,
+.dhx_cal_date,
+.dhx_cal_today_button,
+.dhx_cal_prev_button,
+.dhx_cal_next_button {
+  color: #454544;
+  height: 30px;
+  line-height: 30px;
+  background: none;
+  border: 1px solid #CECECE;
+}
+.dhx_cal_navline .dhx_cal_date {
+  border: 0;
+  font-size: 18px;
+  font-weight: normal;
+  font-family: arial;
+  width: 100%;
+  top: 14px;
+  text-align: center;
+  position: absolute;
+  left: 0;
+  z-index: -1;
+}
+.dhx_cal_today_button {
+  color: #747473;
+  left: auto;
+  right: 123px;
+  background: none;
+  text-decoration: none;
+  width: 80px;
+  font-size: 12px;
+  font-weight: bold;
+  font-family: arial;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.dhx_cal_prev_button,
+.dhx_cal_next_button {
+  left: auto;
+  width: 46px;
+}
+.dhx_cal_prev_button {
+  right: 61px;
+  background: url(imgs_dhx_terrace/arrow_left.png) no-repeat center center;
+  -webkit-border-top-left-radius: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -moz-border-radius-topleft: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  border-top-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+}
+.dhx_cal_next_button {
+  right: 14px;
+  background: url(imgs_dhx_terrace/arrow_right.png) no-repeat center center;
+  -webkit-border-top-right-radius: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -moz-border-radius-bottomright: 5px;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+}
+.dhx_cal_tab {
+  color: #747473;
+  width: 60px;
+  padding-top: 0;
+  text-decoration: none;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+  font-weight: bold;
+  font-family: arial;
+  font-size: 12px;
+}
+.dhx_cal_tab.active {
+  background-color: #F0EDE7;
+  color: #454544;
+  border: 1px solid #CECECE;
+  text-shadow: 0px 1px 0px white;
+}
+.dhx_cal_tab_first {
+  -webkit-border-top-left-radius: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+  -moz-border-radius-topleft: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  border-top-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+}
+.dhx_cal_tab_last {
+  -webkit-border-top-right-radius: 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -moz-border-radius-topright: 5px;
+  -moz-border-radius-bottomright: 5px;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+}
+.dhx_cal_tab_standalone {
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+  padding: 0 5px;
+}
+.dhx_multi_day,
+.dhx_multi_day_icon_small,
+.dhx_multi_day_icon {
+  background-color: white;
+}
+.dhx_multi_day {
+  border-top: 1px solid #CECECE;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  border-bottom: 1px solid #CECECE;
+  border-right: 1px solid #CECECE;
+}
+.dhx_multi_day_icon_small {
+  background-image: url(imgs_dhx_terrace/clock_small.gif);
+}
+.dhx_multi_day_icon {
+  background-image: url(imgs_dhx_terrace/clock_big.gif);
+}
+/* navigation end */
+/* month view start */
+.dhx_month_head,
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head,
+.dhx_after .dhx_month_body,
+.dhx_before .dhx_month_body {
+  background-color: white;
+}
+.dhx_month_head {
+  height: 21px;
+  padding-top: 0;
+  font: 12px/21px Arial;
+  color: #362d26;
+  border-right: 1px solid #CECECE;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head,
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head {
+  color: #bbbbbb;
+}
+.dhx_month_body {
+  border-right: 1px solid #CECECE;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_now .dhx_month_head,
+.dhx_now .dhx_month_body {
+  background-color: #FFF3A1;
+  font-weight: normal;
+}
+.dhx_cal_event_clear {
+  color: #0E64A0;
+}
+/* month view end */
+/* lightbox start */
+.dhx_cal_larea {
+  margin-left: 0;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  margin-left: 3px;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  padding: 5px 0;
+}
+.dhx_cal_light,
+.dhx_cal_larea,
+.dhx_cal_lsection,
+.dhx_wrap_section,
+.dhx_cal_light_wide .dhx_wrap_section,
+.dhx_cal_ltext textarea {
+  background-color: white;
+}
+.dhx_cal_lsection,
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,
+.dhx_cal_lsection .dhx_fullday,
+.dhx_cal_light input {
+  color: #747473;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  border-top: 0;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_cal_larea {
+  border: 1px solid transparent;
+}
+.dhx_cal_ltext textarea,
+.dhx_cal_light select,
+.dhx_cal_light {
+  color: #2E2E2E;
+}
+.dhx_cal_light {
+  border: 1px solid #CECECE;
+}
+.dhx_cal_light_wide .dhx_cal_lsection,
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday {
+  font-size: 13px;
+}
+.dhx_section_time {
+  background-color: transparent;
+}
+.dhx_save_btn,
+.dhx_cancel_btn,
+.dhx_delete_btn,
+.dhx_btn_set div:first-child {
+  display: none;
+}
+.dhx_btn_set,
+.dhx_btn_set div {
+  height: 30px;
+  padding: 0 20px;
+  line-height: 30px;
+}
+.dhx_btn_set {
+  margin: 12px 0 0 0;
+  padding: 0;
+  font-size: 12px;
+  color: #454544;
+  font-weight: bold;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.dhx_left_btn_set {
+  margin-left: 20px;
+}
+.dhx_right_btn_set {
+  margin-right: 20px;
+}
+.dhx_save_btn_set {
+  border: 1px solid #22A1BC;
+  color: white;
+  text-shadow: 0px -1px 0px #6f6f6f;
+  background-color: #22A1BC;
+}
+.dhx_btn_set,
+.dhx_cancel_btn_set {
+  border: 1px solid #CECECE;
+}
+.dhx_delete_btn_set {
+  border: 1px solid #FF8831;
+  background-color: #FF8831;
+  color: white;
+  text-shadow: 0px -1px 0px #93755f;
+}
+.dhx_cal_ltitle {
+  height: 30px;
+  line-height: 30px;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_cal_ltitle span {
+  float: left;
+}
+.dhx_cal_light .dhx_title {
+  padding-left: 13px;
+}
+.dhx_mark {
+  display: none;
+}
+.dhx_time {
+  padding-left: 10px;
+}
+.dhx_close_icon {
+  float: right;
+  width: 9px;
+  height: 9px;
+  background: url(imgs_dhx_terrace/close_icon.png) no-repeat center center;
+  padding: 10px;
+  margin-top: 1px;
+}
+.dhx_cal_light_wide .dhx_cal_ltext.dhx_cal_template {
+  line-height: 22px;
+}
+.dhx_cal_ltext textarea {
+  line-height: 20px;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  border: 1px solid #CECECE;
+  background-color: #F9F9F9;
+}
+/* lightbox end */
+/* modal box */
+.dhtmlx_modal_box {
+  background: white;
+  width: 330px;
+}
+.dhtmlx_popup_controls {
+  padding-bottom: 9px;
+}
+.dhtmlx_popup_button,
+.dhtmlx_popup_button:active,
+.dhtmlx_popup_button div,
+.dhtmlx_popup_button div:active {
+  color: #444;
+  background: white;
+  box-shadow: none;
+}
+.dhtmlx_popup_button.dhtmlx_ok_button {
+  border: 1px solid #22A1BC;
+  background-color: #22A1BC;
+}
+.dhtmlx_popup_button.dhtmlx_ok_button div {
+  background: #22A1BC;
+  border: 1px solid #22A1BC;
+  color: white;
+  text-shadow: 0px -1px 0px #6f6f6f;
+}
+/* mobdal box end */
+/* minicalendar */
+.dhx_cal_container.dhx_mini_calendar {
+  box-sizing: border-box;
+  border: 1px solid #CECECE;
+  box-shadow: 2px 2px 5px #CCC;
+  border-radius: 3px;
+}
+.dhx_mini_calendar .dhx_year_month {
+  border: 1px solid #CECECE;
+  font-family: Arial;
+}
+.dhx_mini_calendar .dhx_month_head,
+.dhx_mini_calendar .dhx_year_month,
+.dhx_mini_calendar .dhx_month_body,
+.dhx_mini_calendar .dhx_scale_bar,
+.dhx_mini_calendar .dhx_year_body {
+  border-color: transparent;
+}
+.dhx_mini_calendar .dhx_year_body {
+  padding-top: 1px;
+}
+.dhx_mini_calendar .dhx_scale_bar {
+  border-width: 0;
+}
+.dhx_mini_calendar .dhx_year_week {
+  border-bottom: 1px solid #CECECE;
+  padding-top: 1px;
+}
+.dhx_mini_calendar .dhx_month_head {
+  padding-right: 0;
+  margin-right: 1px;
+  text-align: center;
+}
+.dhx_mini_calendar .dhx_cal_prev_button,
+.dhx_mini_calendar .dhx_cal_next_button {
+  border: 0;
+  height: 20px;
+}
+/* minicalendar end */
+.dhx_cal_navline div.dhx_minical_icon {
+  left: 210px;
+  top: 14px;
+  width: 30px;
+  height: 30px;
+  background: url(imgs_dhx_terrace/calendar.gif) no-repeat;
+  background-position: 3px 5px;
+}
+/* timeline */
+.dhx_cal_event_line .dhx_event_resize {
+  background: url(imgs_dhx_terrace/resize_dots.png) repeat-y;
+}
+.dhx_matrix_scell,
+.dhx_matrix_cell {
+  border-bottom: 1px solid #CECECE;
+  border-right: 1px solid #CECECE;
+}
+.dhx_cal_header div div {
+  border-left: 1px solid #CECECE;
+}
+.dhx_matrix_scell.folder {
+  border-right: 0;
+}
+.dhx_second_scale_bar {
+  border-bottom: 1px solid #CECECE;
+}
+/* timeline end */
+/* recurring */
+.dhx_repeat_divider {
+  border-left: 1px solid #CECECE;
+}
+.dhx_custom_button {
+  background-color: white;
+  border: 1px solid #CECECE;
+  color: #747473;
+}
+.dhx_cal_light_wide .dhx_custom_button {
+  margin-top: 6px;
+}
+.dhx_custom_button_recurring {
+  background-image: url(imgs_dhx_terrace/but_repeat.gif);
+}
+/* recurring end */
+/* agenda */
+.dhx_v_border,
+.dhx_agenda_line div {
+  border-right: 1px solid #CECECE;
+}
+/* agenda end */
+/* year */
+.dhx_year_month {
+  border: 1px solid #CECECE;
+}
+.dhx_scale_bar_last {
+  border-right: 1px solid #CECECE;
+}
+.dhx_year_body {
+  border-left: 1px solid #CECECE;
+}
+/* year end */
+/* expand */
+.dhx_expand_icon {
+  top: -3px;
+}
+/* expand end */
+/* units view */
+.dhx_scale_bar .dhx_cal_next_button,
+.dhx_scale_bar .dhx_cal_prev_button {
+  width: 20px;
+  height: 20px;
+  top: 0px !important;
+  border: 0;
+}
+.dhx_scale_bar .dhx_cal_next_button {
+  right: 1px !important;
+  border-left: 1px solid #CECECE;
+}
+.dhx_scale_bar .dhx_cal_prev_button {
+  left: 1px !important;
+  border-right: 1px solid #CECECE;
+}
+/* units view end */
+/* map view */
+.dhx_map_line .headline_date,
+.dhx_map_line .headline_description {
+  border: 0;
+}
+.dhx_map_line .headline_date {
+  border-right: 1px solid #CECECE;
+}
+/* map view end */
+/* tooltip start */
+.dhtmlXTooltip.tooltip {
+  border-left: 1px solid #CECECE;
+  border-top: 1px solid #CECECE;
+  color: #747473;
+  font-size: 12px;
+  line-height: 16px;
+}
+/* tooltip end */
+/* week agenda start */
+.dhx_wa_scale_bar {
+  border-top: 1px solid #CECECE;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_wa_column_last .dhx_wa_day_cont {
+  border-left: 1px solid #CECECE;
+}
+.dhx_wa_ev_body {
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_wa_scale_bar {
+  background-color: #f0ede7;
+}
+.dhx_wa_ev_body.dhx_cal_event_selected {
+  background-color: #fff3a1;
+  color: #362d26;
+}
+.dhx_wa_dnd {
+  background-color: #fddb93 !important;
+  color: #747473 !important;
+  border: 1px solid #ccb177;
+}
+/* week agenda end */
+/* readonly start */
+.dhx_text_disabled {
+  color: #2E2E2E;
+}
+.dhx_cal_ltext .dhx_text_disabled {
+  line-height: 22px;
+}
+/* readonly end */
+/* grid view start */
+.dhx_grid_v_border {
+  border-right-color: #CECECE;
+}
+/* grid view end*/
+/* left border support */
+.dhx_scale_hour_border,
+.dhx_month_body_border,
+.dhx_scale_bar_border,
+.dhx_month_head_border {
+  border-left: 1px solid #CECECE;
+}
+.dhx_cal_quick_info {
+  background: rgba(50, 50, 50, 0.5);
+}
+.dhx_qi_big_icon {
+  background: #1796b0;
+  color: white;
+}
+/* export to PDF and iCal buttons start */
+.dhx_cal_navline .dhx_cal_export {
+  width: 32px;
+  height: 32px;
+  margin: 2px;
+  cursor: pointer;
+  top: 12px;
+}
+.dhx_cal_navline .dhx_cal_export.pdf {
+  left: auto;
+  right: 249px;
+  background-image: url('imgs_dhx_terrace/export_pdf.png');
+}
+.dhx_cal_navline .dhx_cal_export.ical {
+  left: auto;
+  right: 210px;
+  background-image: url('imgs_dhx_terrace/export_ical.png');
+}
+/* export to PDF and iCal buttons end */
+/* minicalendar */
+.dhx_mini_calendar {
+  padding: 5px;
+}
+.dhx_mini_calendar .dhx_year_event,
+.dhx_mini_calendar .dhx_calendar_click {
+  border-radius: 7px;
+}
+.dhx_mini_calendar .dhx_month_head {
+  margin: 2px 2px;
+}
+.dhx_mini_calendar .dhx_year_month {
+  line-height: 20px;
+  height: 25px;
+  font-size: 14px;
+}
+.dhx_mini_calendar .dhx_cal_prev_button {
+  top: 8px !important;
+}
+.dhx_mini_calendar .dhx_cal_next_button {
+  top: 8px !important;
+}
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.xml
new file mode 100644
index 0000000000..15c5da9771
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.css
new file mode 100644
index 0000000000..bf402269d5
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.css
@@ -0,0 +1,1572 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area {
+  position: fixed;
+  right: 5px;
+  width: 250px;
+  z-index: 1000;
+}
+.dhtmlx-info {
+  min-width: 120px;
+  padding: 4px 4px 4px 20px;
+  font-family: Tahoma;
+  z-index: 10000;
+  overflow: hidden;
+  margin: 5px;
+  margin-bottom: 10px;
+  -webkit-transition: all .5s ease;
+  -moz-transition: all .5s ease;
+  -o-transition: all .5s ease;
+  transition: all .5s ease;
+}
+.dhtmlx-info.hidden {
+  height: 0px;
+  padding: 0px;
+  border-width: 0px;
+  margin: 0px;
+  overflow: hidden;
+}
+.dhtmlx_modal_box {
+  overflow: hidden;
+  display: inline-block;
+  min-width: 300px;
+  width: 300px;
+  text-align: center;
+  position: fixed;
+  background-color: #fff;
+  background: -webkit-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  background: -moz-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  box-shadow: 0px 0px 14px #888;
+  font-family: Tahoma;
+  z-index: 20000;
+  border-radius: 6px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx_popup_title {
+  border-top-left-radius: 5px;
+  border-top-right-radius: 5px;
+  border-width: 0px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+}
+.dhtmlx-info,
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  user-select: none;
+  -webkit-user-select: none;
+  -moz-user-select: -moz-none;
+  cursor: pointer;
+}
+.dhtmlx_popup_text {
+  overflow: hidden;
+}
+.dhtmlx_popup_controls {
+  border-radius: 6px;
+  padding: 5px;
+}
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  height: 30px;
+  line-height: 30px;
+  display: inline-block;
+  margin: 0 5px;
+  border-radius: 6px;
+  color: #FFF;
+}
+.dhtmlx_popup_button {
+  min-width: 120px;
+}
+div.dhx_modal_cover {
+  background-color: #000;
+  cursor: default;
+  filter: alpha(opacity=20);
+  opacity: 0.2;
+  position: fixed;
+  z-index: 19999;
+  left: 0px;
+  top: 0px;
+  width: 100%;
+  height: 100%;
+  border: none;
+  zoom: 1;
+}
+.dhtmlx-info img,
+.dhtmlx_modal_box img {
+  float: left;
+  margin-right: 20px;
+}
+.dhtmlx-alert-error .dhtmlx_popup_title,
+.dhtmlx-confirm-error .dhtmlx_popup_title {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);
+}
+.dhtmlx-alert-error,
+.dhtmlx-confirm-error {
+  border: 1px solid #ff0000;
+}
+/*Skin section*/
+.dhtmlx_button,
+.dhtmlx_popup_button {
+  box-shadow: 0px 0px 4px #888;
+  border: 1px solid #838383;
+}
+.dhtmlx_button input,
+.dhtmlx_popup_button div {
+  border: 1px solid #FFF;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  border-radius: 6px;
+  font-size: 15px;
+  font-weight: normal;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  color: #fff;
+  padding: 0px;
+  margin: 0px;
+  vertical-align: top;
+  height: 28px;
+  line-height: 28px;
+}
+.dhtmlx_button input:focus,
+.dhtmlx_button input:active,
+.dhtmlx_popup_button div:active,
+.dhtmlx_popup_button div:focus {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+}
+.dhtmlx_popup_title {
+  color: #fff;
+  text-shadow: 1px 1px #000;
+  height: 40px;
+  line-height: 40px;
+  font-size: 20px;
+}
+.dhtmlx_popup_text {
+  margin: 15px 15px 5px 15px;
+  font-size: 14px;
+  color: #000;
+  min-height: 30px;
+  border-radius: 6px;
+}
+.dhtmlx-info,
+.dhtmlx-error {
+  font-size: 14px;
+  color: #000;
+  box-shadow: 0px 0px 10px #888;
+  padding: 0px;
+  background-color: #FFF;
+  border-radius: 3px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx-info div {
+  padding: 5px 10px 5px 10px;
+  background-color: #fff;
+  border-radius: 3px;
+  border: 1px solid #B8B8B8;
+}
+.dhtmlx-error {
+  background-color: #d81b1b;
+  border: 1px solid #ff3c3c;
+  box-shadow: 0px 0px 10px #000;
+}
+.dhtmlx-error div {
+  background-color: #d81b1b;
+  border: 1px solid #940000;
+  color: #FFF;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event .dhx_title,
+.dhx_cal_event .dhx_body,
+.dhx_cal_event .dhx_footer {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  color: #887A2E;
+  overflow: hidden;
+  width: 100%;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_move_denied .dhx_cal_event .dhx_header,
+.dhx_move_denied .dhx_cal_event .dhx_title {
+  cursor: default;
+}
+.dhx_cal_event .dhx_header {
+  height: 1px;
+  margin-left: 1px;
+  border-width: 1px 1px 0px 1px;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_title {
+  height: 12px;
+  border-width: 0px 1px 1px 1px;
+  border-bottom-style: dotted;
+  font-size: 7pt;
+  font-weight: bold;
+  text-align: center;
+  background-position: right;
+  background-repeat: no-repeat;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event.dhx_cal_select_menu .dhx_body {
+  border-width: 0 1px 1px 1px;
+  padding: 5px;
+}
+.dhx_resize_denied,
+.dhx_resize_denied .dhx_event_resize {
+  cursor: default !important;
+}
+.dhx_cal_event .dhx_event_resize {
+  cursor: s-resize;
+}
+.dhx_cal_event .dhx_footer,
+.dhx_cal_event .dhx_select_menu_footer {
+  height: 1px;
+  margin-left: 2px;
+  border-width: 0px 1px 1px 1px;
+  position: relative;
+}
+.dhx_cal_event_line {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  border-radius: 3px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 10px;
+  color: #887A2E;
+  cursor: pointer;
+  overflow: hidden;
+}
+.dhx_cal_event_clear {
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 2px;
+  color: #887A2E;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: pointer;
+}
+.dhx_in_move {
+  background-color: #FFFF80;
+}
+.dhx_cal_event.dhx_cal_editor {
+  border: 1px solid #B7A543;
+  border-top-style: dotted;
+  z-index: 999;
+  position: absolute;
+  overflow: hidden;
+}
+textarea.dhx_cal_editor {
+  width: 100%;
+  height: 100%;
+  border: 0 solid black;
+  margin: 0;
+  padding: 0;
+  overflow: auto;
+}
+div.dhx_menu_head {
+  background-image: url(imgs/controls.gif);
+  background-position: 0px -43px;
+  width: 10px;
+  height: 10px;
+  margin-left: 5px;
+  margin-top: 1px;
+  border: none;
+  cursor: default;
+}
+div.dhx_menu_icon {
+  background-image: url(imgs/controls.gif);
+  width: 20px;
+  height: 20px;
+  margin-left: -5px;
+  margin-top: 0px;
+  border: none;
+  cursor: pointer;
+}
+div.icon_details {
+  background-position: 0px 0px;
+}
+div.icon_edit {
+  background-position: -22px 0px;
+}
+div.icon_save {
+  background-position: -84px -1px;
+}
+div.icon_cancel {
+  background-position: -62px 0px;
+}
+div.icon_delete {
+  background-position: -42px 0px;
+}
+/*view more link in month view*/
+.dhx_month_link {
+  position: absolute;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  text-align: right;
+  cursor: pointer;
+  padding-right: 10px;
+}
+.dhx_month_link a {
+  color: blue;
+}
+.dhx_month_link a:hover {
+  text-decoration: underline;
+}
+.dhx_global_tip {
+  font-family: Tahoma, Helvetica;
+  text-align: center;
+  font-size: 20px;
+  position: fixed;
+  top: 60px;
+  right: 20px;
+  background-color: rgba(255, 255, 255, 0.7);
+  color: #000;
+  z-index: 10000;
+  padding: 20px 30px;
+  width: 190px;
+}
+.dhx_global_tip div {
+  font-size: 30px;
+}
+@media (-moz-touch-enabled) {
+  .dhx_cal_container {
+    user-select: none;
+    -moz-user-select: none;
+  }
+}
+.dhx_unselectable,
+.dhx_unselectable div {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_light {
+  -webkit-tap-highlight-color: transparent;
+  background-color: #FFE763;
+  border-radius: 5px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  border: 1px solid #B7A64B;
+  color: #887A2E;
+  position: absolute;
+  z-index: 10001;
+  width: 580px;
+  height: 300px;
+  box-shadow: 5px 5px 5px #888;
+}
+.dhx_cal_light_wide {
+  width: 650px;
+}
+.dhx_mark {
+  position: relative;
+  top: 3px;
+  background-image: url('imgs/controls.gif');
+  background-position: 0px -43px;
+  padding-left: 10px;
+}
+.dhx_ie6 .dhx_mark {
+  background-position: 6px -41px;
+}
+.dhx_cal_light select {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+  padding: 2px;
+  margin: 0px;
+}
+.dhx_cal_ltitle {
+  padding: 2px 0px 2px 5px;
+  overflow: hidden;
+  white-space: nowrap;
+}
+.dhx_cal_ltitle span {
+  white-space: nowrap;
+}
+.dhx_cal_lsection {
+  background-color: #DBCF8C;
+  color: #FFF4B5;
+  font-weight: bold;
+  padding: 5px 0px 3px 10px;
+}
+.dhx_section_time {
+  background-color: #DBCF8C;
+  white-space: nowrap;
+}
+.dhx_cal_lsection .dhx_fullday {
+  float: right;
+  margin-right: 5px;
+  color: #887A2E;
+  font-size: 12px;
+  font-weight: normal;
+  line-height: 20px;
+  vertical-align: top;
+  cursor: pointer;
+}
+.dhx_cal_lsection {
+  font-size: 18px;
+  font-family: Arial;
+}
+.dhx_cal_ltext {
+  padding: 2px	0px 2px 10px;
+  overflow: hidden;
+}
+.dhx_cal_ltext textarea {
+  background-color: #FFF4B5;
+  /* #FFF4B5; should be the same for dhx_cal_larea, was transperent */
+  overflow: auto;
+  border: none;
+  color: #887A2E;
+  height: 100%;
+  width: 100%;
+  outline: none !important;
+  resize: none;
+}
+.dhx_time {
+  font-weight: bold;
+}
+.dhx_cal_light .dhx_title {
+  padding-left: 10px;
+}
+.dhx_cal_larea {
+  border: 1px solid #DCC43E;
+  background-color: #FFF4B5;
+  overflow: hidden;
+  margin-left: 3px;
+  width: 572px;
+  height: 1px;
+}
+.dhx_btn_set {
+  padding: 5px 10px 0px 10px;
+  float: left;
+}
+.dhx_btn_set div {
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.dhx_save_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -84px 0px;
+  width: 21px;
+}
+.dhx_cancel_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -63px 0px;
+  width: 20px;
+}
+.dhx_delete_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -42px 0px;
+  width: 20px;
+}
+.dhx_cal_cover {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  z-index: 10000;
+  top: 0px;
+  left: 0px;
+  background-color: black;
+  opacity: 0.1;
+  filter: alpha(opacity=10);
+}
+.dhx_custom_button {
+  padding: 0px 3px 0px 3px;
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+  background-color: #FFE763;
+  font-weight: normal;
+  margin-right: 5px;
+  margin-top: 0px;
+  cursor: pointer;
+}
+.dhx_custom_button div {
+  cursor: pointer;
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  border-top-width: 0px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+  border: 0px;
+  float: left;
+  text-align: right;
+  width: 100px;
+  height: 20px;
+  font-size: 16px;
+  padding: 5px 0px 0px 10px;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  border-top: 1px solid #DBCF8C;
+  position: relative;
+  background-color: #DBCF8C;
+  overflow: hidden;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  padding-top: 2px !important;
+  height: 20px !important;
+}
+.dhx_section_time {
+  text-align: center;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  width: 730px;
+}
+.dhx_cal_light_wide {
+  width: 738px;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  background: transparent;
+}
+.dhx_cal_light_wide .dhx_cal_checkbox label {
+  padding-left: 0px;
+}
+.dhx_cal_wide_checkbox input {
+  margin-top: 8px;
+  margin-left: 14px;
+}
+.dhx_cal_light input {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+}
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday {
+  float: none;
+  margin-right: 0px;
+  color: #FFF4B5;
+  font-weight: bold;
+  font-size: 16px;
+  font-family: Arial;
+  cursor: pointer;
+}
+.dhx_custom_button {
+  float: right;
+  height: 21px;
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_cal_light_wide .dhx_custom_button {
+  position: absolute;
+  top: 0;
+  right: 0;
+  margin-top: 2px;
+}
+.dhx_cal_light_wide .dhx_repeat_right {
+  margin-right: 55px;
+}
+.dhx_minical_popup {
+  position: absolute;
+  z-index: 10100;
+  width: 251px;
+  height: 175px;
+}
+.dhx_scale_bar_header {
+  position: absolute;
+  border-bottom: 1px dotted #8894A3;
+  width: 100%;
+}
+.dhx_expand_icon {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  background-image: url(imgs/collapse_expand_icon.gif);
+  width: 18px;
+  height: 18px;
+  cursor: pointer;
+  background-position: 0px 18px;
+  z-index: 16;
+}
+.dhx_scheduler_agenda .dhx_cal_data {
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_area {
+  width: 100%;
+  overflow-y: auto;
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_agenda_line div {
+  float: left;
+  width: 188px;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_agenda_area .dhx_agenda_line div {
+  border-right: 0px dotted #8894A3;
+}
+.dhx_v_border {
+  position: absolute;
+  left: 187px;
+  top: 0;
+  border-right: 1px dotted #8894A3;
+  width: 1px;
+  height: 100%;
+}
+.dhx_agenda_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_agenda_line span {
+  padding-left: 5px;
+  line-height: 21px;
+}
+.dhx_year_body {
+  border-left: 1px dotted #586A7E;
+}
+.dhx_year_week {
+  position: relative;
+}
+.dhx_scale_bar_last {
+  border-right: 1px dotted #586A7E;
+}
+.dhx_year_month {
+  height: 18px;
+  padding-top: 3px;
+  border: 1px dotted #586A7E;
+  text-align: center;
+  vertical-align: middle;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head,
+.dhx_year_body .dhx_before .dhx_month_head a,
+.dhx_year_body .dhx_after .dhx_month_head a {
+  color: #E2E3E6 !important;
+}
+.dhx_year_body .dhx_month_body {
+  height: 0px;
+  overflow: hidden;
+}
+.dhx_month_head.dhx_year_event {
+  background-color: #FFE763;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head {
+  cursor: default;
+}
+.dhx_year_tooltip {
+  border: 1px solid #BBBBBB;
+  background-image: url(imgs/databg.png);
+  position: absolute;
+  z-index: 9998;
+  width: 300px;
+  height: auto;
+  font-family: Tahoma;
+  font-size: 8pt;
+  overflow: hidden;
+}
+.dhx_tooltip_line {
+  line-height: 20px;
+  height: 20px;
+  overflow: hidden;
+}
+.dhx_tooltip_line .dhx_event_icon {
+  width: 20px;
+  height: 20px;
+  padding-right: 10px;
+  float: left;
+  border-width: 0px;
+  position: relative;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_tooltip_date {
+  float: left;
+  width: auto;
+  padding-left: 5px;
+  text-align: center;
+}
+.dhx_text_disabled {
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_mini_calendar {
+  -moz-box-shadow: 5px 5px 5px #888;
+  /*Doesn't work in IE*/
+  -khtml-box-shadow: 5px 5px 5px #888;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  -user-select: none;
+}
+.dhx_mini_calendar .dhx_month_head {
+  cursor: pointer;
+}
+.dhx_mini_calendar .dhx_calendar_click {
+  background-color: #C2D5FC;
+}
+.dhx_cal_navline div.dhx_minical_icon {
+  width: 18px;
+  height: 18px;
+  left: 190px;
+  top: 1px;
+  cursor: pointer;
+  background-image: url(imgs/calendar.gif);
+}
+.dhx_matrix_scell {
+  height: 100%;
+}
+.dhx_matrix_cell,
+.dhx_matrix_scell {
+  overflow: hidden;
+  text-align: center;
+  vertical-align: middle;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_matrix_cell {
+  background-color: white;
+}
+.dhx_matrix_line {
+  overflow: hidden;
+}
+.dhx_matrix_cell div,
+.dhx_matrix_scell div {
+  overflow: hidden;
+  text-align: center;
+  height: auto;
+}
+.dhx_cal_lsection .dhx_readonly {
+  font-size: 9pt;
+  font-size: 8pt;
+  padding: 2px;
+  color: #887A2E;
+}
+.dhx_cal_event_line .dhx_event_resize {
+  cursor: w-resize;
+  background: url(imgs/resize_dots.png) repeat-y;
+  position: absolute;
+  top: 0;
+  width: 4px;
+  height: 100%;
+}
+.dhx_event_resize_start {
+  left: 0;
+}
+.dhx_event_resize_end {
+  right: 0;
+}
+/* Tree view */
+.dhx_matrix_scell.folder,
+.dhx_data_table.folder .dhx_matrix_cell {
+  background-color: #969394;
+  cursor: pointer;
+}
+.dhx_matrix_scell .dhx_scell_level0 {
+  padding-left: 5px;
+}
+.dhx_matrix_scell .dhx_scell_level1 {
+  padding-left: 20px;
+}
+.dhx_matrix_scell .dhx_scell_level2 {
+  padding-left: 35px;
+}
+.dhx_matrix_scell .dhx_scell_level3 {
+  padding-left: 50px;
+}
+.dhx_matrix_scell .dhx_scell_level4 {
+  padding-left: 65px;
+}
+.dhx_matrix_scell.folder {
+  font-weight: bold;
+  text-align: left;
+}
+.dhx_matrix_scell.folder .dhx_scell_expand {
+  float: left;
+  width: 10px;
+  padding-right: 3px;
+}
+.dhx_matrix_scell.folder .dhx_scell_name {
+  float: left;
+  width: auto;
+}
+.dhx_matrix_scell.item .dhx_scell_name {
+  padding-left: 15px;
+  text-align: left;
+}
+.dhx_data_table.folder .dhx_matrix_cell {
+  border-right: 0;
+}
+.dhx_section_timeline {
+  overflow: hidden;
+  padding: 4px 0 2px 10px;
+}
+.dhx_section_timeline select {
+  width: 552px;
+}
+/* Tree view end*/
+/* Map view */
+.dhx_map_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+  background-image: url(imgs/databg.png);
+}
+.dhx_map_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_map_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_map {
+  position: absolute;
+}
+.dhx_map_line div {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .dhx_map_description {
+  float: left;
+  border-right: 0 dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_date,
+.dhx_map_line .headline_description {
+  border-left: 0;
+}
+.dhx_map_line .line_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: left;
+  padding-left: 5px;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line.highlight {
+  background-color: #C4C5CC;
+}
+.dhx_map_area .dhx_map_line div {
+  border-right: 0px dotted #8894A3;
+}
+/* Map view end */
+/* dhtmlXTooltip start */
+.dhtmlXTooltip.tooltip {
+  -moz-box-shadow: 3px 3px 3px #888888;
+  -webkit-box-shadow: 3px 3px 3px #888888;
+  -o-box-shadow: 3px 3px 3px #888888;
+  box-shadow: 3px 3px 3px #888888;
+  filter: progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);
+  background-color: white;
+  border-left: 1px dotted #887A2E;
+  border-top: 1px dotted #887A2E;
+  color: #887A2E;
+  cursor: default;
+  padding: 10px;
+  position: absolute;
+  z-index: 500;
+  font-family: Tahoma;
+  font-size: 8pt;
+  opacity: 1;
+}
+/* dhtmlXTooltip end */
+/* Lightbox checkbox section */
+.dhx_cal_checkbox label {
+  padding-left: 5px;
+}
+/* Lightbox checkbox section end */
+/* Lightbox radiobuttons section */
+.dhx_cal_light .radio {
+  padding: 2px 0px 2px 10px;
+}
+.dhx_cal_light .radio input,
+.dhx_cal_light .radio label {
+  line-height: 15px;
+}
+.dhx_cal_light .radio input {
+  vertical-align: middle;
+  margin: 0px;
+  padding: 0px;
+}
+.dhx_cal_light .radio label {
+  vertical-align: middle;
+  padding-right: 10px;
+}
+/* Lightbox radiobuttons section end */
+/* Lightbox dhtmlx combo section */
+.dhx_cal_light .combo {
+  padding: 4px;
+}
+.dhx_cal_light_wide .dhx_combo_box {
+  width: 608px !important;
+  left: 10px;
+}
+/* Lightbox dhtmlx combo section end */
+/* Agenda week start */
+.dhx_wa_column {
+  float: left;
+}
+.dhx_wa_column_last .dhx_wa_day_cont {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_wa_scale_bar {
+  font-family: Tahoma;
+  padding-left: 10px;
+  font-size: 11px;
+  border-top: 1px dotted #8894A3;
+  border-bottom: 1px dotted #8894A3;
+}
+.dhx_wa_day_data {
+  background-color: #FCFEFC;
+  overflow-y: auto;
+}
+.dhx_wa_ev_body {
+  border-bottom: 1px dotted #778899;
+  font-size: 12px;
+  padding: 5px 0 5px 7px;
+}
+.dhx_wa_dnd {
+  font-family: Tahoma;
+  position: absolute;
+  padding-right: 7px;
+  color: #887AE2 !important;
+  background-color: #FFE763 !important;
+  border: 1px solid #B7A543;
+}
+.dhx_cal_event_selected {
+  background-color: #9cc1db;
+  color: white;
+}
+/* Agenda week end */
+/* timeline second scale start */
+.dhx_second_scale_bar {
+  border-bottom: 1px dotted #586A7E;
+  padding-top: 2px;
+}
+/* timeline second scale end */
+/* grid view */
+.dhx_cal_header div div {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_grid_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  background-color: #FCFEFC;
+}
+.dhx_grid_area table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  width: 100%;
+  table-layout: fixed;
+}
+.dhx_grid_area td {
+  table-layout: fixed;
+  text-align: center;
+}
+.dhx_grid_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_grid_line div {
+  float: left;
+  cursor: default;
+  padding-top: 0;
+  padding-bottom: 0;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_grid_area td,
+.dhx_grid_line div {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.dhx_grid_area tr.dhx_grid_event {
+  height: 21px;
+  overflow: hidden;
+  margin: 0 0 1px 0;
+}
+.dhx_grid_area tr.dhx_grid_event td {
+  /*borders for old ies*/
+  border-bottom: 1px solid #ECEEF4;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td,
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td {
+  border-bottom-width: 0px;
+  border-bottom-style: none;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) {
+  background-color: #ECEEF4;
+}
+.dhx_grid_area .dhx_grid_dummy {
+  table-layout: auto;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+.dhx_grid_v_border {
+  position: absolute;
+  border-right: 1px solid #A4BED4;
+  width: 1px;
+  height: 100%;
+}
+.dhx_grid_event_selected {
+  background-color: #9cc1db !important;
+  color: white !important;
+}
+.dhx_grid_sort_desc .dhx_grid_view_sort {
+  background-position: 0 -55px;
+}
+.dhx_grid_sort_asc .dhx_grid_view_sort {
+  background-position: 0 -66px;
+}
+.dhx_grid_view_sort {
+  width: 10px;
+  height: 10px;
+  position: absolute;
+  border: none !important;
+  top: 5px;
+  background-repeat: no-repeat;
+  background-image: url(imgs/images.png);
+}
+/* end grid */
+/* marked timespans */
+.dhx_marked_timespan {
+  position: absolute;
+  width: 100%;
+  margin-left: 0;
+  /* fix bootstrap conflict [class*="span"] */
+}
+.dhx_time_block {
+  position: absolute;
+  width: 100%;
+  background: silver;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+  z-index: 1;
+}
+.dhx_time_block_reset {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.dhx_scheduler_month .dhx_marked_timespan {
+  display: none;
+}
+.dhx_mini_calendar .dhx_marked_timespan {
+  display: none;
+}
+/* now time */
+.dhx_now_time {
+  width: 100%;
+  border-bottom: 2px solid red;
+  z-index: 1;
+}
+.dhx_scheduler_month .dhx_now_time {
+  border-bottom: 0;
+  border-left: 2px solid red;
+}
+.dhx_matrix_now_time {
+  border-left: 2px solid red;
+  z-index: 1;
+}
+.dhx_now_time,
+.dhx_matrix_now_time {
+  opacity: 0.5;
+}
+/* Quick info */
+.dhx_cal_quick_info {
+  border: 2px solid #888;
+  border-radius: 5px;
+  position: absolute;
+  z-index: 300;
+  background-color: #8e99ae;
+  background-color: rgba(98, 107, 127, 0.5);
+  padding-left: 7px;
+  width: 300px;
+  transition: left 0.5s ease, right 0.5s;
+  -moz-transition: left 0.5s ease, right 0.5s;
+  -webkit-transition: left 0.5s ease, right 0.5s;
+  -o-transition: left 0.5s ease, right 0.5s;
+}
+.dhx_no_animate {
+  transition: none;
+  -moz-transition: none;
+  -webkit-transition: none;
+  -o-transition: none;
+}
+.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon {
+  float: right;
+}
+.dhx_cal_qi_title {
+  padding: 5px 0px 10px 5px;
+  color: #FFF;
+  letter-spacing: 1px;
+}
+.dhx_cal_qi_tdate {
+  font-size: 14px;
+}
+.dhx_cal_qi_tcontent {
+  font-size: 18px;
+  font-weight: bold;
+}
+.dhx_cal_qi_content {
+  border: 1px solid #888;
+  background-color: #fefefe;
+  padding: 16px 8px;
+  font-size: 14px;
+  color: #444;
+  width: 275px;
+  overflow: hidden;
+}
+.dhx_qi_big_icon {
+  border-radius: 3px;
+  color: #444;
+  margin: 5px 9px 5px 0px;
+  min-width: 60px;
+  line-height: 20px;
+  vertical-align: middle;
+  padding: 5px 10px 5px 5px;
+  cursor: pointer;
+  background-color: #fefefe;
+  border-bottom: 1px solid #666;
+  border-right: 1px solid #666;
+  float: left;
+}
+.dhx_cal_qi_controls div {
+  float: left;
+  height: 20px;
+  text-align: center;
+  line-height: 20px;
+}
+.dhx_qi_big_icon .dhx_menu_icon {
+  margin: 0 8px 0 0px;
+}
+.dhx_drag_marker {
+  width: 100%;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: #FFE763;
+  position: absolute;
+  box-sizing: border-box !important;
+  border-top: 1px solid #B6B6B6;
+  border-bottom: 1px solid #b6b6b6;
+}
+/* bootstrap CSS fix start */
+.dhx_cal_navline div,
+.dhx_cal_header,
+.dhx_cal_header div,
+.dhx_cal_data,
+.dhx_cal_data div,
+.dhx_cal_data table *,
+.dhx_multi_day,
+.dhx_multi_day div,
+.dhx_tooltip_line div,
+.dhx_cal_quick_info,
+.dhx_cal_quick_info div {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+.dhx_cal_data table {
+  border-collapse: separate;
+}
+.dhx_cal_light .dhx_cal_radio label {
+  margin-bottom: 0;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+/* bootstrap CSS fix end */
+.dhx_cal_container {
+  background-color: #C2D5FC;
+  font-family: Tahoma;
+  font-size: 8pt;
+  position: relative;
+  overflow: hidden;
+}
+.dhx_cal_container div {
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_navline {
+  height: 20px;
+  position: absolute;
+  z-index: 3;
+  width: 750px;
+  color: #2F3A48;
+}
+.dhx_cal_navline div {
+  position: absolute;
+  top: 2px;
+  white-space: nowrap;
+}
+.dhx_cal_navline .dhx_cal_date {
+  font-weight: 600;
+  left: 210px;
+  padding-top: 1px;
+}
+.dhx_cal_button .dhx_left_bg {
+  width: 1px;
+  overflow: hidden;
+  height: 17px;
+  z-index: 20;
+  top: 0px;
+}
+.dhx_cal_prev_button {
+  background-image: url(imgs/buttons.png);
+  background-position: 0px 0px;
+  width: 29px;
+  height: 17px;
+  left: 50px;
+  cursor: pointer;
+}
+.dhx_cal_next_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -30px 0px;
+  width: 29px;
+  height: 17px;
+  left: 80px;
+  cursor: pointer;
+}
+.dhx_cal_today_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -60px 0px;
+  width: 75px;
+  height: 17px;
+  left: 112px;
+  cursor: pointer;
+  text-align: center;
+  text-decoration: underline;
+}
+.dhx_cal_tab {
+  width: 59px;
+  height: 19px;
+  text-align: center;
+  text-decoration: underline;
+  padding-top: 2px;
+  cursor: pointer;
+  background-color: #D8E1EA;
+  -webkit-border-top-left-radius: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.dhx_cal_tab.active {
+  text-decoration: none;
+  cursor: default;
+  font-weight: bold;
+  border: 1px dotted #586A7E;
+  border-bottom: 0;
+  background-color: #C2D5FC;
+}
+.dhx_cal_header {
+  position: absolute;
+  left: 10px;
+  top: 23px;
+  width: 750px;
+  border-top: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+  z-index: 2;
+  overflow: hidden;
+  color: #2F3A48;
+}
+.dhx_cal_data {
+  -webkit-tap-highlight-color: transparent;
+  border-top: 1px dotted #8894A3;
+  position: absolute;
+  top: 44px;
+  width: 600px;
+  overflow-y: auto;
+  overflow-x: hidden;
+  -webkit-overflow-scrolling: touch;
+}
+.dhx_cal_data {
+  -ms-touch-action: pan-y;
+}
+.dhx_cal_event,
+.dhx_cal_event_line,
+.dhx_cal_event_clear {
+  -ms-touch-action: none;
+}
+.dhx_scale_bar {
+  position: absolute;
+  text-align: center;
+  background-color: #C2D5FC;
+  padding-top: 3px;
+  border-left: 1px dotted #586A7E;
+}
+.dhx_scale_holder {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg.png);
+}
+.dhx_scale_holder_now {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg_now.png);
+}
+.dhx_scale_hour {
+  height: 41px;
+  width: 50px;
+  border-bottom: 1px dotted #8894A3;
+  background-color: #C2D5FC;
+  text-align: center;
+  line-height: 40px;
+  color: #586A7E;
+  overflow: hidden;
+}
+.dhx_month_head {
+  background-color: #EBEFF4;
+  color: #2F3A48;
+  height: 18px;
+  padding-right: 5px;
+  padding-top: 3px;
+  text-align: right;
+  border-right: 1px dotted #586A7E;
+}
+.dhx_month_body {
+  border-right: 1px dotted #586A7E;
+  border-bottom: 1px dotted #586A7E;
+  background-color: #FFFFFF;
+}
+.dhx_now .dhx_month_body {
+  background-color: #E2EDFF;
+}
+.dhx_after .dhx_month_body,
+.dhx_before .dhx_month_body {
+  background-color: #ECECEC;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head {
+  background-color: #E2E3E6;
+  color: #94A6BB;
+}
+.dhx_now .dhx_month_head {
+  background-color: #D1DEF4;
+  font-weight: bold;
+}
+.dhx_scale_ignore {
+  display: none;
+}
+.dhx_cal_drag {
+  position: absolute;
+  z-index: 9999;
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.dhx_loading {
+  position: absolute;
+  width: 128px;
+  height: 15px;
+  background-image: url(imgs/loading.gif);
+  z-index: 9999;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day {
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day {
+  position: absolute;
+  border-top: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  background-position: center center;
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon {
+  background-image: url(imgs/clock_big.gif);
+}
+.dhx_multi_day_icon_small {
+  background-image: url(imgs/clock_small.gif);
+}
+.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
+  background-color: #d0e5ff;
+}
+/* left border config option support */
+.dhx_scale_hour_border,
+.dhx_month_body_border,
+.dhx_scale_bar_border,
+.dhx_month_head_border {
+  border-left: 1px dotted #8894A3;
+}
+/* export to PDF and iCal buttons start */
+.dhx_cal_navline .dhx_cal_export {
+  width: 18px;
+  height: 18px;
+  margin: 2px;
+  cursor: pointer;
+  top: 0px;
+}
+.dhx_cal_navline .dhx_cal_export.pdf {
+  left: 2px;
+  background-image: url('imgs/export_pdf.png');
+}
+.dhx_cal_navline .dhx_cal_export.ical {
+  left: 24px;
+  background-image: url('imgs/export_ical.png');
+}
+/* export to PDF and iCal buttons end */
+/*All*/
+.dhx_form_repeat,
+.dhx_form_repeat input {
+  padding: 0;
+  margin: 0;
+  padding-left: 5px;
+  font-family: Tahoma, Verdana;
+  font-size: 11px;
+  line-height: 24px;
+}
+.dhx_form_repeat {
+  overflow: hidden;
+  /*height:115px;*/
+  background-color: #FFF4B5;
+  /*border: 1px solid #DCC43E;*/
+}
+.dhx_cal_light_wide .dhx_form_repeat {
+  background-color: transparent;
+}
+.dhx_repeat_center,
+.dhx_repeat_left,
+.dhx_repeat_divider,
+.dhx_repeat_right {
+  height: 115px;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.dhx_repeat_center,
+.dhx_repeat_left {
+  padding: 10px 0 0px 10px;
+  float: left;
+}
+.dhx_repeat_left {
+  width: 105px;
+}
+.dhx_repeat_center {
+  width: 345px;
+  padding-top: 22px;
+}
+.dhx_repeat_divider {
+  float: left;
+  border-left: 1px dotted #DCC43E;
+  /*background-color: #DCC43E;*/
+  width: 1px;
+}
+.dhx_repeat_right {
+  float: right;
+  width: 173px;
+  padding: 17px 3px 0px 10px;
+}
+input.dhx_repeat_text {
+  height: 16px;
+  width: 27px;
+  margin: 0 4px 0 4px;
+  line-height: 18px;
+  padding: 0 0 0 2px;
+}
+.dhx_form_repeat select {
+  height: 20px;
+  width: 87px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+}
+input.dhx_repeat_date {
+  height: 18px;
+  width: 80px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+  background-repeat: no-repeat;
+  background-position: 64px 0;
+  border: 1px #7f9db9 solid;
+  line-height: 18px;
+}
+input.dhx_repeat_radio {
+  margin-right: 4px;
+}
+input.dhx_repeat_checkbox {
+  margin: 4px 4px 0 0;
+}
+.dhx_repeat_days td {
+  padding-right: 5px;
+}
+.dhx_repeat_days label {
+  font-size: 10px;
+}
+.dhx_custom_button {
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_custom_button_recurring {
+  background-image: url(imgs/but_repeat.gif);
+  background-position: -5px 20px;
+  width: 20px;
+  margin-right: 10px;
+}
+/* increase width of lightbox */
+.dhx_cal_light_rec {
+  width: 640px;
+}
+.dhx_cal_light_rec .dhx_cal_larea {
+  width: 632px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide {
+  width: 816px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea {
+  width: 808px;
+}
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.xml
new file mode 100644
index 0000000000..dbc52c8261
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_classic.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_classic.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.css
new file mode 100644
index 0000000000..c7b5fc4c0c
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.css
@@ -0,0 +1,2406 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area {
+  position: fixed;
+  right: 5px;
+  width: 250px;
+  z-index: 1000;
+}
+.dhtmlx-info {
+  min-width: 120px;
+  padding: 4px 4px 4px 20px;
+  font-family: Tahoma;
+  z-index: 10000;
+  overflow: hidden;
+  margin: 5px;
+  margin-bottom: 10px;
+  -webkit-transition: all .5s ease;
+  -moz-transition: all .5s ease;
+  -o-transition: all .5s ease;
+  transition: all .5s ease;
+}
+.dhtmlx-info.hidden {
+  height: 0px;
+  padding: 0px;
+  border-width: 0px;
+  margin: 0px;
+  overflow: hidden;
+}
+.dhtmlx_modal_box {
+  overflow: hidden;
+  display: inline-block;
+  min-width: 300px;
+  width: 300px;
+  text-align: center;
+  position: fixed;
+  background-color: #fff;
+  background: -webkit-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  background: -moz-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  box-shadow: 0px 0px 14px #888;
+  font-family: Tahoma;
+  z-index: 20000;
+  border-radius: 6px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx_popup_title {
+  border-top-left-radius: 5px;
+  border-top-right-radius: 5px;
+  border-width: 0px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+}
+.dhtmlx-info,
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  user-select: none;
+  -webkit-user-select: none;
+  -moz-user-select: -moz-none;
+  cursor: pointer;
+}
+.dhtmlx_popup_text {
+  overflow: hidden;
+}
+.dhtmlx_popup_controls {
+  border-radius: 6px;
+  padding: 5px;
+}
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  height: 30px;
+  line-height: 30px;
+  display: inline-block;
+  margin: 0 5px;
+  border-radius: 6px;
+  color: #FFF;
+}
+.dhtmlx_popup_button {
+  min-width: 120px;
+}
+div.dhx_modal_cover {
+  background-color: #000;
+  cursor: default;
+  filter: alpha(opacity=20);
+  opacity: 0.2;
+  position: fixed;
+  z-index: 19999;
+  left: 0px;
+  top: 0px;
+  width: 100%;
+  height: 100%;
+  border: none;
+  zoom: 1;
+}
+.dhtmlx-info img,
+.dhtmlx_modal_box img {
+  float: left;
+  margin-right: 20px;
+}
+.dhtmlx-alert-error .dhtmlx_popup_title,
+.dhtmlx-confirm-error .dhtmlx_popup_title {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);
+}
+.dhtmlx-alert-error,
+.dhtmlx-confirm-error {
+  border: 1px solid #ff0000;
+}
+/*Skin section*/
+.dhtmlx_button,
+.dhtmlx_popup_button {
+  box-shadow: 0px 0px 4px #888;
+  border: 1px solid #838383;
+}
+.dhtmlx_button input,
+.dhtmlx_popup_button div {
+  border: 1px solid #FFF;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  border-radius: 6px;
+  font-size: 15px;
+  font-weight: normal;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  color: #fff;
+  padding: 0px;
+  margin: 0px;
+  vertical-align: top;
+  height: 28px;
+  line-height: 28px;
+}
+.dhtmlx_button input:focus,
+.dhtmlx_button input:active,
+.dhtmlx_popup_button div:active,
+.dhtmlx_popup_button div:focus {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+}
+.dhtmlx_popup_title {
+  color: #fff;
+  text-shadow: 1px 1px #000;
+  height: 40px;
+  line-height: 40px;
+  font-size: 20px;
+}
+.dhtmlx_popup_text {
+  margin: 15px 15px 5px 15px;
+  font-size: 14px;
+  color: #000;
+  min-height: 30px;
+  border-radius: 6px;
+}
+.dhtmlx-info,
+.dhtmlx-error {
+  font-size: 14px;
+  color: #000;
+  box-shadow: 0px 0px 10px #888;
+  padding: 0px;
+  background-color: #FFF;
+  border-radius: 3px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx-info div {
+  padding: 5px 10px 5px 10px;
+  background-color: #fff;
+  border-radius: 3px;
+  border: 1px solid #B8B8B8;
+}
+.dhtmlx-error {
+  background-color: #d81b1b;
+  border: 1px solid #ff3c3c;
+  box-shadow: 0px 0px 10px #000;
+}
+.dhtmlx-error div {
+  background-color: #d81b1b;
+  border: 1px solid #940000;
+  color: #FFF;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event .dhx_title,
+.dhx_cal_event .dhx_body,
+.dhx_cal_event .dhx_footer {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  color: #887A2E;
+  overflow: hidden;
+  width: 100%;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_move_denied .dhx_cal_event .dhx_header,
+.dhx_move_denied .dhx_cal_event .dhx_title {
+  cursor: default;
+}
+.dhx_cal_event .dhx_header {
+  height: 1px;
+  margin-left: 1px;
+  border-width: 1px 1px 0px 1px;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_title {
+  height: 12px;
+  border-width: 0px 1px 1px 1px;
+  border-bottom-style: dotted;
+  font-size: 7pt;
+  font-weight: bold;
+  text-align: center;
+  background-position: right;
+  background-repeat: no-repeat;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event.dhx_cal_select_menu .dhx_body {
+  border-width: 0 1px 1px 1px;
+  padding: 5px;
+}
+.dhx_resize_denied,
+.dhx_resize_denied .dhx_event_resize {
+  cursor: default !important;
+}
+.dhx_cal_event .dhx_event_resize {
+  cursor: s-resize;
+}
+.dhx_cal_event .dhx_footer,
+.dhx_cal_event .dhx_select_menu_footer {
+  height: 1px;
+  margin-left: 2px;
+  border-width: 0px 1px 1px 1px;
+  position: relative;
+}
+.dhx_cal_event_line {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  border-radius: 3px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 10px;
+  color: #887A2E;
+  cursor: pointer;
+  overflow: hidden;
+}
+.dhx_cal_event_clear {
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 2px;
+  color: #887A2E;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: pointer;
+}
+.dhx_in_move {
+  background-color: #FFFF80;
+}
+.dhx_cal_event.dhx_cal_editor {
+  border: 1px solid #B7A543;
+  border-top-style: dotted;
+  z-index: 999;
+  position: absolute;
+  overflow: hidden;
+}
+textarea.dhx_cal_editor {
+  width: 100%;
+  height: 100%;
+  border: 0 solid black;
+  margin: 0;
+  padding: 0;
+  overflow: auto;
+}
+div.dhx_menu_head {
+  background-image: url(imgs/controls.gif);
+  background-position: 0px -43px;
+  width: 10px;
+  height: 10px;
+  margin-left: 5px;
+  margin-top: 1px;
+  border: none;
+  cursor: default;
+}
+div.dhx_menu_icon {
+  background-image: url(imgs/controls.gif);
+  width: 20px;
+  height: 20px;
+  margin-left: -5px;
+  margin-top: 0px;
+  border: none;
+  cursor: pointer;
+}
+div.icon_details {
+  background-position: 0px 0px;
+}
+div.icon_edit {
+  background-position: -22px 0px;
+}
+div.icon_save {
+  background-position: -84px -1px;
+}
+div.icon_cancel {
+  background-position: -62px 0px;
+}
+div.icon_delete {
+  background-position: -42px 0px;
+}
+/*view more link in month view*/
+.dhx_month_link {
+  position: absolute;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  text-align: right;
+  cursor: pointer;
+  padding-right: 10px;
+}
+.dhx_month_link a {
+  color: blue;
+}
+.dhx_month_link a:hover {
+  text-decoration: underline;
+}
+.dhx_global_tip {
+  font-family: Tahoma, Helvetica;
+  text-align: center;
+  font-size: 20px;
+  position: fixed;
+  top: 60px;
+  right: 20px;
+  background-color: rgba(255, 255, 255, 0.7);
+  color: #000;
+  z-index: 10000;
+  padding: 20px 30px;
+  width: 190px;
+}
+.dhx_global_tip div {
+  font-size: 30px;
+}
+@media (-moz-touch-enabled) {
+  .dhx_cal_container {
+    user-select: none;
+    -moz-user-select: none;
+  }
+}
+.dhx_unselectable,
+.dhx_unselectable div {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_light {
+  -webkit-tap-highlight-color: transparent;
+  background-color: #FFE763;
+  border-radius: 5px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  border: 1px solid #B7A64B;
+  color: #887A2E;
+  position: absolute;
+  z-index: 10001;
+  width: 580px;
+  height: 300px;
+  box-shadow: 5px 5px 5px #888;
+}
+.dhx_cal_light_wide {
+  width: 650px;
+}
+.dhx_mark {
+  position: relative;
+  top: 3px;
+  background-image: url('imgs/controls.gif');
+  background-position: 0px -43px;
+  padding-left: 10px;
+}
+.dhx_ie6 .dhx_mark {
+  background-position: 6px -41px;
+}
+.dhx_cal_light select {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+  padding: 2px;
+  margin: 0px;
+}
+.dhx_cal_ltitle {
+  padding: 2px 0px 2px 5px;
+  overflow: hidden;
+  white-space: nowrap;
+}
+.dhx_cal_ltitle span {
+  white-space: nowrap;
+}
+.dhx_cal_lsection {
+  background-color: #DBCF8C;
+  color: #FFF4B5;
+  font-weight: bold;
+  padding: 5px 0px 3px 10px;
+}
+.dhx_section_time {
+  background-color: #DBCF8C;
+  white-space: nowrap;
+}
+.dhx_cal_lsection .dhx_fullday {
+  float: right;
+  margin-right: 5px;
+  color: #887A2E;
+  font-size: 12px;
+  font-weight: normal;
+  line-height: 20px;
+  vertical-align: top;
+  cursor: pointer;
+}
+.dhx_cal_lsection {
+  font-size: 18px;
+  font-family: Arial;
+}
+.dhx_cal_ltext {
+  padding: 2px	0px 2px 10px;
+  overflow: hidden;
+}
+.dhx_cal_ltext textarea {
+  background-color: #FFF4B5;
+  /* #FFF4B5; should be the same for dhx_cal_larea, was transperent */
+  overflow: auto;
+  border: none;
+  color: #887A2E;
+  height: 100%;
+  width: 100%;
+  outline: none !important;
+  resize: none;
+}
+.dhx_time {
+  font-weight: bold;
+}
+.dhx_cal_light .dhx_title {
+  padding-left: 10px;
+}
+.dhx_cal_larea {
+  border: 1px solid #DCC43E;
+  background-color: #FFF4B5;
+  overflow: hidden;
+  margin-left: 3px;
+  width: 572px;
+  height: 1px;
+}
+.dhx_btn_set {
+  padding: 5px 10px 0px 10px;
+  float: left;
+}
+.dhx_btn_set div {
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.dhx_save_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -84px 0px;
+  width: 21px;
+}
+.dhx_cancel_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -63px 0px;
+  width: 20px;
+}
+.dhx_delete_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -42px 0px;
+  width: 20px;
+}
+.dhx_cal_cover {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  z-index: 10000;
+  top: 0px;
+  left: 0px;
+  background-color: black;
+  opacity: 0.1;
+  filter: alpha(opacity=10);
+}
+.dhx_custom_button {
+  padding: 0px 3px 0px 3px;
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+  background-color: #FFE763;
+  font-weight: normal;
+  margin-right: 5px;
+  margin-top: 0px;
+  cursor: pointer;
+}
+.dhx_custom_button div {
+  cursor: pointer;
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  border-top-width: 0px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+  border: 0px;
+  float: left;
+  text-align: right;
+  width: 100px;
+  height: 20px;
+  font-size: 16px;
+  padding: 5px 0px 0px 10px;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  border-top: 1px solid #DBCF8C;
+  position: relative;
+  background-color: #DBCF8C;
+  overflow: hidden;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  padding-top: 2px !important;
+  height: 20px !important;
+}
+.dhx_section_time {
+  text-align: center;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  width: 730px;
+}
+.dhx_cal_light_wide {
+  width: 738px;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  background: transparent;
+}
+.dhx_cal_light_wide .dhx_cal_checkbox label {
+  padding-left: 0px;
+}
+.dhx_cal_wide_checkbox input {
+  margin-top: 8px;
+  margin-left: 14px;
+}
+.dhx_cal_light input {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+}
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday {
+  float: none;
+  margin-right: 0px;
+  color: #FFF4B5;
+  font-weight: bold;
+  font-size: 16px;
+  font-family: Arial;
+  cursor: pointer;
+}
+.dhx_custom_button {
+  float: right;
+  height: 21px;
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_cal_light_wide .dhx_custom_button {
+  position: absolute;
+  top: 0;
+  right: 0;
+  margin-top: 2px;
+}
+.dhx_cal_light_wide .dhx_repeat_right {
+  margin-right: 55px;
+}
+.dhx_minical_popup {
+  position: absolute;
+  z-index: 10100;
+  width: 251px;
+  height: 175px;
+}
+.dhx_scale_bar_header {
+  position: absolute;
+  border-bottom: 1px dotted #8894A3;
+  width: 100%;
+}
+.dhx_expand_icon {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  background-image: url(imgs/collapse_expand_icon.gif);
+  width: 18px;
+  height: 18px;
+  cursor: pointer;
+  background-position: 0px 18px;
+  z-index: 16;
+}
+.dhx_scheduler_agenda .dhx_cal_data {
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_area {
+  width: 100%;
+  overflow-y: auto;
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_agenda_line div {
+  float: left;
+  width: 188px;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_agenda_area .dhx_agenda_line div {
+  border-right: 0px dotted #8894A3;
+}
+.dhx_v_border {
+  position: absolute;
+  left: 187px;
+  top: 0;
+  border-right: 1px dotted #8894A3;
+  width: 1px;
+  height: 100%;
+}
+.dhx_agenda_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_agenda_line span {
+  padding-left: 5px;
+  line-height: 21px;
+}
+.dhx_year_body {
+  border-left: 1px dotted #586A7E;
+}
+.dhx_year_week {
+  position: relative;
+}
+.dhx_scale_bar_last {
+  border-right: 1px dotted #586A7E;
+}
+.dhx_year_month {
+  height: 18px;
+  padding-top: 3px;
+  border: 1px dotted #586A7E;
+  text-align: center;
+  vertical-align: middle;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head,
+.dhx_year_body .dhx_before .dhx_month_head a,
+.dhx_year_body .dhx_after .dhx_month_head a {
+  color: #E2E3E6 !important;
+}
+.dhx_year_body .dhx_month_body {
+  height: 0px;
+  overflow: hidden;
+}
+.dhx_month_head.dhx_year_event {
+  background-color: #FFE763;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head {
+  cursor: default;
+}
+.dhx_year_tooltip {
+  border: 1px solid #BBBBBB;
+  background-image: url(imgs/databg.png);
+  position: absolute;
+  z-index: 9998;
+  width: 300px;
+  height: auto;
+  font-family: Tahoma;
+  font-size: 8pt;
+  overflow: hidden;
+}
+.dhx_tooltip_line {
+  line-height: 20px;
+  height: 20px;
+  overflow: hidden;
+}
+.dhx_tooltip_line .dhx_event_icon {
+  width: 20px;
+  height: 20px;
+  padding-right: 10px;
+  float: left;
+  border-width: 0px;
+  position: relative;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_tooltip_date {
+  float: left;
+  width: auto;
+  padding-left: 5px;
+  text-align: center;
+}
+.dhx_text_disabled {
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_mini_calendar {
+  -moz-box-shadow: 5px 5px 5px #888;
+  /*Doesn't work in IE*/
+  -khtml-box-shadow: 5px 5px 5px #888;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  -user-select: none;
+}
+.dhx_mini_calendar .dhx_month_head {
+  cursor: pointer;
+}
+.dhx_mini_calendar .dhx_calendar_click {
+  background-color: #C2D5FC;
+}
+.dhx_cal_navline div.dhx_minical_icon {
+  width: 18px;
+  height: 18px;
+  left: 190px;
+  top: 1px;
+  cursor: pointer;
+  background-image: url(imgs/calendar.gif);
+}
+.dhx_matrix_scell {
+  height: 100%;
+}
+.dhx_matrix_cell,
+.dhx_matrix_scell {
+  overflow: hidden;
+  text-align: center;
+  vertical-align: middle;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_matrix_cell {
+  background-color: white;
+}
+.dhx_matrix_line {
+  overflow: hidden;
+}
+.dhx_matrix_cell div,
+.dhx_matrix_scell div {
+  overflow: hidden;
+  text-align: center;
+  height: auto;
+}
+.dhx_cal_lsection .dhx_readonly {
+  font-size: 9pt;
+  font-size: 8pt;
+  padding: 2px;
+  color: #887A2E;
+}
+.dhx_cal_event_line .dhx_event_resize {
+  cursor: w-resize;
+  background: url(imgs/resize_dots.png) repeat-y;
+  position: absolute;
+  top: 0;
+  width: 4px;
+  height: 100%;
+}
+.dhx_event_resize_start {
+  left: 0;
+}
+.dhx_event_resize_end {
+  right: 0;
+}
+/* Tree view */
+.dhx_matrix_scell.folder,
+.dhx_data_table.folder .dhx_matrix_cell {
+  background-color: #969394;
+  cursor: pointer;
+}
+.dhx_matrix_scell .dhx_scell_level0 {
+  padding-left: 5px;
+}
+.dhx_matrix_scell .dhx_scell_level1 {
+  padding-left: 20px;
+}
+.dhx_matrix_scell .dhx_scell_level2 {
+  padding-left: 35px;
+}
+.dhx_matrix_scell .dhx_scell_level3 {
+  padding-left: 50px;
+}
+.dhx_matrix_scell .dhx_scell_level4 {
+  padding-left: 65px;
+}
+.dhx_matrix_scell.folder {
+  font-weight: bold;
+  text-align: left;
+}
+.dhx_matrix_scell.folder .dhx_scell_expand {
+  float: left;
+  width: 10px;
+  padding-right: 3px;
+}
+.dhx_matrix_scell.folder .dhx_scell_name {
+  float: left;
+  width: auto;
+}
+.dhx_matrix_scell.item .dhx_scell_name {
+  padding-left: 15px;
+  text-align: left;
+}
+.dhx_data_table.folder .dhx_matrix_cell {
+  border-right: 0;
+}
+.dhx_section_timeline {
+  overflow: hidden;
+  padding: 4px 0 2px 10px;
+}
+.dhx_section_timeline select {
+  width: 552px;
+}
+/* Tree view end*/
+/* Map view */
+.dhx_map_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+  background-image: url(imgs/databg.png);
+}
+.dhx_map_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_map_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_map {
+  position: absolute;
+}
+.dhx_map_line div {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .dhx_map_description {
+  float: left;
+  border-right: 0 dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_date,
+.dhx_map_line .headline_description {
+  border-left: 0;
+}
+.dhx_map_line .line_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: left;
+  padding-left: 5px;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line.highlight {
+  background-color: #C4C5CC;
+}
+.dhx_map_area .dhx_map_line div {
+  border-right: 0px dotted #8894A3;
+}
+/* Map view end */
+/* dhtmlXTooltip start */
+.dhtmlXTooltip.tooltip {
+  -moz-box-shadow: 3px 3px 3px #888888;
+  -webkit-box-shadow: 3px 3px 3px #888888;
+  -o-box-shadow: 3px 3px 3px #888888;
+  box-shadow: 3px 3px 3px #888888;
+  filter: progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);
+  background-color: white;
+  border-left: 1px dotted #887A2E;
+  border-top: 1px dotted #887A2E;
+  color: #887A2E;
+  cursor: default;
+  padding: 10px;
+  position: absolute;
+  z-index: 500;
+  font-family: Tahoma;
+  font-size: 8pt;
+  opacity: 1;
+}
+/* dhtmlXTooltip end */
+/* Lightbox checkbox section */
+.dhx_cal_checkbox label {
+  padding-left: 5px;
+}
+/* Lightbox checkbox section end */
+/* Lightbox radiobuttons section */
+.dhx_cal_light .radio {
+  padding: 2px 0px 2px 10px;
+}
+.dhx_cal_light .radio input,
+.dhx_cal_light .radio label {
+  line-height: 15px;
+}
+.dhx_cal_light .radio input {
+  vertical-align: middle;
+  margin: 0px;
+  padding: 0px;
+}
+.dhx_cal_light .radio label {
+  vertical-align: middle;
+  padding-right: 10px;
+}
+/* Lightbox radiobuttons section end */
+/* Lightbox dhtmlx combo section */
+.dhx_cal_light .combo {
+  padding: 4px;
+}
+.dhx_cal_light_wide .dhx_combo_box {
+  width: 608px !important;
+  left: 10px;
+}
+/* Lightbox dhtmlx combo section end */
+/* Agenda week start */
+.dhx_wa_column {
+  float: left;
+}
+.dhx_wa_column_last .dhx_wa_day_cont {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_wa_scale_bar {
+  font-family: Tahoma;
+  padding-left: 10px;
+  font-size: 11px;
+  border-top: 1px dotted #8894A3;
+  border-bottom: 1px dotted #8894A3;
+}
+.dhx_wa_day_data {
+  background-color: #FCFEFC;
+  overflow-y: auto;
+}
+.dhx_wa_ev_body {
+  border-bottom: 1px dotted #778899;
+  font-size: 12px;
+  padding: 5px 0 5px 7px;
+}
+.dhx_wa_dnd {
+  font-family: Tahoma;
+  position: absolute;
+  padding-right: 7px;
+  color: #887AE2 !important;
+  background-color: #FFE763 !important;
+  border: 1px solid #B7A543;
+}
+.dhx_cal_event_selected {
+  background-color: #9cc1db;
+  color: white;
+}
+/* Agenda week end */
+/* timeline second scale start */
+.dhx_second_scale_bar {
+  border-bottom: 1px dotted #586A7E;
+  padding-top: 2px;
+}
+/* timeline second scale end */
+/* grid view */
+.dhx_cal_header div div {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_grid_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  background-color: #FCFEFC;
+}
+.dhx_grid_area table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  width: 100%;
+  table-layout: fixed;
+}
+.dhx_grid_area td {
+  table-layout: fixed;
+  text-align: center;
+}
+.dhx_grid_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_grid_line div {
+  float: left;
+  cursor: default;
+  padding-top: 0;
+  padding-bottom: 0;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_grid_area td,
+.dhx_grid_line div {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.dhx_grid_area tr.dhx_grid_event {
+  height: 21px;
+  overflow: hidden;
+  margin: 0 0 1px 0;
+}
+.dhx_grid_area tr.dhx_grid_event td {
+  /*borders for old ies*/
+  border-bottom: 1px solid #ECEEF4;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td,
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td {
+  border-bottom-width: 0px;
+  border-bottom-style: none;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) {
+  background-color: #ECEEF4;
+}
+.dhx_grid_area .dhx_grid_dummy {
+  table-layout: auto;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+.dhx_grid_v_border {
+  position: absolute;
+  border-right: 1px solid #A4BED4;
+  width: 1px;
+  height: 100%;
+}
+.dhx_grid_event_selected {
+  background-color: #9cc1db !important;
+  color: white !important;
+}
+.dhx_grid_sort_desc .dhx_grid_view_sort {
+  background-position: 0 -55px;
+}
+.dhx_grid_sort_asc .dhx_grid_view_sort {
+  background-position: 0 -66px;
+}
+.dhx_grid_view_sort {
+  width: 10px;
+  height: 10px;
+  position: absolute;
+  border: none !important;
+  top: 5px;
+  background-repeat: no-repeat;
+  background-image: url(imgs/images.png);
+}
+/* end grid */
+/* marked timespans */
+.dhx_marked_timespan {
+  position: absolute;
+  width: 100%;
+  margin-left: 0;
+  /* fix bootstrap conflict [class*="span"] */
+}
+.dhx_time_block {
+  position: absolute;
+  width: 100%;
+  background: silver;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+  z-index: 1;
+}
+.dhx_time_block_reset {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.dhx_scheduler_month .dhx_marked_timespan {
+  display: none;
+}
+.dhx_mini_calendar .dhx_marked_timespan {
+  display: none;
+}
+/* now time */
+.dhx_now_time {
+  width: 100%;
+  border-bottom: 2px solid red;
+  z-index: 1;
+}
+.dhx_scheduler_month .dhx_now_time {
+  border-bottom: 0;
+  border-left: 2px solid red;
+}
+.dhx_matrix_now_time {
+  border-left: 2px solid red;
+  z-index: 1;
+}
+.dhx_now_time,
+.dhx_matrix_now_time {
+  opacity: 0.5;
+}
+/* Quick info */
+.dhx_cal_quick_info {
+  border: 2px solid #888;
+  border-radius: 5px;
+  position: absolute;
+  z-index: 300;
+  background-color: #8e99ae;
+  background-color: rgba(98, 107, 127, 0.5);
+  padding-left: 7px;
+  width: 300px;
+  transition: left 0.5s ease, right 0.5s;
+  -moz-transition: left 0.5s ease, right 0.5s;
+  -webkit-transition: left 0.5s ease, right 0.5s;
+  -o-transition: left 0.5s ease, right 0.5s;
+}
+.dhx_no_animate {
+  transition: none;
+  -moz-transition: none;
+  -webkit-transition: none;
+  -o-transition: none;
+}
+.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon {
+  float: right;
+}
+.dhx_cal_qi_title {
+  padding: 5px 0px 10px 5px;
+  color: #FFF;
+  letter-spacing: 1px;
+}
+.dhx_cal_qi_tdate {
+  font-size: 14px;
+}
+.dhx_cal_qi_tcontent {
+  font-size: 18px;
+  font-weight: bold;
+}
+.dhx_cal_qi_content {
+  border: 1px solid #888;
+  background-color: #fefefe;
+  padding: 16px 8px;
+  font-size: 14px;
+  color: #444;
+  width: 275px;
+  overflow: hidden;
+}
+.dhx_qi_big_icon {
+  border-radius: 3px;
+  color: #444;
+  margin: 5px 9px 5px 0px;
+  min-width: 60px;
+  line-height: 20px;
+  vertical-align: middle;
+  padding: 5px 10px 5px 5px;
+  cursor: pointer;
+  background-color: #fefefe;
+  border-bottom: 1px solid #666;
+  border-right: 1px solid #666;
+  float: left;
+}
+.dhx_cal_qi_controls div {
+  float: left;
+  height: 20px;
+  text-align: center;
+  line-height: 20px;
+}
+.dhx_qi_big_icon .dhx_menu_icon {
+  margin: 0 8px 0 0px;
+}
+.dhx_drag_marker {
+  width: 100%;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: #FFE763;
+  position: absolute;
+  box-sizing: border-box !important;
+  border-top: 1px solid #B6B6B6;
+  border-bottom: 1px solid #b6b6b6;
+}
+/* bootstrap CSS fix start */
+.dhx_cal_navline div,
+.dhx_cal_header,
+.dhx_cal_header div,
+.dhx_cal_data,
+.dhx_cal_data div,
+.dhx_cal_data table *,
+.dhx_multi_day,
+.dhx_multi_day div,
+.dhx_tooltip_line div,
+.dhx_cal_quick_info,
+.dhx_cal_quick_info div {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+.dhx_cal_data table {
+  border-collapse: separate;
+}
+.dhx_cal_light .dhx_cal_radio label {
+  margin-bottom: 0;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+/* bootstrap CSS fix end */
+.dhx_cal_container {
+  background-color: #C2D5FC;
+  font-family: Tahoma;
+  font-size: 8pt;
+  position: relative;
+  overflow: hidden;
+}
+.dhx_cal_container div {
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_navline {
+  height: 20px;
+  position: absolute;
+  z-index: 3;
+  width: 750px;
+  color: #2F3A48;
+}
+.dhx_cal_navline div {
+  position: absolute;
+  top: 2px;
+  white-space: nowrap;
+}
+.dhx_cal_navline .dhx_cal_date {
+  font-weight: 600;
+  left: 210px;
+  padding-top: 1px;
+}
+.dhx_cal_button .dhx_left_bg {
+  width: 1px;
+  overflow: hidden;
+  height: 17px;
+  z-index: 20;
+  top: 0px;
+}
+.dhx_cal_prev_button {
+  background-image: url(imgs/buttons.png);
+  background-position: 0px 0px;
+  width: 29px;
+  height: 17px;
+  left: 50px;
+  cursor: pointer;
+}
+.dhx_cal_next_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -30px 0px;
+  width: 29px;
+  height: 17px;
+  left: 80px;
+  cursor: pointer;
+}
+.dhx_cal_today_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -60px 0px;
+  width: 75px;
+  height: 17px;
+  left: 112px;
+  cursor: pointer;
+  text-align: center;
+  text-decoration: underline;
+}
+.dhx_cal_tab {
+  width: 59px;
+  height: 19px;
+  text-align: center;
+  text-decoration: underline;
+  padding-top: 2px;
+  cursor: pointer;
+  background-color: #D8E1EA;
+  -webkit-border-top-left-radius: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.dhx_cal_tab.active {
+  text-decoration: none;
+  cursor: default;
+  font-weight: bold;
+  border: 1px dotted #586A7E;
+  border-bottom: 0;
+  background-color: #C2D5FC;
+}
+.dhx_cal_header {
+  position: absolute;
+  left: 10px;
+  top: 23px;
+  width: 750px;
+  border-top: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+  z-index: 2;
+  overflow: hidden;
+  color: #2F3A48;
+}
+.dhx_cal_data {
+  -webkit-tap-highlight-color: transparent;
+  border-top: 1px dotted #8894A3;
+  position: absolute;
+  top: 44px;
+  width: 600px;
+  overflow-y: auto;
+  overflow-x: hidden;
+  -webkit-overflow-scrolling: touch;
+}
+.dhx_cal_data {
+  -ms-touch-action: pan-y;
+}
+.dhx_cal_event,
+.dhx_cal_event_line,
+.dhx_cal_event_clear {
+  -ms-touch-action: none;
+}
+.dhx_scale_bar {
+  position: absolute;
+  text-align: center;
+  background-color: #C2D5FC;
+  padding-top: 3px;
+  border-left: 1px dotted #586A7E;
+}
+.dhx_scale_holder {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg.png);
+}
+.dhx_scale_holder_now {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg_now.png);
+}
+.dhx_scale_hour {
+  height: 41px;
+  width: 50px;
+  border-bottom: 1px dotted #8894A3;
+  background-color: #C2D5FC;
+  text-align: center;
+  line-height: 40px;
+  color: #586A7E;
+  overflow: hidden;
+}
+.dhx_month_head {
+  background-color: #EBEFF4;
+  color: #2F3A48;
+  height: 18px;
+  padding-right: 5px;
+  padding-top: 3px;
+  text-align: right;
+  border-right: 1px dotted #586A7E;
+}
+.dhx_month_body {
+  border-right: 1px dotted #586A7E;
+  border-bottom: 1px dotted #586A7E;
+  background-color: #FFFFFF;
+}
+.dhx_now .dhx_month_body {
+  background-color: #E2EDFF;
+}
+.dhx_after .dhx_month_body,
+.dhx_before .dhx_month_body {
+  background-color: #ECECEC;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head {
+  background-color: #E2E3E6;
+  color: #94A6BB;
+}
+.dhx_now .dhx_month_head {
+  background-color: #D1DEF4;
+  font-weight: bold;
+}
+.dhx_scale_ignore {
+  display: none;
+}
+.dhx_cal_drag {
+  position: absolute;
+  z-index: 9999;
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.dhx_loading {
+  position: absolute;
+  width: 128px;
+  height: 15px;
+  background-image: url(imgs/loading.gif);
+  z-index: 9999;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day {
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day {
+  position: absolute;
+  border-top: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  background-position: center center;
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon {
+  background-image: url(imgs/clock_big.gif);
+}
+.dhx_multi_day_icon_small {
+  background-image: url(imgs/clock_small.gif);
+}
+.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
+  background-color: #d0e5ff;
+}
+/* left border config option support */
+.dhx_scale_hour_border,
+.dhx_month_body_border,
+.dhx_scale_bar_border,
+.dhx_month_head_border {
+  border-left: 1px dotted #8894A3;
+}
+/* export to PDF and iCal buttons start */
+.dhx_cal_navline .dhx_cal_export {
+  width: 18px;
+  height: 18px;
+  margin: 2px;
+  cursor: pointer;
+  top: 0px;
+}
+.dhx_cal_navline .dhx_cal_export.pdf {
+  left: 2px;
+  background-image: url('imgs/export_pdf.png');
+}
+.dhx_cal_navline .dhx_cal_export.ical {
+  left: 24px;
+  background-image: url('imgs/export_ical.png');
+}
+/* export to PDF and iCal buttons end */
+/*All*/
+.dhx_form_repeat,
+.dhx_form_repeat input {
+  padding: 0;
+  margin: 0;
+  padding-left: 5px;
+  font-family: Tahoma, Verdana;
+  font-size: 11px;
+  line-height: 24px;
+}
+.dhx_form_repeat {
+  overflow: hidden;
+  /*height:115px;*/
+  background-color: #FFF4B5;
+  /*border: 1px solid #DCC43E;*/
+}
+.dhx_cal_light_wide .dhx_form_repeat {
+  background-color: transparent;
+}
+.dhx_repeat_center,
+.dhx_repeat_left,
+.dhx_repeat_divider,
+.dhx_repeat_right {
+  height: 115px;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.dhx_repeat_center,
+.dhx_repeat_left {
+  padding: 10px 0 0px 10px;
+  float: left;
+}
+.dhx_repeat_left {
+  width: 105px;
+}
+.dhx_repeat_center {
+  width: 345px;
+  padding-top: 22px;
+}
+.dhx_repeat_divider {
+  float: left;
+  border-left: 1px dotted #DCC43E;
+  /*background-color: #DCC43E;*/
+  width: 1px;
+}
+.dhx_repeat_right {
+  float: right;
+  width: 173px;
+  padding: 17px 3px 0px 10px;
+}
+input.dhx_repeat_text {
+  height: 16px;
+  width: 27px;
+  margin: 0 4px 0 4px;
+  line-height: 18px;
+  padding: 0 0 0 2px;
+}
+.dhx_form_repeat select {
+  height: 20px;
+  width: 87px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+}
+input.dhx_repeat_date {
+  height: 18px;
+  width: 80px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+  background-repeat: no-repeat;
+  background-position: 64px 0;
+  border: 1px #7f9db9 solid;
+  line-height: 18px;
+}
+input.dhx_repeat_radio {
+  margin-right: 4px;
+}
+input.dhx_repeat_checkbox {
+  margin: 4px 4px 0 0;
+}
+.dhx_repeat_days td {
+  padding-right: 5px;
+}
+.dhx_repeat_days label {
+  font-size: 10px;
+}
+.dhx_custom_button {
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_custom_button_recurring {
+  background-image: url(imgs/but_repeat.gif);
+  background-position: -5px 20px;
+  width: 20px;
+  margin-right: 10px;
+}
+/* increase width of lightbox */
+.dhx_cal_light_rec {
+  width: 640px;
+}
+.dhx_cal_light_rec .dhx_cal_larea {
+  width: 632px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide {
+  width: 816px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea {
+  width: 808px;
+}
+/* event start */
+.dhx_cal_event .dhx_title {
+  border-width: 1px 1px 0 1px;
+  -webkit-border-top-left-radius: 1px;
+  -webkit-border-top-right-radius: 1px;
+  -moz-border-radius-topleft: 1px;
+  -moz-border-radius-topright: 1px;
+  border-top-left-radius: 1px;
+  border-top-right-radius: 1px;
+  font-family: "Segoe UI", Arial;
+  font-weight: bold;
+  font-size: 12px;
+  height: 14px;
+  line-height: 14px;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event.dhx_cal_select_menu .dhx_body {
+  padding-bottom: 8px;
+  -webkit-border-bottom-right-radius: 1px;
+  -webkit-border-bottom-left-radius: 1px;
+  -moz-border-radius-bottomright: 1px;
+  -moz-border-radius-bottomleft: 1px;
+  border-bottom-right-radius: 1px;
+  border-bottom-left-radius: 1px;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event.dhx_cal_select_menu .dhx_footer {
+  display: none;
+}
+.dhx_cal_event .dhx_footer {
+  height: 15px;
+  border: 0;
+  background-color: transparent !important;
+  margin-top: -11px;
+}
+.dhx_cal_event .dhx_footer:hover {
+  background: url(imgs_flat/resizing.png) no-repeat center center;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event .dhx_body,
+.dhx_cal_event .dhx_title {
+  background-color: #5B9BE0;
+  border-color: transparent;
+  color: white;
+}
+.dhx_cal_event_line,
+.dhx_cal_event {
+  -webkit-box-shadow: 0 0 1px #FFF;
+  -moz-box-shadow: 0 0 1px #FFF;
+  box-shadow: 0 0 1px #FFF;
+}
+.dhx_cal_event.dhx_cal_editor {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.dhx_cal_event.dhx_cal_editor {
+  border: 1px solid transparent;
+}
+.dhx_cal_editor {
+  font-size: 12px;
+  font-family: "Segoe UI", Arial;
+}
+div.dhx_menu_head,
+div.dhx_menu_icon {
+  background-image: url(imgs_flat/controls.png);
+}
+.dhx_cal_event_line {
+  border: 1px solid transparent;
+  background-color: #5B9BE0;
+  color: #FFF;
+  height: 17px;
+  line-height: 16px;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+}
+.dhx_cal_event_line:hover div {
+  background: url(imgs_flat/resize_dots.png) repeat-y;
+}
+.dhx_cal_event_line_start {
+  -webkit-border-top-left-radius: 1px;
+  -webkit-border-bottom-left-radius: 1px;
+  -moz-border-radius-topleft: 1px;
+  -moz-border-radius-bottomleft: 1px;
+  border-top-left-radius: 1px;
+  border-bottom-left-radius: 1px;
+}
+.dhx_cal_event_line_end {
+  -webkit-border-top-right-radius: 1px;
+  -webkit-border-bottom-right-radius: 1px;
+  -moz-border-radius-topright: 1px;
+  -moz-border-radius-bottomright: 1px;
+  border-top-right-radius: 1px;
+  border-bottom-right-radius: 1px;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event_line {
+  font-size: 12px;
+  font-family: "Segoe UI", Arial;
+}
+.dhx_cal_event:hover .dhx_footer {
+  background: url(imgs_flat/resizing.png) no-repeat center center;
+}
+/* event end */
+/* scales, containers start */
+.dhx_cal_container {
+  background-color: white;
+  font-family: "Segoe UI", Arial;
+}
+.dhx_cal_data {
+  border-top: 1px solid #CECECE;
+}
+.dhx_scale_holder {
+  background-image: url(imgs_flat/databg.png);
+  border-right: 1px solid #CECECE;
+}
+.dhx_scale_holder_now {
+  background-image: url(imgs_flat/databg_now.png);
+  border-right: 1px solid #CECECE;
+}
+.dhx_scale_hour {
+  border-bottom: 1px solid #CECECE;
+  background-color: white;
+  font: 11px/44px Arial;
+  font-family: "Segoe UI", Arial;
+  font-weight: lighter;
+  color: #767676;
+}
+.dhx_scale_h {
+  display: inline-block;
+  font-size: 22px;
+}
+.dhx_scale_m {
+  display: inline-block;
+  font-size: 11px;
+  line-height: 35px;
+  vertical-align: top;
+}
+.dhx_cal_header {
+  border: 1px solid #CECECE;
+  border-left: 0;
+  border-bottom: 0;
+}
+.dhx_scale_bar {
+  border-left: 1px solid #CECECE;
+  font: 12px/16px "Segoe UI", Arial;
+  color: #767676;
+  line-height: 30px;
+  padding-top: 2px;
+  background-color: white;
+}
+.dhx_scale_bar > a {
+  color: #5780AD;
+  text-decoration: none;
+}
+.dhx_scale_bar > a:hover {
+  text-decoration: underline;
+}
+.dhx_month_head > a {
+  color: #5780AD;
+  text-decoration: none;
+}
+.dhx_month_head > a:hover {
+  text-decoration: underline;
+}
+/* scales, containers end */
+/* navigation start */
+.dhx_cal_navline div {
+  top: 14px;
+}
+.dhx_cal_tab,
+.dhx_cal_date,
+.dhx_cal_today_button,
+.dhx_cal_prev_button,
+.dhx_cal_next_button {
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+  border: none;
+  color: #454544;
+  height: 30px;
+  line-height: 30px;
+  background: none;
+  font-family: "Segoe UI", Arial;
+  font-weight: lighter;
+}
+.dhx_cal_navline .dhx_cal_date {
+  border: 0;
+  color: #454544;
+  font-family: "Segoe UI", Arial;
+  font-weight: lighter;
+  font-size: 22px;
+  text-align: center;
+  top: 14px;
+  position: absolute;
+  left: 0;
+  width: 100%;
+  z-index: -1;
+}
+.dhx_cal_today_button {
+  background: none;
+  color: #5780AD;
+  font-size: 13px;
+  font-weight: bolder;
+  left: auto;
+  right: 123px;
+  text-decoration: none;
+  width: 80px;
+}
+.dhx_cal_prev_button,
+.dhx_cal_next_button {
+  left: auto;
+  width: 46px;
+}
+.dhx_cal_prev_button {
+  right: 61px;
+  background: url(imgs_flat/arrow_left.png) no-repeat center center;
+}
+.dhx_cal_next_button {
+  right: 14px;
+  background: url(imgs_flat/arrow_right.png) no-repeat center center;
+}
+.dhx_cal_tab {
+  color: #5780AD;
+  font-size: 13px;
+  font-weight: bolder;
+  padding-top: 0;
+  text-decoration: none;
+  width: 60px;
+}
+.dhx_cal_tab:hover,
+.dhx_cal_today_button:hover {
+  text-decoration: underline;
+}
+.dhx_cal_tab.active {
+  background-color: #5780AD;
+  border: none;
+  color: #FFFFFF;
+  font-family: "Segoe UI", Arial;
+  font-weight: lighter;
+  text-decoration: none;
+}
+.dhx_cal_tab_standalone {
+  padding: 0 5px;
+}
+.dhx_multi_day,
+.dhx_multi_day_icon_small,
+.dhx_multi_day_icon {
+  background-color: white;
+}
+.dhx_multi_day {
+  border-top: 1px solid #CECECE;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  border-bottom: 1px solid #CECECE;
+  border-right: 1px solid #CECECE;
+}
+.dhx_multi_day_icon_small {
+  background-image: url(imgs_flat/clock.png);
+}
+.dhx_multi_day_icon {
+  background-image: url(imgs_flat/clock_big.gif);
+}
+/* navigation end */
+/* month view start */
+.dhx_month_head,
+.dhx_month_body {
+  background-color: white;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head,
+.dhx_after .dhx_month_body,
+.dhx_before .dhx_month_body {
+  background-color: #F7F7F7;
+}
+.dhx_month_head {
+  height: 21px;
+  padding-top: 0;
+  font: 12px/21px "Segoe UI", Arial;
+  color: #5780AD;
+  border-right: 1px solid #CECECE;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head,
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head {
+  color: #bbbbbb;
+}
+.dhx_month_body {
+  border-right: 1px solid #CECECE;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_now .dhx_month_head,
+.dhx_now .dhx_month_body {
+  background-color: #FFF3A1;
+  font-weight: normal;
+}
+.dhx_cal_event_clear {
+  color: #0E64A0;
+}
+/* month view end */
+/* lightbox start */
+.dhx_cal_larea {
+  margin-left: 0;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  margin-left: 3px;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  padding: 5px 0;
+}
+.dhx_cal_light,
+.dhx_cal_larea,
+.dhx_cal_lsection,
+.dhx_wrap_section,
+.dhx_cal_light_wide .dhx_wrap_section,
+.dhx_cal_ltext textarea {
+  background-color: white;
+  font-family: "Segoe UI", Arial;
+}
+.dhx_cal_lsection,
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,
+.dhx_cal_lsection .dhx_fullday,
+.dhx_cal_light input {
+  color: #444;
+  font-family: "Segoe UI", Arial;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  border-top: 0;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_cal_larea {
+  border: 1px solid transparent;
+}
+.dhx_cal_ltext textarea,
+.dhx_cal_light select,
+.dhx_cal_light {
+  color: #2E2E2E;
+}
+.dhx_cal_light {
+  border: none;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection,
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday {
+  font-family: "Segoe UI", Arial;
+  font-size: 13px;
+  font-weight: bold;
+}
+.dhx_section_time {
+  background-color: transparent;
+}
+.dhx_save_btn,
+.dhx_cancel_btn,
+.dhx_delete_btn,
+.dhx_btn_set div:first-child {
+  display: none;
+}
+.dhx_btn_set,
+.dhx_btn_set div {
+  height: 30px;
+  padding: 0 20px;
+  line-height: 30px;
+}
+.dhx_btn_set {
+  margin: 12px 0 0 0;
+  padding: 0;
+  font-size: 13px;
+  color: #444;
+  font-weight: normal;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+}
+.dhx_left_btn_set {
+  margin-left: 20px;
+}
+.dhx_right_btn_set {
+  margin-right: 20px;
+}
+.dhx_save_btn_set {
+  border: none;
+  color: #FFF;
+  background-color: #5B9BE0;
+}
+.dhx_cancel_btn_set {
+  background-color: #FE7510;
+  color: #FFF;
+}
+.dhx_delete_btn_set {
+  border: 1px solid #888;
+  color: #444;
+}
+.dhx_cal_ltitle {
+  height: 30px;
+  line-height: 30px;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_cal_ltitle span {
+  float: left;
+}
+.dhx_cal_light .dhx_title {
+  font-size: 13px;
+  padding-left: 13px;
+}
+.dhx_mark {
+  display: none;
+}
+.dhx_time {
+  font-size: 12px;
+  padding-left: 10px;
+}
+.dhx_close_icon {
+  float: right;
+  width: 9px;
+  height: 9px;
+  background: url(imgs_flat/close_icon.png) no-repeat center center;
+  padding: 10px;
+  margin-top: 1px;
+}
+.dhx_cal_light_wide .dhx_cal_ltext.dhx_cal_template {
+  line-height: 22px;
+}
+.dhx_cal_ltext textarea {
+  line-height: 20px;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  border: 1px solid #CECECE;
+  background-color: #F9F9F9;
+}
+/* lightbox end */
+/* modal box */
+.dhtmlx_modal_box {
+  border: none;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+  background: white;
+  font-family: "Segoe UI", Arial;
+  width: 330px;
+}
+.dhtmlx_popup_text {
+  font-size: 16px;
+}
+.dhtmlx_popup_controls {
+  padding-bottom: 9px;
+}
+.dhtmlx_popup_button,
+.dhtmlx_popup_button:active,
+.dhtmlx_popup_button div,
+.dhtmlx_popup_button div:active {
+  color: #444;
+  background: white;
+  box-shadow: none;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+}
+.dhtmlx_popup_button {
+  border: 1px solid #888;
+}
+.dhtmlx_popup_button div {
+  border: none;
+}
+.dhtmlx_popup_button.dhtmlx_ok_button {
+  border-color: #5B9BE0;
+  background-color: #5B9BE0;
+  color: #FFF;
+}
+.dhtmlx_popup_button.dhtmlx_cancel_button {
+  border-color: #FE7510;
+  background-color: #FE7510;
+  color: #FFF;
+}
+.dhtmlx_popup_button.dhtmlx_ok_button div,
+.dhtmlx_popup_button.dhtmlx_cancel_button div {
+  background: transparent;
+  color: #FFF;
+}
+/* mobdal box end */
+/* minicalendar */
+.dhx_cal_container.dhx_mini_calendar {
+  box-sizing: border-box;
+  border: none;
+  box-shadow: 0px 2px 10px 0px #AAA;
+  border-radius: 0px;
+}
+.dhx_mini_calendar .dhx_year_month {
+  border: 1px solid #CECECE;
+  font-family: "Segoe UI", Arial;
+}
+.dhx_mini_calendar .dhx_month_head,
+.dhx_mini_calendar .dhx_year_month,
+.dhx_mini_calendar .dhx_month_body,
+.dhx_mini_calendar .dhx_scale_bar,
+.dhx_mini_calendar .dhx_year_body {
+  border-color: transparent;
+}
+.dhx_mini_calendar .dhx_year_body {
+  padding-top: 1px;
+}
+.dhx_mini_calendar .dhx_scale_bar {
+  border-width: 0;
+}
+.dhx_mini_calendar .dhx_year_week {
+  border-bottom: 1px solid #CECECE;
+  padding-top: 1px;
+}
+.dhx_mini_calendar .dhx_month_head {
+  padding-right: 0;
+  margin-right: 1px;
+  text-align: center;
+}
+.dhx_mini_calendar .dhx_cal_prev_button,
+.dhx_mini_calendar .dhx_cal_next_button {
+  border: 0;
+  height: 20px;
+}
+/* minicalendar end */
+.dhx_cal_navline div.dhx_minical_icon {
+  left: 210px;
+  top: 14px;
+  width: 30px;
+  height: 30px;
+  background: url(imgs_flat/calendar.gif) no-repeat;
+  background-position: 3px 5px;
+}
+/* timeline */
+.dhx_cal_event_line .dhx_event_resize {
+  background: none;
+}
+.dhx_cal_event_line .dhx_event_resize:hover {
+  background: url(imgs_flat/resize_dots.png) repeat-y;
+}
+.dhx_matrix_scell,
+.dhx_matrix_cell {
+  border-bottom: 1px solid #CECECE;
+  border-right: 1px solid #CECECE;
+}
+.dhx_cal_header div div {
+  border-left: 1px solid #CECECE;
+}
+.dhx_matrix_scell {
+  font-size: 13px;
+}
+.dhx_second_scale_bar {
+  border-bottom: 1px solid #CECECE;
+}
+/* timeline end */
+/* recurring */
+.dhx_repeat_divider {
+  border-left: 1px solid #CECECE;
+}
+.dhx_custom_button {
+  background-color: white;
+  border: 1px solid #a4a4a4;
+  border-radius: 0;
+  color: #444;
+}
+.dhx_cal_light_wide .dhx_custom_button {
+  margin-top: 6px;
+}
+.dhx_custom_button_recurring {
+  background-image: url(imgs_flat/but_repeat.gif);
+}
+input.dhx_repeat_date {
+  border-color: #a8a8a8;
+}
+.dhx_form_repeat {
+  background-color: transparent;
+}
+/* recurring end */
+/* agenda */
+.dhx_v_border,
+.dhx_agenda_line div {
+  border-right: 1px solid #CECECE;
+}
+.dhx_cal_header .dhx_agenda_line,
+.dhx_cal_header .dhx_agenda_line div {
+  height: 100%;
+  line-height: 35px;
+}
+.dhx_scheduler_agenda .dhx_cal_data,
+.dhx_agenda_area {
+  background-image: url(imgs_flat/agenda_bg.gif);
+}
+.dhx_agenda_line {
+  height: 26px;
+}
+.dhx_agenda_line div,
+.dhx_agenda_line span {
+  line-height: 26px;
+}
+.dhx_agenda_line .dhx_event_icon {
+  background-position: 5px 6px;
+}
+/* agenda end */
+/* year */
+.dhx_year_month {
+  border: 1px solid #CECECE;
+}
+.dhx_scale_bar_last {
+  border-right: 1px solid #CECECE;
+}
+.dhx_year_body {
+  border-left: 1px solid #CECECE;
+}
+/* year end */
+/* expand */
+.dhx_expand_icon {
+  top: -3px;
+}
+/* expand end */
+/* units view */
+.dhx_scale_bar .dhx_cal_next_button,
+.dhx_scale_bar .dhx_cal_prev_button {
+  width: 20px;
+  height: 100%;
+  top: 0px !important;
+  border: 0;
+}
+.dhx_scale_bar .dhx_cal_next_button {
+  right: 1px !important;
+  border-left: 1px solid #CECECE;
+}
+.dhx_scale_bar .dhx_cal_prev_button {
+  left: 1px !important;
+  border-right: 1px solid #CECECE;
+}
+/* units view end */
+/* map view */
+.dhx_map_line .headline_date,
+.dhx_map_line .headline_description {
+  border: 0;
+}
+.dhx_map_line .headline_date {
+  border-right: 1px solid #CECECE;
+}
+.dhx_map_line.highlight {
+  background-color: #b3daff;
+}
+.dhx_cal_header .dhx_map_line {
+  height: 100%;
+}
+.dhx_cal_header .dhx_map_line .headline_date,
+.dhx_cal_header .dhx_map_line .headline_description {
+  height: 100%;
+  line-height: 35px;
+}
+.dhx_map_area {
+  background-image: url(imgs_flat/agenda_bg.gif);
+}
+.dhx_map_line {
+  height: 26px;
+}
+.dhx_map_line div,
+.dhx_map_line .line_description,
+.dhx_map_line .line_description {
+  line-height: 26px;
+  height: 26px;
+}
+.dhx_map_line .dhx_event_icon {
+  background-position: 5px 6px;
+}
+.dhx_cal_header div.dhx_map_line,
+.dhx_cal_data div.dhx_map_area {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  border-right: 1px solid #cecece;
+}
+/* map view end */
+/* tooltip start */
+.dhtmlXTooltip.tooltip {
+  border-left: 1px solid #CECECE;
+  border-top: 1px solid #CECECE;
+  color: #747473;
+  font-size: 12px;
+  line-height: 16px;
+}
+/* tooltip end */
+/* week agenda start */
+.dhx_wa_scale_bar {
+  border-top: 1px solid #CECECE;
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_wa_column_last .dhx_wa_day_cont {
+  border-left: 1px solid #CECECE;
+}
+.dhx_wa_ev_body {
+  border-bottom: 1px solid #CECECE;
+}
+.dhx_wa_scale_bar {
+  background-color: #f0ede7;
+}
+.dhx_wa_ev_body.dhx_cal_event_selected {
+  background-color: #fff3a1;
+  color: #362d26;
+}
+.dhx_wa_dnd {
+  background-color: #fddb93 !important;
+  color: #747473 !important;
+  border: 1px solid #ccb177;
+}
+/* week agenda end */
+/* readonly start */
+.dhx_text_disabled {
+  color: #2E2E2E;
+}
+.dhx_cal_ltext .dhx_text_disabled {
+  line-height: 22px;
+}
+/* readonly end */
+/* grid view start */
+.dhx_grid_v_border {
+  border-right-color: #CECECE;
+}
+.dhx_cal_header .dhx_grid_line,
+.dhx_cal_header .dhx_grid_line div {
+  height: 100%;
+  line-height: 35px;
+}
+.dhx_cal_header .dhx_grid_line div.dhx_grid_view_sort {
+  height: 10px;
+  top: 12px;
+}
+/* grid view end*/
+/* left border support */
+.dhx_scale_hour_border,
+.dhx_month_body_border,
+.dhx_scale_bar_border,
+.dhx_month_head_border {
+  border-left: 1px solid #CECECE;
+}
+.dhx_cal_quick_info {
+  background: rgba(204, 204, 204, 0.8);
+  border: none;
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+  font-family: "Segoe UI", Arial;
+  width: 280px;
+}
+.dhx_cal_qi_title {
+  color: #000;
+}
+.dhx_cal_qi_tdate {
+  color: #444;
+}
+.dhx_cal_qi_content {
+  background: none;
+  border: none;
+  padding: 10px 8px;
+}
+.dhx_qi_big_icon {
+  -webkit-border-radius: 0px;
+  -moz-border-radius: 0px;
+  border-radius: 0px;
+  border: none;
+  color: #FFF;
+  float: none;
+  font-size: 13px;
+}
+.dhx_qi_big_icon .dhx_menu_icon {
+  display: none !important;
+}
+.dhx_cal_quick_info .icon_details {
+  background: #5B9BE0;
+  margin-left: 100px;
+}
+.dhx_cal_quick_info .icon_details div {
+  padding-left: 12px;
+}
+.dhx_cal_quick_info .icon_delete {
+  background: #FE7510;
+}
+.dhx_cal_quick_info .icon_delete div {
+  padding-left: 12px;
+}
+/* export to PDF and iCal buttons start */
+.dhx_cal_navline .dhx_cal_export {
+  width: 32px;
+  height: 32px;
+  margin: 2px;
+  cursor: pointer;
+  top: 12px;
+}
+.dhx_cal_navline .dhx_cal_export.pdf {
+  left: auto;
+  right: 249px;
+  background-image: url('imgs_flat/export_pdf.png');
+}
+.dhx_cal_navline .dhx_cal_export.ical {
+  left: auto;
+  right: 210px;
+  background-image: url('imgs_flat/export_ical.png');
+}
+/* export to PDF and iCal buttons end */
+/* minicalendar */
+.dhx_mini_calendar {
+  font-family: "Segoe UI", Arial;
+  padding: 5px;
+}
+.dhx_mini_calendar .dhx_year_event,
+.dhx_mini_calendar .dhx_calendar_click {
+  border-radius: 0px;
+}
+.dhx_mini_calendar .dhx_month_head {
+  color: #363636;
+  font-family: "Segoe UI", Arial;
+  font-size: 13px;
+  margin: 2px 2px;
+}
+.dhx_mini_calendar .dhx_year_month {
+  color: #454544;
+  line-height: 20px;
+  height: 25px;
+  font-size: 20px;
+  font-weight: lighter;
+}
+.dhx_mini_calendar .dhx_cal_prev_button {
+  top: 8px !important;
+}
+.dhx_mini_calendar .dhx_cal_next_button {
+  top: 8px !important;
+}
+.dhx_mini_calendar .dhx_scale_bar {
+  font-family: "Segoe UI", Arial;
+  font-size: 11px;
+}
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.xml
new file mode 100644
index 0000000000..1b683fef30
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_flat.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_flat.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.css b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.css
new file mode 100644
index 0000000000..34a81970b4
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.css
@@ -0,0 +1,1894 @@
+/*
+@license
+dhtmlxScheduler v.4.3.1 Stardard
+
+This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
+
+(c) Dinamenta, UAB.
+*/
+.dhtmlx_message_area {
+  position: fixed;
+  right: 5px;
+  width: 250px;
+  z-index: 1000;
+}
+.dhtmlx-info {
+  min-width: 120px;
+  padding: 4px 4px 4px 20px;
+  font-family: Tahoma;
+  z-index: 10000;
+  overflow: hidden;
+  margin: 5px;
+  margin-bottom: 10px;
+  -webkit-transition: all .5s ease;
+  -moz-transition: all .5s ease;
+  -o-transition: all .5s ease;
+  transition: all .5s ease;
+}
+.dhtmlx-info.hidden {
+  height: 0px;
+  padding: 0px;
+  border-width: 0px;
+  margin: 0px;
+  overflow: hidden;
+}
+.dhtmlx_modal_box {
+  overflow: hidden;
+  display: inline-block;
+  min-width: 300px;
+  width: 300px;
+  text-align: center;
+  position: fixed;
+  background-color: #fff;
+  background: -webkit-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  background: -moz-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
+  box-shadow: 0px 0px 14px #888;
+  font-family: Tahoma;
+  z-index: 20000;
+  border-radius: 6px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx_popup_title {
+  border-top-left-radius: 5px;
+  border-top-right-radius: 5px;
+  border-width: 0px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
+}
+.dhtmlx-info,
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  user-select: none;
+  -webkit-user-select: none;
+  -moz-user-select: -moz-none;
+  cursor: pointer;
+}
+.dhtmlx_popup_text {
+  overflow: hidden;
+}
+.dhtmlx_popup_controls {
+  border-radius: 6px;
+  padding: 5px;
+}
+.dhtmlx_popup_button,
+.dhtmlx_button {
+  height: 30px;
+  line-height: 30px;
+  display: inline-block;
+  margin: 0 5px;
+  border-radius: 6px;
+  color: #FFF;
+}
+.dhtmlx_popup_button {
+  min-width: 120px;
+}
+div.dhx_modal_cover {
+  background-color: #000;
+  cursor: default;
+  filter: alpha(opacity=20);
+  opacity: 0.2;
+  position: fixed;
+  z-index: 19999;
+  left: 0px;
+  top: 0px;
+  width: 100%;
+  height: 100%;
+  border: none;
+  zoom: 1;
+}
+.dhtmlx-info img,
+.dhtmlx_modal_box img {
+  float: left;
+  margin-right: 20px;
+}
+.dhtmlx-alert-error .dhtmlx_popup_title,
+.dhtmlx-confirm-error .dhtmlx_popup_title {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);
+}
+.dhtmlx-alert-error,
+.dhtmlx-confirm-error {
+  border: 1px solid #ff0000;
+}
+/*Skin section*/
+.dhtmlx_button,
+.dhtmlx_popup_button {
+  box-shadow: 0px 0px 4px #888;
+  border: 1px solid #838383;
+}
+.dhtmlx_button input,
+.dhtmlx_popup_button div {
+  border: 1px solid #FFF;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
+  border-radius: 6px;
+  font-size: 15px;
+  font-weight: normal;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  color: #fff;
+  padding: 0px;
+  margin: 0px;
+  vertical-align: top;
+  height: 28px;
+  line-height: 28px;
+}
+.dhtmlx_button input:focus,
+.dhtmlx_button input:active,
+.dhtmlx_popup_button div:active,
+.dhtmlx_popup_button div:focus {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);
+  background-image: -webkit-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+  background-image: -moz-linear-gradient(top, #707070 1%, #4c4c4c 99%);
+}
+.dhtmlx_popup_title {
+  color: #fff;
+  text-shadow: 1px 1px #000;
+  height: 40px;
+  line-height: 40px;
+  font-size: 20px;
+}
+.dhtmlx_popup_text {
+  margin: 15px 15px 5px 15px;
+  font-size: 14px;
+  color: #000;
+  min-height: 30px;
+  border-radius: 6px;
+}
+.dhtmlx-info,
+.dhtmlx-error {
+  font-size: 14px;
+  color: #000;
+  box-shadow: 0px 0px 10px #888;
+  padding: 0px;
+  background-color: #FFF;
+  border-radius: 3px;
+  border: 1px solid #ffffff;
+}
+.dhtmlx-info div {
+  padding: 5px 10px 5px 10px;
+  background-color: #fff;
+  border-radius: 3px;
+  border: 1px solid #B8B8B8;
+}
+.dhtmlx-error {
+  background-color: #d81b1b;
+  border: 1px solid #ff3c3c;
+  box-shadow: 0px 0px 10px #000;
+}
+.dhtmlx-error div {
+  background-color: #d81b1b;
+  border: 1px solid #940000;
+  color: #FFF;
+}
+.dhx_cal_event .dhx_header,
+.dhx_cal_event .dhx_title,
+.dhx_cal_event .dhx_body,
+.dhx_cal_event .dhx_footer {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  color: #887A2E;
+  overflow: hidden;
+  width: 100%;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_move_denied .dhx_cal_event .dhx_header,
+.dhx_move_denied .dhx_cal_event .dhx_title {
+  cursor: default;
+}
+.dhx_cal_event .dhx_header {
+  height: 1px;
+  margin-left: 1px;
+  border-width: 1px 1px 0px 1px;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_title {
+  height: 12px;
+  border-width: 0px 1px 1px 1px;
+  border-bottom-style: dotted;
+  font-size: 7pt;
+  font-weight: bold;
+  text-align: center;
+  background-position: right;
+  background-repeat: no-repeat;
+  cursor: pointer;
+}
+.dhx_cal_event .dhx_body,
+.dhx_cal_event.dhx_cal_select_menu .dhx_body {
+  border-width: 0 1px 1px 1px;
+  padding: 5px;
+}
+.dhx_resize_denied,
+.dhx_resize_denied .dhx_event_resize {
+  cursor: default !important;
+}
+.dhx_cal_event .dhx_event_resize {
+  cursor: s-resize;
+}
+.dhx_cal_event .dhx_footer,
+.dhx_cal_event .dhx_select_menu_footer {
+  height: 1px;
+  margin-left: 2px;
+  border-width: 0px 1px 1px 1px;
+  position: relative;
+}
+.dhx_cal_event_line {
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  border-radius: 3px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 10px;
+  color: #887A2E;
+  cursor: pointer;
+  overflow: hidden;
+}
+.dhx_cal_event_clear {
+  font-family: Tahoma;
+  font-size: 8pt;
+  height: 13px;
+  padding-left: 2px;
+  color: #887A2E;
+  white-space: nowrap;
+  overflow: hidden;
+  cursor: pointer;
+}
+.dhx_in_move {
+  background-color: #FFFF80;
+}
+.dhx_cal_event.dhx_cal_editor {
+  border: 1px solid #B7A543;
+  border-top-style: dotted;
+  z-index: 999;
+  position: absolute;
+  overflow: hidden;
+}
+textarea.dhx_cal_editor {
+  width: 100%;
+  height: 100%;
+  border: 0 solid black;
+  margin: 0;
+  padding: 0;
+  overflow: auto;
+}
+div.dhx_menu_head {
+  background-image: url(imgs/controls.gif);
+  background-position: 0px -43px;
+  width: 10px;
+  height: 10px;
+  margin-left: 5px;
+  margin-top: 1px;
+  border: none;
+  cursor: default;
+}
+div.dhx_menu_icon {
+  background-image: url(imgs/controls.gif);
+  width: 20px;
+  height: 20px;
+  margin-left: -5px;
+  margin-top: 0px;
+  border: none;
+  cursor: pointer;
+}
+div.icon_details {
+  background-position: 0px 0px;
+}
+div.icon_edit {
+  background-position: -22px 0px;
+}
+div.icon_save {
+  background-position: -84px -1px;
+}
+div.icon_cancel {
+  background-position: -62px 0px;
+}
+div.icon_delete {
+  background-position: -42px 0px;
+}
+/*view more link in month view*/
+.dhx_month_link {
+  position: absolute;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  text-align: right;
+  cursor: pointer;
+  padding-right: 10px;
+}
+.dhx_month_link a {
+  color: blue;
+}
+.dhx_month_link a:hover {
+  text-decoration: underline;
+}
+.dhx_global_tip {
+  font-family: Tahoma, Helvetica;
+  text-align: center;
+  font-size: 20px;
+  position: fixed;
+  top: 60px;
+  right: 20px;
+  background-color: rgba(255, 255, 255, 0.7);
+  color: #000;
+  z-index: 10000;
+  padding: 20px 30px;
+  width: 190px;
+}
+.dhx_global_tip div {
+  font-size: 30px;
+}
+@media (-moz-touch-enabled) {
+  .dhx_cal_container {
+    user-select: none;
+    -moz-user-select: none;
+  }
+}
+.dhx_unselectable,
+.dhx_unselectable div {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_light {
+  -webkit-tap-highlight-color: transparent;
+  background-color: #FFE763;
+  border-radius: 5px;
+  font-family: Tahoma;
+  font-size: 8pt;
+  border: 1px solid #B7A64B;
+  color: #887A2E;
+  position: absolute;
+  z-index: 10001;
+  width: 580px;
+  height: 300px;
+  box-shadow: 5px 5px 5px #888;
+}
+.dhx_cal_light_wide {
+  width: 650px;
+}
+.dhx_mark {
+  position: relative;
+  top: 3px;
+  background-image: url('imgs/controls.gif');
+  background-position: 0px -43px;
+  padding-left: 10px;
+}
+.dhx_ie6 .dhx_mark {
+  background-position: 6px -41px;
+}
+.dhx_cal_light select {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+  padding: 2px;
+  margin: 0px;
+}
+.dhx_cal_ltitle {
+  padding: 2px 0px 2px 5px;
+  overflow: hidden;
+  white-space: nowrap;
+}
+.dhx_cal_ltitle span {
+  white-space: nowrap;
+}
+.dhx_cal_lsection {
+  background-color: #DBCF8C;
+  color: #FFF4B5;
+  font-weight: bold;
+  padding: 5px 0px 3px 10px;
+}
+.dhx_section_time {
+  background-color: #DBCF8C;
+  white-space: nowrap;
+}
+.dhx_cal_lsection .dhx_fullday {
+  float: right;
+  margin-right: 5px;
+  color: #887A2E;
+  font-size: 12px;
+  font-weight: normal;
+  line-height: 20px;
+  vertical-align: top;
+  cursor: pointer;
+}
+.dhx_cal_lsection {
+  font-size: 18px;
+  font-family: Arial;
+}
+.dhx_cal_ltext {
+  padding: 2px	0px 2px 10px;
+  overflow: hidden;
+}
+.dhx_cal_ltext textarea {
+  background-color: #FFF4B5;
+  /* #FFF4B5; should be the same for dhx_cal_larea, was transperent */
+  overflow: auto;
+  border: none;
+  color: #887A2E;
+  height: 100%;
+  width: 100%;
+  outline: none !important;
+  resize: none;
+}
+.dhx_time {
+  font-weight: bold;
+}
+.dhx_cal_light .dhx_title {
+  padding-left: 10px;
+}
+.dhx_cal_larea {
+  border: 1px solid #DCC43E;
+  background-color: #FFF4B5;
+  overflow: hidden;
+  margin-left: 3px;
+  width: 572px;
+  height: 1px;
+}
+.dhx_btn_set {
+  padding: 5px 10px 0px 10px;
+  float: left;
+}
+.dhx_btn_set div {
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.dhx_save_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -84px 0px;
+  width: 21px;
+}
+.dhx_cancel_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -63px 0px;
+  width: 20px;
+}
+.dhx_delete_btn {
+  background-image: url('imgs/controls.gif');
+  background-position: -42px 0px;
+  width: 20px;
+}
+.dhx_cal_cover {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  z-index: 10000;
+  top: 0px;
+  left: 0px;
+  background-color: black;
+  opacity: 0.1;
+  filter: alpha(opacity=10);
+}
+.dhx_custom_button {
+  padding: 0px 3px 0px 3px;
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+  background-color: #FFE763;
+  font-weight: normal;
+  margin-right: 5px;
+  margin-top: 0px;
+  cursor: pointer;
+}
+.dhx_custom_button div {
+  cursor: pointer;
+  float: left;
+  height: 21px;
+  line-height: 21px;
+  vertical-align: middle;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  border-top-width: 0px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+  border: 0px;
+  float: left;
+  text-align: right;
+  width: 100px;
+  height: 20px;
+  font-size: 16px;
+  padding: 5px 0px 0px 10px;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  border-top: 1px solid #DBCF8C;
+  position: relative;
+  background-color: #DBCF8C;
+  overflow: hidden;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  padding-top: 2px !important;
+  height: 20px !important;
+}
+.dhx_section_time {
+  text-align: center;
+}
+.dhx_cal_light_wide .dhx_cal_larea {
+  width: 730px;
+}
+.dhx_cal_light_wide {
+  width: 738px;
+}
+.dhx_cal_light_wide .dhx_section_time {
+  background: transparent;
+}
+.dhx_cal_light_wide .dhx_cal_checkbox label {
+  padding-left: 0px;
+}
+.dhx_cal_wide_checkbox input {
+  margin-top: 8px;
+  margin-left: 14px;
+}
+.dhx_cal_light input {
+  font-family: Tahoma;
+  font-size: 8pt;
+  color: #887A2E;
+}
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday {
+  float: none;
+  margin-right: 0px;
+  color: #FFF4B5;
+  font-weight: bold;
+  font-size: 16px;
+  font-family: Arial;
+  cursor: pointer;
+}
+.dhx_custom_button {
+  float: right;
+  height: 21px;
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_cal_light_wide .dhx_custom_button {
+  position: absolute;
+  top: 0;
+  right: 0;
+  margin-top: 2px;
+}
+.dhx_cal_light_wide .dhx_repeat_right {
+  margin-right: 55px;
+}
+.dhx_minical_popup {
+  position: absolute;
+  z-index: 10100;
+  width: 251px;
+  height: 175px;
+}
+.dhx_scale_bar_header {
+  position: absolute;
+  border-bottom: 1px dotted #8894A3;
+  width: 100%;
+}
+.dhx_expand_icon {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  background-image: url(imgs/collapse_expand_icon.gif);
+  width: 18px;
+  height: 18px;
+  cursor: pointer;
+  background-position: 0px 18px;
+  z-index: 16;
+}
+.dhx_scheduler_agenda .dhx_cal_data {
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_area {
+  width: 100%;
+  overflow-y: auto;
+  background-image: url(imgs/databg.png);
+}
+.dhx_agenda_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_agenda_line div {
+  float: left;
+  width: 188px;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_agenda_area .dhx_agenda_line div {
+  border-right: 0px dotted #8894A3;
+}
+.dhx_v_border {
+  position: absolute;
+  left: 187px;
+  top: 0;
+  border-right: 1px dotted #8894A3;
+  width: 1px;
+  height: 100%;
+}
+.dhx_agenda_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_agenda_line span {
+  padding-left: 5px;
+  line-height: 21px;
+}
+.dhx_year_body {
+  border-left: 1px dotted #586A7E;
+}
+.dhx_year_week {
+  position: relative;
+}
+.dhx_scale_bar_last {
+  border-right: 1px dotted #586A7E;
+}
+.dhx_year_month {
+  height: 18px;
+  padding-top: 3px;
+  border: 1px dotted #586A7E;
+  text-align: center;
+  vertical-align: middle;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head,
+.dhx_year_body .dhx_before .dhx_month_head a,
+.dhx_year_body .dhx_after .dhx_month_head a {
+  color: #E2E3E6 !important;
+}
+.dhx_year_body .dhx_month_body {
+  height: 0px;
+  overflow: hidden;
+}
+.dhx_month_head.dhx_year_event {
+  background-color: #FFE763;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head {
+  cursor: default;
+}
+.dhx_year_tooltip {
+  border: 1px solid #BBBBBB;
+  background-image: url(imgs/databg.png);
+  position: absolute;
+  z-index: 9998;
+  width: 300px;
+  height: auto;
+  font-family: Tahoma;
+  font-size: 8pt;
+  overflow: hidden;
+}
+.dhx_tooltip_line {
+  line-height: 20px;
+  height: 20px;
+  overflow: hidden;
+}
+.dhx_tooltip_line .dhx_event_icon {
+  width: 20px;
+  height: 20px;
+  padding-right: 10px;
+  float: left;
+  border-width: 0px;
+  position: relative;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_tooltip_date {
+  float: left;
+  width: auto;
+  padding-left: 5px;
+  text-align: center;
+}
+.dhx_text_disabled {
+  color: #887A2E;
+  font-family: Tahoma;
+  font-size: 8pt;
+}
+.dhx_mini_calendar {
+  -moz-box-shadow: 5px 5px 5px #888;
+  /*Doesn't work in IE*/
+  -khtml-box-shadow: 5px 5px 5px #888;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  -user-select: none;
+}
+.dhx_mini_calendar .dhx_month_head {
+  cursor: pointer;
+}
+.dhx_mini_calendar .dhx_calendar_click {
+  background-color: #C2D5FC;
+}
+.dhx_cal_navline div.dhx_minical_icon {
+  width: 18px;
+  height: 18px;
+  left: 190px;
+  top: 1px;
+  cursor: pointer;
+  background-image: url(imgs/calendar.gif);
+}
+.dhx_matrix_scell {
+  height: 100%;
+}
+.dhx_matrix_cell,
+.dhx_matrix_scell {
+  overflow: hidden;
+  text-align: center;
+  vertical-align: middle;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_matrix_cell {
+  background-color: white;
+}
+.dhx_matrix_line {
+  overflow: hidden;
+}
+.dhx_matrix_cell div,
+.dhx_matrix_scell div {
+  overflow: hidden;
+  text-align: center;
+  height: auto;
+}
+.dhx_cal_lsection .dhx_readonly {
+  font-size: 9pt;
+  font-size: 8pt;
+  padding: 2px;
+  color: #887A2E;
+}
+.dhx_cal_event_line .dhx_event_resize {
+  cursor: w-resize;
+  background: url(imgs/resize_dots.png) repeat-y;
+  position: absolute;
+  top: 0;
+  width: 4px;
+  height: 100%;
+}
+.dhx_event_resize_start {
+  left: 0;
+}
+.dhx_event_resize_end {
+  right: 0;
+}
+/* Tree view */
+.dhx_matrix_scell.folder,
+.dhx_data_table.folder .dhx_matrix_cell {
+  background-color: #969394;
+  cursor: pointer;
+}
+.dhx_matrix_scell .dhx_scell_level0 {
+  padding-left: 5px;
+}
+.dhx_matrix_scell .dhx_scell_level1 {
+  padding-left: 20px;
+}
+.dhx_matrix_scell .dhx_scell_level2 {
+  padding-left: 35px;
+}
+.dhx_matrix_scell .dhx_scell_level3 {
+  padding-left: 50px;
+}
+.dhx_matrix_scell .dhx_scell_level4 {
+  padding-left: 65px;
+}
+.dhx_matrix_scell.folder {
+  font-weight: bold;
+  text-align: left;
+}
+.dhx_matrix_scell.folder .dhx_scell_expand {
+  float: left;
+  width: 10px;
+  padding-right: 3px;
+}
+.dhx_matrix_scell.folder .dhx_scell_name {
+  float: left;
+  width: auto;
+}
+.dhx_matrix_scell.item .dhx_scell_name {
+  padding-left: 15px;
+  text-align: left;
+}
+.dhx_data_table.folder .dhx_matrix_cell {
+  border-right: 0;
+}
+.dhx_section_timeline {
+  overflow: hidden;
+  padding: 4px 0 2px 10px;
+}
+.dhx_section_timeline select {
+  width: 552px;
+}
+/* Tree view end*/
+/* Map view */
+.dhx_map_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+  background-image: url(imgs/databg.png);
+}
+.dhx_map_line .dhx_event_icon {
+  width: 20px;
+  border-width: 0px;
+  background: url(imgs/icon.png) no-repeat;
+  background-position: 5px 4px;
+  cursor: pointer;
+}
+.dhx_map_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_map {
+  position: absolute;
+}
+.dhx_map_line div {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .dhx_map_description {
+  float: left;
+  border-right: 0 dotted #8894A3;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line .headline_date,
+.dhx_map_line .headline_description {
+  border-left: 0;
+}
+.dhx_map_line .line_description {
+  float: left;
+  border-right: 1px dotted #8894A3;
+  text-align: left;
+  padding-left: 5px;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_map_line.highlight {
+  background-color: #C4C5CC;
+}
+.dhx_map_area .dhx_map_line div {
+  border-right: 0px dotted #8894A3;
+}
+/* Map view end */
+/* dhtmlXTooltip start */
+.dhtmlXTooltip.tooltip {
+  -moz-box-shadow: 3px 3px 3px #888888;
+  -webkit-box-shadow: 3px 3px 3px #888888;
+  -o-box-shadow: 3px 3px 3px #888888;
+  box-shadow: 3px 3px 3px #888888;
+  filter: progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5);
+  background-color: white;
+  border-left: 1px dotted #887A2E;
+  border-top: 1px dotted #887A2E;
+  color: #887A2E;
+  cursor: default;
+  padding: 10px;
+  position: absolute;
+  z-index: 500;
+  font-family: Tahoma;
+  font-size: 8pt;
+  opacity: 1;
+}
+/* dhtmlXTooltip end */
+/* Lightbox checkbox section */
+.dhx_cal_checkbox label {
+  padding-left: 5px;
+}
+/* Lightbox checkbox section end */
+/* Lightbox radiobuttons section */
+.dhx_cal_light .radio {
+  padding: 2px 0px 2px 10px;
+}
+.dhx_cal_light .radio input,
+.dhx_cal_light .radio label {
+  line-height: 15px;
+}
+.dhx_cal_light .radio input {
+  vertical-align: middle;
+  margin: 0px;
+  padding: 0px;
+}
+.dhx_cal_light .radio label {
+  vertical-align: middle;
+  padding-right: 10px;
+}
+/* Lightbox radiobuttons section end */
+/* Lightbox dhtmlx combo section */
+.dhx_cal_light .combo {
+  padding: 4px;
+}
+.dhx_cal_light_wide .dhx_combo_box {
+  width: 608px !important;
+  left: 10px;
+}
+/* Lightbox dhtmlx combo section end */
+/* Agenda week start */
+.dhx_wa_column {
+  float: left;
+}
+.dhx_wa_column_last .dhx_wa_day_cont {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_wa_scale_bar {
+  font-family: Tahoma;
+  padding-left: 10px;
+  font-size: 11px;
+  border-top: 1px dotted #8894A3;
+  border-bottom: 1px dotted #8894A3;
+}
+.dhx_wa_day_data {
+  background-color: #FCFEFC;
+  overflow-y: auto;
+}
+.dhx_wa_ev_body {
+  border-bottom: 1px dotted #778899;
+  font-size: 12px;
+  padding: 5px 0 5px 7px;
+}
+.dhx_wa_dnd {
+  font-family: Tahoma;
+  position: absolute;
+  padding-right: 7px;
+  color: #887AE2 !important;
+  background-color: #FFE763 !important;
+  border: 1px solid #B7A543;
+}
+.dhx_cal_event_selected {
+  background-color: #9cc1db;
+  color: white;
+}
+/* Agenda week end */
+/* timeline second scale start */
+.dhx_second_scale_bar {
+  border-bottom: 1px dotted #586A7E;
+  padding-top: 2px;
+}
+/* timeline second scale end */
+/* grid view */
+.dhx_cal_header div div {
+  border-left: 1px dotted #8894A3;
+}
+.dhx_grid_area {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+  background-color: #FCFEFC;
+}
+.dhx_grid_area table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  width: 100%;
+  table-layout: fixed;
+}
+.dhx_grid_area td {
+  table-layout: fixed;
+  text-align: center;
+}
+.dhx_grid_line {
+  height: 21px;
+  clear: both;
+  overflow: hidden;
+}
+.dhx_grid_line div {
+  float: left;
+  cursor: default;
+  padding-top: 0;
+  padding-bottom: 0;
+  text-align: center;
+  line-height: 21px;
+  overflow: hidden;
+}
+.dhx_grid_area td,
+.dhx_grid_line div {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.dhx_grid_area tr.dhx_grid_event {
+  height: 21px;
+  overflow: hidden;
+  margin: 0 0 1px 0;
+}
+.dhx_grid_area tr.dhx_grid_event td {
+  /*borders for old ies*/
+  border-bottom: 1px solid #ECEEF4;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td,
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td {
+  border-bottom-width: 0px;
+  border-bottom-style: none;
+}
+.dhx_grid_area tr.dhx_grid_event:nth-child(2n) {
+  background-color: #ECEEF4;
+}
+.dhx_grid_area .dhx_grid_dummy {
+  table-layout: auto;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+.dhx_grid_v_border {
+  position: absolute;
+  border-right: 1px solid #A4BED4;
+  width: 1px;
+  height: 100%;
+}
+.dhx_grid_event_selected {
+  background-color: #9cc1db !important;
+  color: white !important;
+}
+.dhx_grid_sort_desc .dhx_grid_view_sort {
+  background-position: 0 -55px;
+}
+.dhx_grid_sort_asc .dhx_grid_view_sort {
+  background-position: 0 -66px;
+}
+.dhx_grid_view_sort {
+  width: 10px;
+  height: 10px;
+  position: absolute;
+  border: none !important;
+  top: 5px;
+  background-repeat: no-repeat;
+  background-image: url(imgs/images.png);
+}
+/* end grid */
+/* marked timespans */
+.dhx_marked_timespan {
+  position: absolute;
+  width: 100%;
+  margin-left: 0;
+  /* fix bootstrap conflict [class*="span"] */
+}
+.dhx_time_block {
+  position: absolute;
+  width: 100%;
+  background: silver;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+  z-index: 1;
+}
+.dhx_time_block_reset {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.dhx_scheduler_month .dhx_marked_timespan {
+  display: none;
+}
+.dhx_mini_calendar .dhx_marked_timespan {
+  display: none;
+}
+/* now time */
+.dhx_now_time {
+  width: 100%;
+  border-bottom: 2px solid red;
+  z-index: 1;
+}
+.dhx_scheduler_month .dhx_now_time {
+  border-bottom: 0;
+  border-left: 2px solid red;
+}
+.dhx_matrix_now_time {
+  border-left: 2px solid red;
+  z-index: 1;
+}
+.dhx_now_time,
+.dhx_matrix_now_time {
+  opacity: 0.5;
+}
+/* Quick info */
+.dhx_cal_quick_info {
+  border: 2px solid #888;
+  border-radius: 5px;
+  position: absolute;
+  z-index: 300;
+  background-color: #8e99ae;
+  background-color: rgba(98, 107, 127, 0.5);
+  padding-left: 7px;
+  width: 300px;
+  transition: left 0.5s ease, right 0.5s;
+  -moz-transition: left 0.5s ease, right 0.5s;
+  -webkit-transition: left 0.5s ease, right 0.5s;
+  -o-transition: left 0.5s ease, right 0.5s;
+}
+.dhx_no_animate {
+  transition: none;
+  -moz-transition: none;
+  -webkit-transition: none;
+  -o-transition: none;
+}
+.dhx_cal_quick_info.dhx_qi_left .dhx_qi_big_icon {
+  float: right;
+}
+.dhx_cal_qi_title {
+  padding: 5px 0px 10px 5px;
+  color: #FFF;
+  letter-spacing: 1px;
+}
+.dhx_cal_qi_tdate {
+  font-size: 14px;
+}
+.dhx_cal_qi_tcontent {
+  font-size: 18px;
+  font-weight: bold;
+}
+.dhx_cal_qi_content {
+  border: 1px solid #888;
+  background-color: #fefefe;
+  padding: 16px 8px;
+  font-size: 14px;
+  color: #444;
+  width: 275px;
+  overflow: hidden;
+}
+.dhx_qi_big_icon {
+  border-radius: 3px;
+  color: #444;
+  margin: 5px 9px 5px 0px;
+  min-width: 60px;
+  line-height: 20px;
+  vertical-align: middle;
+  padding: 5px 10px 5px 5px;
+  cursor: pointer;
+  background-color: #fefefe;
+  border-bottom: 1px solid #666;
+  border-right: 1px solid #666;
+  float: left;
+}
+.dhx_cal_qi_controls div {
+  float: left;
+  height: 20px;
+  text-align: center;
+  line-height: 20px;
+}
+.dhx_qi_big_icon .dhx_menu_icon {
+  margin: 0 8px 0 0px;
+}
+.dhx_drag_marker {
+  width: 100%;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
+  opacity: 0.5;
+  background-color: #FFE763;
+  position: absolute;
+  box-sizing: border-box !important;
+  border-top: 1px solid #B6B6B6;
+  border-bottom: 1px solid #b6b6b6;
+}
+/* bootstrap CSS fix start */
+.dhx_cal_navline div,
+.dhx_cal_header,
+.dhx_cal_header div,
+.dhx_cal_data,
+.dhx_cal_data div,
+.dhx_cal_data table *,
+.dhx_multi_day,
+.dhx_multi_day div,
+.dhx_tooltip_line div,
+.dhx_cal_quick_info,
+.dhx_cal_quick_info div {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+.dhx_cal_data table {
+  border-collapse: separate;
+}
+.dhx_cal_light .dhx_cal_radio label {
+  margin-bottom: 0;
+}
+.dhx_cal_event div {
+  line-height: normal;
+}
+/* bootstrap CSS fix end */
+.dhx_cal_container {
+  background-color: #C2D5FC;
+  font-family: Tahoma;
+  font-size: 8pt;
+  position: relative;
+  overflow: hidden;
+}
+.dhx_cal_container div {
+  -moz-user-select: none;
+  -moz-user-select: -moz-none;
+}
+.dhx_cal_navline {
+  height: 20px;
+  position: absolute;
+  z-index: 3;
+  width: 750px;
+  color: #2F3A48;
+}
+.dhx_cal_navline div {
+  position: absolute;
+  top: 2px;
+  white-space: nowrap;
+}
+.dhx_cal_navline .dhx_cal_date {
+  font-weight: 600;
+  left: 210px;
+  padding-top: 1px;
+}
+.dhx_cal_button .dhx_left_bg {
+  width: 1px;
+  overflow: hidden;
+  height: 17px;
+  z-index: 20;
+  top: 0px;
+}
+.dhx_cal_prev_button {
+  background-image: url(imgs/buttons.png);
+  background-position: 0px 0px;
+  width: 29px;
+  height: 17px;
+  left: 50px;
+  cursor: pointer;
+}
+.dhx_cal_next_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -30px 0px;
+  width: 29px;
+  height: 17px;
+  left: 80px;
+  cursor: pointer;
+}
+.dhx_cal_today_button {
+  background-image: url(imgs/buttons.png);
+  background-position: -60px 0px;
+  width: 75px;
+  height: 17px;
+  left: 112px;
+  cursor: pointer;
+  text-align: center;
+  text-decoration: underline;
+}
+.dhx_cal_tab {
+  width: 59px;
+  height: 19px;
+  text-align: center;
+  text-decoration: underline;
+  padding-top: 2px;
+  cursor: pointer;
+  background-color: #D8E1EA;
+  -webkit-border-top-left-radius: 4px;
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.dhx_cal_tab.active {
+  text-decoration: none;
+  cursor: default;
+  font-weight: bold;
+  border: 1px dotted #586A7E;
+  border-bottom: 0;
+  background-color: #C2D5FC;
+}
+.dhx_cal_header {
+  position: absolute;
+  left: 10px;
+  top: 23px;
+  width: 750px;
+  border-top: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+  z-index: 2;
+  overflow: hidden;
+  color: #2F3A48;
+}
+.dhx_cal_data {
+  -webkit-tap-highlight-color: transparent;
+  border-top: 1px dotted #8894A3;
+  position: absolute;
+  top: 44px;
+  width: 600px;
+  overflow-y: auto;
+  overflow-x: hidden;
+  -webkit-overflow-scrolling: touch;
+}
+.dhx_cal_data {
+  -ms-touch-action: pan-y;
+}
+.dhx_cal_event,
+.dhx_cal_event_line,
+.dhx_cal_event_clear {
+  -ms-touch-action: none;
+}
+.dhx_scale_bar {
+  position: absolute;
+  text-align: center;
+  background-color: #C2D5FC;
+  padding-top: 3px;
+  border-left: 1px dotted #586A7E;
+}
+.dhx_scale_holder {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg.png);
+}
+.dhx_scale_holder_now {
+  position: absolute;
+  border-right: 1px dotted #586A7E;
+  background-image: url(imgs/databg_now.png);
+}
+.dhx_scale_hour {
+  height: 41px;
+  width: 50px;
+  border-bottom: 1px dotted #8894A3;
+  background-color: #C2D5FC;
+  text-align: center;
+  line-height: 40px;
+  color: #586A7E;
+  overflow: hidden;
+}
+.dhx_month_head {
+  background-color: #EBEFF4;
+  color: #2F3A48;
+  height: 18px;
+  padding-right: 5px;
+  padding-top: 3px;
+  text-align: right;
+  border-right: 1px dotted #586A7E;
+}
+.dhx_month_body {
+  border-right: 1px dotted #586A7E;
+  border-bottom: 1px dotted #586A7E;
+  background-color: #FFFFFF;
+}
+.dhx_now .dhx_month_body {
+  background-color: #E2EDFF;
+}
+.dhx_after .dhx_month_body,
+.dhx_before .dhx_month_body {
+  background-color: #ECECEC;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head {
+  background-color: #E2E3E6;
+  color: #94A6BB;
+}
+.dhx_now .dhx_month_head {
+  background-color: #D1DEF4;
+  font-weight: bold;
+}
+.dhx_scale_ignore {
+  display: none;
+}
+.dhx_cal_drag {
+  position: absolute;
+  z-index: 9999;
+  background-color: #FFE763;
+  border: 1px solid #B7A543;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.dhx_loading {
+  position: absolute;
+  width: 128px;
+  height: 15px;
+  background-image: url(imgs/loading.gif);
+  z-index: 9999;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day {
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day {
+  position: absolute;
+  border-top: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  background-position: center center;
+  background-color: #E1E6FF;
+  background-repeat: no-repeat;
+  border-bottom: 1px dotted #8894A3;
+  border-right: 1px dotted #8894A3;
+}
+.dhx_multi_day_icon {
+  background-image: url(imgs/clock_big.gif);
+}
+.dhx_multi_day_icon_small {
+  background-image: url(imgs/clock_small.gif);
+}
+.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
+  background-color: #d0e5ff;
+}
+/* left border config option support */
+.dhx_scale_hour_border,
+.dhx_month_body_border,
+.dhx_scale_bar_border,
+.dhx_month_head_border {
+  border-left: 1px dotted #8894A3;
+}
+/* export to PDF and iCal buttons start */
+.dhx_cal_navline .dhx_cal_export {
+  width: 18px;
+  height: 18px;
+  margin: 2px;
+  cursor: pointer;
+  top: 0px;
+}
+.dhx_cal_navline .dhx_cal_export.pdf {
+  left: 2px;
+  background-image: url('imgs/export_pdf.png');
+}
+.dhx_cal_navline .dhx_cal_export.ical {
+  left: 24px;
+  background-image: url('imgs/export_ical.png');
+}
+/* export to PDF and iCal buttons end */
+/*All*/
+.dhx_form_repeat,
+.dhx_form_repeat input {
+  padding: 0;
+  margin: 0;
+  padding-left: 5px;
+  font-family: Tahoma, Verdana;
+  font-size: 11px;
+  line-height: 24px;
+}
+.dhx_form_repeat {
+  overflow: hidden;
+  /*height:115px;*/
+  background-color: #FFF4B5;
+  /*border: 1px solid #DCC43E;*/
+}
+.dhx_cal_light_wide .dhx_form_repeat {
+  background-color: transparent;
+}
+.dhx_repeat_center,
+.dhx_repeat_left,
+.dhx_repeat_divider,
+.dhx_repeat_right {
+  height: 115px;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.dhx_repeat_center,
+.dhx_repeat_left {
+  padding: 10px 0 0px 10px;
+  float: left;
+}
+.dhx_repeat_left {
+  width: 105px;
+}
+.dhx_repeat_center {
+  width: 345px;
+  padding-top: 22px;
+}
+.dhx_repeat_divider {
+  float: left;
+  border-left: 1px dotted #DCC43E;
+  /*background-color: #DCC43E;*/
+  width: 1px;
+}
+.dhx_repeat_right {
+  float: right;
+  width: 173px;
+  padding: 17px 3px 0px 10px;
+}
+input.dhx_repeat_text {
+  height: 16px;
+  width: 27px;
+  margin: 0 4px 0 4px;
+  line-height: 18px;
+  padding: 0 0 0 2px;
+}
+.dhx_form_repeat select {
+  height: 20px;
+  width: 87px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+}
+input.dhx_repeat_date {
+  height: 18px;
+  width: 80px;
+  padding: 0 0 0 2px;
+  margin: 0 4px 0 4px;
+  background-repeat: no-repeat;
+  background-position: 64px 0;
+  border: 1px #7f9db9 solid;
+  line-height: 18px;
+}
+input.dhx_repeat_radio {
+  margin-right: 4px;
+}
+input.dhx_repeat_checkbox {
+  margin: 4px 4px 0 0;
+}
+.dhx_repeat_days td {
+  padding-right: 5px;
+}
+.dhx_repeat_days label {
+  font-size: 10px;
+}
+.dhx_custom_button {
+  width: 90px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+.dhx_custom_button_recurring {
+  background-image: url(imgs/but_repeat.gif);
+  background-position: -5px 20px;
+  width: 20px;
+  margin-right: 10px;
+}
+/* increase width of lightbox */
+.dhx_cal_light_rec {
+  width: 640px;
+}
+.dhx_cal_light_rec .dhx_cal_larea {
+  width: 632px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide {
+  width: 816px;
+}
+.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea {
+  width: 808px;
+}
+.dhx_cal_tab.active {
+  border: none;
+}
+.dhx_multi_day {
+  border: none;
+  border-top: 1px solid #A4BED4;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  border-right: none;
+}
+.dhx_cal_container {
+  background-image: url(imgs_glossy/top-days-bg.png);
+  background-position: 0 24px;
+  background-repeat: repeat-x;
+  background-color: #EBEBEB;
+}
+.dhx_cal_navline {
+  background-color: #EBEBEB;
+  height: 23px !important;
+}
+.dhx_cal_prev_button {
+  background-image: url(imgs_glossy/buttons.gif);
+  width: 30px;
+  height: 20px;
+}
+.dhx_cal_next_button {
+  background-image: url(imgs_glossy/buttons.gif);
+  width: 30px;
+  height: 20px;
+}
+.dhx_cal_today_button {
+  padding-top: 3px;
+  background-image: url(imgs_glossy/buttons.gif);
+  width: 67px;
+  left: 110px;
+  text-decoration: none;
+}
+.dhx_cal_navline .dhx_cal_date {
+  padding-top: 4px;
+  left: 230px;
+}
+.dhx_cal_tab {
+  background-image: url(imgs_glossy/white_tab.png);
+  width: 60px;
+  height: 15px;
+  text-decoration: none;
+  padding-top: 4px;
+  margin-top: 4px;
+}
+.dhx_cal_tab.active {
+  background-image: url(imgs_glossy/blue_tab.png);
+  height: 18px;
+  width: 60px;
+  padding-top: 4px;
+  margin-top: 2px;
+}
+.dhx_cal_data {
+  border-top: 1px solid #A4BED4;
+}
+.dhx_cal_header {
+  background-image: url(imgs_glossy/top-days-bg.png);
+  background-repeat: repeat-x;
+  border-top: 0px;
+  border-right: 0px;
+}
+.dhx_scale_bar {
+  background-image: url(imgs_glossy/top-separator.gif);
+  background-position: 0px 0px;
+  background-repeat: no-repeat;
+  background-color: transparent;
+  padding-top: 3px;
+  border-left: 0px;
+}
+.dhx_scale_holder {
+  border-right: 1px solid #A4BED4;
+}
+.dhx_scale_holder_now {
+  border-right: 1px solid #A4BED4;
+}
+.dhx_scale_hour {
+  background-image: url(imgs_glossy/left-time-bg.png);
+  border-bottom: 1px solid #A4BED4;
+  color: #2F3A48;
+}
+.dhx_multi_day {
+  background-image: url(imgs_glossy/multi-days-bg.png);
+  background-repeat: repeat;
+  border-bottom: 1px solid #A4BED4;
+  border-left: 0px;
+}
+.dhx_multi_day_icon,
+.dhx_multi_day_icon_small {
+  background-image: url(imgs_glossy/clock_big.png);
+  border-bottom: 1px solid #A4BED4;
+  border-left: 1px solid #ffffff;
+  background-color: transparent;
+  background-repeat: no-repeat;
+}
+.dhx_multi_day_icon_small {
+  background-image: url(imgs_glossy/clock_small.png);
+}
+.dhx_month_head {
+  background-color: #FFFFFF;
+}
+.dhx_after .dhx_month_head,
+.dhx_before .dhx_month_head {
+  background-color: #EFEDE2;
+}
+.dhx_now .dhx_month_head {
+  background-color: #E4EFFF;
+}
+.dhx_after .dhx_month_body,
+.dhx_before .dhx_month_body {
+  background-color: #EFEDE2;
+}
+.dhx_cal_event div {
+  border: 1px solid #FFBD51;
+  background-color: #FFE4AB;
+  color: #000000;
+}
+.dhx_cal_event_clear {
+  color: #000000;
+}
+.dhx_cal_event_line {
+  background-image: url(imgs_glossy/event-bg.png);
+  border: 1px solid #FFBD51;
+  color: #000000;
+}
+.dhx_in_move {
+  background-image: url(imgs_glossy/move.png);
+}
+.dhx_cal_event .dhx_body {
+  background-color: #FFE4AB;
+}
+.dhx_cal_event .dhx_title {
+  background-color: #FFE4AB;
+}
+.dhx_cal_light {
+  -moz-box-shadow: 5px 5px 5px #888888;
+  -khtml-box-shadow: 5px 5px 5px #888;
+  background-color: #EBEBEB;
+  border: 2px solid #A4BED4;
+  color: #000000;
+}
+.dhx_cal_larea {
+  border: 1px solid #A4BED4;
+  border-width: 0 1px 1px;
+  background-color: #FFFFFF;
+}
+.dhx_cal_lsection {
+  background-image: url(imgs_glossy/lightbox.png);
+  font-size: 14px;
+  padding: 5px 0 5px 10px;
+  color: #000000;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+  background-image: url(imgs_glossy/multi-days-bg.png);
+}
+.dhx_cal_ltext textarea {
+  background-color: #ffffff;
+  color: #000000;
+}
+.dhx_cal_light select,
+.dhx_cal_light input {
+  color: #000000;
+}
+.dhx_save_btn {
+  background-image: url(imgs_glossy/controlls5.png);
+}
+.dhx_cancel_btn {
+  background-image: url(imgs_glossy/controlls5.png);
+}
+.dhx_delete_btn {
+  background-image: url(imgs_glossy/controlls5.png);
+}
+div.dhx_menu_head {
+  background-image: url(imgs_glossy/controlls5.png);
+  border: 1px solid #FFE4AB;
+}
+div.dhx_menu_icon {
+  background-image: url(imgs_glossy/controlls5.png);
+  border: medium none;
+}
+.dhx_section_time {
+  height: 20px !important;
+  padding: 7px 0 !important;
+  text-align: center;
+  background: white;
+}
+.dhx_year_month {
+  background-image: url(imgs_glossy/top-days-bg.png);
+  border: 0px;
+}
+.dhx_year_week {
+  background-image: url(imgs_glossy/top-days-bg.png);
+}
+.dhx_month_head {
+  border-right: 1px solid #A4BED4;
+}
+.dhx_month_body,
+.dhx_matrix_cell,
+.dhx_matrix_scell {
+  border-right: 1px solid #A4BED4;
+  border-bottom: 1px solid #A4BED4;
+}
+.dhx_year_body {
+  border-left: 1px solid #A4BED4;
+}
+.dhx_scale_bar_last {
+  border-right: none;
+}
+.dhx_month_head.dhx_year_event {
+  background-color: #FFE4AB;
+}
+.dhx_year_body .dhx_before .dhx_month_head,
+.dhx_year_body .dhx_after .dhx_month_head,
+.dhx_year_body .dhx_before .dhx_month_head a,
+.dhx_year_body .dhx_after .dhx_month_head a {
+  color: #EFEDE2 !important;
+}
+.dhx_cal_lsection .dhx_readonly {
+  color: #000000;
+}
+.dhx_year_tooltip {
+  -moz-box-shadow: 2px 2px 2px #888;
+  /*Doesn't work in IE*/
+  -khtml-box-shadow: 2px 2px 2px #888;
+}
+.dhx_custom_button {
+  margin-top: -2px;
+}
+/*2.3*/
+.dhx_cal_lsection .dhx_fullday {
+  color: #000000;
+}
+.dhx_cal_lsection.dhx_cal_checkbox {
+  height: 16px;
+  line-height: 18px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection.dhx_cal_checkbox {
+  height: 20px;
+}
+.dhx_cal_light_wide .dhx_combo_box {
+  width: 602px !important;
+  left: 0px;
+}
+.dhx_cal_checkbox label {
+  vertical-align: top;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+  color: black;
+}
+.dhx_cal_light_wide .dhx_wrap_section {
+  border-top: 1px solid #A4BED4;
+  background-image: url(imgs_glossy/multi-days-bg.png);
+}
+.dhx_cal_light_wide .dhx_cal_ltext {
+  border-left: 1px solid #A4BED4;
+}
+.dhx_cal_light_wide .dhx_cal_ltext {
+  background-color: white;
+}
+.dhx_custom_button {
+  background: white;
+  color: black;
+}
+.dhx_form_repeat {
+  background: white;
+}
+.dhx_repeat_divider {
+  border-left: 1px solid #A4BED4;
+}
+/* timeline second scale start */
+.dhx_cal_header.dhx_second_cal_header {
+  background-image: url("imgs_glossy/second-top-days-bg.png");
+  padding-right: 20px;
+}
+.dhx_cal_header div div {
+  border-left: 0;
+}
+.dhx_scale_bar {
+  padding-top: 4px;
+}
+.dhx_second_scale_bar {
+  border-bottom: 0;
+  padding-top: 4px;
+}
+/* timeline second scale end */
+.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,
+.dhx_cal_lsection .dhx_fullday {
+  color: #000000;
+  font-size: 14px;
+}
+.dhx_cal_light_wide .dhx_cal_lsection {
+  font-size: 14px;
+  padding-right: 10px;
+}
+/* left border config option support */
+.dhx_scale_hour_border,
+.dhx_month_body_border,
+.dhx_scale_bar_border,
+.dhx_month_head_border {
+  border-left: 1px solid #A4BED4;
+}
+/* export to PDF and iCal buttons start */
+.dhx_cal_navline .dhx_cal_export {
+  width: 18px;
+  height: 18px;
+  margin: 2px;
+  cursor: pointer;
+  top: 1px;
+}
+.dhx_cal_navline .dhx_cal_export.pdf {
+  left: 2px;
+  background-image: url('imgs_glossy/export_pdf.png');
+}
+.dhx_cal_navline .dhx_cal_export.ical {
+  left: 24px;
+  background-image: url('imgs_glossy/export_ical.png');
+}
+/* export to PDF and iCal buttons end */
diff --git a/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.xml b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.xml
new file mode 100644
index 0000000000..39bb9b00f0
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/SkinTemplateItem/portal_skins/erp5_dhtmlx_scheduler/dhtmlxscheduler/sources/skins/dhtmlxscheduler_glossy.css.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>dhtmlxscheduler_glossy.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dhtmlx_scheduler/bt/description b/bt5/erp5_dhtmlx_scheduler/bt/description
new file mode 100644
index 0000000000..cc3640fbdf
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/bt/description
@@ -0,0 +1 @@
+http://dhtmlx.com/docs/products/dhtmlxScheduler/ integration for ERP5
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/bt/template_format_version b/bt5/erp5_dhtmlx_scheduler/bt/template_format_version
new file mode 100644
index 0000000000..56a6051ca2
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/bt/template_format_version
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/bt/template_skin_id_list b/bt5/erp5_dhtmlx_scheduler/bt/template_skin_id_list
new file mode 100644
index 0000000000..4ed2710ce1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/bt/template_skin_id_list
@@ -0,0 +1 @@
+erp5_dhtmlx_scheduler
\ No newline at end of file
diff --git a/bt5/erp5_dhtmlx_scheduler/bt/title b/bt5/erp5_dhtmlx_scheduler/bt/title
new file mode 100644
index 0000000000..4ed2710ce1
--- /dev/null
+++ b/bt5/erp5_dhtmlx_scheduler/bt/title
@@ -0,0 +1 @@
+erp5_dhtmlx_scheduler
\ No newline at end of file
-- 
2.30.9