AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 3.138.36.47
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/js/calendar/planner/dist/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/js/calendar/planner/dist/planner.bundle.js.map
{"version":3,"file":"planner.bundle.js","sources":["../src/selector.js","../src/planner.js"],"sourcesContent":["\"use strict\";\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Util} from 'calendar.util';\nimport {Type, Dom, Tag} from 'main.core';\nimport { EventDragAndDrop } from 'calendar.ui.tools.draganddrop';\n\nexport class Selector extends EventEmitter\n{\n\tDOM = {};\n\tselectMode = false;\n\tcurrentDateFrom = new Date();\n\tcurrentDateTo = new Date();\n\tcurrentFullDay = false;\n\tuseAnimation = true;\n\tbeforeBeginChange = false;\n\n\tconstructor(params = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Planner.Selector');\n\n\t\tthis.getPosByDate = params.getPosByDate;\n\t\tthis.getDateByPos = params.getDateByPos;\n\t\tthis.getPosDateMap = params.getPosDateMap;\n\t\tthis.getTimelineWidth = params.getTimelineWidth;\n\t\tthis.getScaleInfo = params.getScaleInfo;\n\t\tthis.solidStatus = params.solidStatus;\n\n\t\tthis.eventDragAndDrop = new EventDragAndDrop(params.getDateByPos, params.getPosByDate, params.getEvents);\n\n\t\tthis.useAnimation = params.useAnimation !== false;\n\n\t\tthis.render();\n\t}\n\n\trender()\n\t{\n\t\tthis.DOM.timeNodes = {};\n\t\tthis.DOM.timeWrap = Tag.render`\n\t\t\t<div></div>\n\t\t`;\n\n\t\tthis.DOM.wrap = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-selector\" data-bx-planner-meta=\"selector\">\n\t\t\t\t<span data-bx-planner-meta=\"selector-resize-left\" class=\"calendar-planner-timeline-drag-left\"></span>\n\t\t\t\t<span class=\"calendar-planner-timeline-selector-grip\"></span>\n\t\t\t\t<span data-bx-planner-meta=\"selector-resize-right\" class=\"calendar-planner-timeline-drag-right\"></span>\n\t\t\t\t${this.DOM.timeWrap}\n\t\t\t\t<div class=\"calendar-planner-timeline-selector-background\"></div>\n\t\t\t\t${this.renderMoreButton()}\n\t\t\t</div>\n\t\t`;\n\n\t\t// prefent draging selector and activating uploader controll in livefeed\n\t\tthis.DOM.wrap.ondrag = BX.False;\n\t\tthis.DOM.wrap.ondragstart = BX.False;\n\n\t\tthis.DOM.titleNode = Tag.render`<div class=\"calendar-planner-selector-notice\" style=\"display: none\"></div>`;\n\t}\n\n\trenderMoreButton()\n\t{\n\t\tthis.DOM.moreButton = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-selector-more-button\" style=\"display: none;\"></div>\n\t\t`;\n\n\t\treturn this.DOM.moreButton;\n\t}\n\n\tshake()\n\t{\n\t\tconst shakeClass = 'calendar-planner-selector-shake';\n\t\tDom.addClass(this.DOM.wrap, shakeClass);\n\t\tclearTimeout(this.shakeTimeout);\n\t\tthis.shakeTimeout = setTimeout(() => Dom.removeClass(this.DOM.wrap, shakeClass), 400);\n\t}\n\n\tclearTimeNodes()\n\t{\n\t\tfor (const offset in this.DOM.timeNodes)\n\t\t{\n\t\t\tthis.destroyTimeNode(offset);\n\t\t}\n\t}\n\n\tshowTimeNode(offsetTop, time, timezone, isWarning = false)\n\t{\n\t\tthis.destroyTimeNode(offsetTop);\n\n\t\tconst warningClass = isWarning ? '--warning' : '';\n\n\t\tthis.DOM.timeNodes[offsetTop] = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-side-notice --left ${warningClass}\" style=\"top: ${offsetTop}px\" title=\"${timezone}\">${time}</div>\n\t\t`;\n\t\tthis.DOM.timeWrap.append(this.DOM.timeNodes[offsetTop]);\n\t}\n\n\tdestroyTimeNode(offset)\n\t{\n\t\tif (Type.isElementNode(this.DOM.timeNodes[offset]))\n\t\t{\n\t\t\tthis.DOM.timeNodes[offset].remove();\n\t\t\tthis.DOM.timeNodes[offset] = null;\n\t\t}\n\t}\n\n\tgetWrap()\n\t{\n\t\treturn this.DOM.wrap;\n\t}\n\n\tgetTitleNode()\n\t{\n\t\treturn this.DOM.titleNode;\n\t}\n\n\t/**\n\t *\n\t *\n\t * @params array array of parameters\n\t * @params[from]\n\t * @params[to]\n\t * @params[updateScaleType] bool\n\t * @params[updateScaleLimits] bool\n\t *\n\t * @return null\n\t */\n\tupdate(params = {})\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\tparams = {};\n\t\t}\n\n\t\tparams.updateScaleType = !!params.updateScaleType;\n\t\tparams.updateScaleLimits = !!params.updateScaleLimits;\n\t\tparams.animation = !!params.animation;\n\n\t\tlet from = Type.isDate(params.from) ? params.from : BX.parseDate(params.from) || this.currentDateFrom;\n\t\tlet to = Type.isDate(params.to) ? params.to : BX.parseDate(params.to) || this.currentDateTo;\n\t\tthis.fullDayMode = params.fullDay !== undefined ? params.fullDay : this.currentFullDay;\n\n\t\tif (Type.isDate(from) && Type.isDate(to))\n\t\t{\n\t\t\tthis.currentFullDay = this.fullDayMode;\n\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tfrom.setHours(0, 0, 0, 0);\n\t\t\t\tconst dayCount = Math.ceil((to.getTime() - from.getTime() + 1) / (1000 * 3600 * 24));\n\t\t\t\tto = new Date(from.getTime() + (dayCount - 1) * 24 * 3600 * 1000);\n\t\t\t\tto.setHours(23, 55, 0, 0);\n\t\t\t}\n\n\t\t\tthis.boundaryFrom = from;\n\t\t\tthis.currentDateFrom = from;\n\t\t\tthis.currentDateTo = to;\n\n\t\t\t// Update selector\n\t\t\tthis.show(\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t\t{\n\t\t\t\t\tanimation: params.animation,\n\t\t\t\t\tfocus: params.focus\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tconst isSelectorInThePast = this.currentDateTo.getTime() < this.getScaleInfo().scaleDateFrom.getTime();\n\t\tconst isSelectorInTheFuture = this.currentDateFrom.getTime() > this.getScaleInfo().scaleDateTo.getTime();\n\t\tif (isSelectorInThePast || isSelectorInTheFuture)\n\t\t{\n\t\t\tthis.DOM.wrap.style.display = 'none';\n\t\t}\n\t}\n\n\tshow(from, to, params)\n\t{\n\t\tconst animation = params.animation && this.useAnimation !== false;\n\t\tconst focus = params.focus === true;\n\t\tconst alignCenter = params.alignCenter !== false;\n\n\t\tthis.DOM.wrap.style.display = 'block';\n\n\t\tif (Type.isDate(from) && Type.isDate(to))\n\t\t{\n\t\t\tlet\n\t\t\t\tfromPos = this.getPosByDate(from),\n\t\t\t\ttoPos = this.getPosByDate(to);\n\n\t\t\tthis.DOM.wrap.style.width = (toPos - fromPos) + 'px';\n\n\t\t\tif (animation && this.DOM.wrap.style.left && !this.currentFullDay)\n\t\t\t{\n\t\t\t\tthis.transit({\n\t\t\t\t\ttoX: fromPos,\n\t\t\t\t\t// triggerChangeEvents: false, //if everything is broken - uncomment\n\t\t\t\t\tfocus: focus\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.wrap.style.left = fromPos + 'px';\n\t\t\t\tthis.DOM.wrap.style.width = (toPos - fromPos) + 'px';\n\t\t\t\tif (focus)\n\t\t\t\t{\n\t\t\t\t\tthis.focus(true, 200, alignCenter);\n\t\t\t\t}\n\t\t\t\tthis.checkStatus(fromPos, true);\n\t\t\t}\n\t\t}\n\t}\n\n\thide()\n\t{\n\t\tthis.DOM.wrap.style.display = 'none';\n\t}\n\n\tstartMove()\n\t{\n\t\tdocument.addEventListener('pointermove', this.preventDefault, { passive:false });\n\t\tthis.selectorIsDraged = true;\n\t\tthis.selectorStartLeft = parseInt(this.DOM.wrap.style.left);\n\t\tthis.selectorStartScrollLeft = this.DOM.timelineWrap.scrollLeft;\n\n\t\tthis.eventDragAndDrop.onDragStart(this.currentDateTo.getTime() - this.currentDateFrom.getTime(), this.selectorStartLeft);\n\n\t\tDom.addClass(document.body, 'calendar-planner-unselectable');\n\n\t\tthis.beforeBeginChange = true;\n\t}\n\n\tmove(x)\n\t{\n\t\tif (this.selectorIsDraged)\n\t\t{\n\t\t\tlet pos = this.selectorStartLeft + x;\n\n\t\t\t// Correct cursor position acording to changes of scrollleft\n\t\t\tpos -= this.selectorStartScrollLeft - this.DOM.timelineWrap.scrollLeft;\n\t\t\tpos = this.checkPosition(pos);\n\n\t\t\tif (!this.getDateByPos(pos) || !this.getDateByPos(pos + parseInt(this.DOM.wrap.style.width)))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet boundary = this.eventDragAndDrop.getDragBoundary(pos);\n\n\t\t\tconst valueChanged = boundary.from.getTime() !== this.boundaryFrom.getTime();\n\t\t\tif (valueChanged && this.beforeBeginChange)\n\t\t\t{\n\t\t\t\tthis.emit('onBeginChange');\n\t\t\t\tthis.beforeBeginChange = false;\n\t\t\t}\n\n\t\t\tboundary = this.getAutoScrollBoundary(boundary, valueChanged);\n\t\t\tboundary = this.getConstrainedBoundary(boundary);\n\n\t\t\tthis.setBoundary(boundary);\n\t\t}\n\t}\n\n\tgetAutoScrollBoundary(boundary, valueChanged)\n\t{\n\t\tconst boundaryLeft = boundary.position - this.DOM.timelineWrap.scrollLeft;\n\t\tconst containerLeft = this.getPosByDate(this.getScaleInfo().scaleDateFrom);\n\t\tconst boundaryRight = boundaryLeft + boundary.size;\n\t\tconst containerRight = this.DOM.timelineFixedWrap.offsetWidth;\n\n\t\tif (boundaryRight > containerRight)\n\t\t{\n\t\t\tthis.scrollSpeed = this.getSpeed(boundaryRight, containerRight);\n\t\t\tboundary.position = containerRight + this.DOM.timelineWrap.scrollLeft - boundary.size;\n\t\t\tthis.setAutoScrollInterval(boundary, 1);\n\t\t}\n\t\telse if (boundaryLeft < containerLeft)\n\t\t{\n\t\t\tthis.scrollSpeed = this.getSpeed(boundaryLeft, containerLeft);\n\t\t\tboundary.position = containerLeft + this.DOM.timelineWrap.scrollLeft;\n\t\t\tthis.setAutoScrollInterval(boundary, -1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.stopAutoScroll(valueChanged);\n\t\t}\n\n\t\treturn boundary;\n\t}\n\n\tgetSpeed(x1, x2)\n\t{\n\t\treturn Math.floor(Math.sqrt(Math.abs(x1 - x2))) + 1;\n\t}\n\n\tsetAutoScrollInterval(boundary, direction)\n\t{\n\t\tif (!this.scrollInterval)\n\t\t{\n\t\t\tthis.scrollInterval = setInterval(() => {\n\t\t\t\tif (!this.getDateByPos(boundary.position + this.scrollSpeed * direction)\n\t\t\t\t\t|| !this.getDateByPos(boundary.position + boundary.size + this.scrollSpeed * direction)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tthis.stopAutoScroll();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.DOM.timelineWrap.scrollLeft += this.scrollSpeed * direction;\n\t\t\t\tboundary.position += this.scrollSpeed * direction;\n\t\t\t\tboundary.from = this.getDateByPos(boundary.position);\n\t\t\t\tboundary.to = this.getDateByPos(boundary.position + boundary.size);\n\t\t\t\tthis.eventDragAndDrop.setFinalTimeInterval(boundary.from, boundary.to);\n\t\t\t\tthis.setBoundary(boundary);\n\t\t\t}, 13);\n\t\t}\n\t}\n\n\tstopAutoScroll(valueChanged = true)\n\t{\n\t\tclearInterval(this.scrollInterval);\n\t\tthis.scrollInterval = false;\n\n\t\tif (valueChanged || !this.beforeBeginChange)\n\t\t{\n\t\t\tthis.emit('onStopAutoScroll');\n\t\t}\n\t}\n\n\tsetBoundary(boundary)\n\t{\n\t\tif (boundary.wasMagnetized)\n\t\t{\n\t\t\tthis.DOM.wrap.style.transition = 'left .05s, width .1s';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.DOM.wrap.style.transition = 'width .1s';\n\t\t}\n\n\t\tthis.DOM.wrap.style.width = boundary.size + 'px';\n\t\tthis.DOM.wrap.style.left = boundary.position + 'px';\n\n\t\tthis.showTitle(boundary.from, boundary.to);\n\n\t\tthis.checkStatus(boundary.position, true);\n\n\t\tthis.boundaryFrom = boundary.from;\n\t}\n\n\tgetConstrainedBoundary(boundary)\n\t{\n\t\tif (boundary.wasMagnetized || this.fullDayMode)\n\t\t{\n\t\t\treturn boundary;\n\t\t}\n\n\t\tlet from = new Date(boundary.from.getTime());\n\t\tlet to = new Date(boundary.to.getTime());\n\t\tconst duration = to.getTime() - from.getTime();\n\t\tlet position = boundary.position;\n\t\tlet size = boundary.size;\n\t\tlet wasMagnetized = false;\n\n\t\tif (from.getHours() < this.getScaleInfo().shownTimeFrom)\n\t\t{\n\t\t\tfrom.setHours(this.getScaleInfo().shownTimeFrom, 0, 0, 0);\n\t\t\tto = new Date(from.getTime() + duration);\n\t\t\twasMagnetized = true;\n\t\t\tposition = this.getPosByDate(from);\n\t\t\tsize = this.getPosByDate(to) - position;\n\t\t}\n\n\t\tif (to.getHours() > this.getScaleInfo().shownTimeTo\n\t\t\t|| (to.getHours() === this.getScaleInfo().shownTimeTo && to.getMinutes() > 0))\n\t\t{\n\t\t\tto.setHours(this.getScaleInfo().shownTimeTo, 0, 0, 0);\n\t\t\tfrom = new Date(to.getTime() - duration);\n\t\t\twasMagnetized = true;\n\t\t\tposition = this.getPosByDate(from);\n\t\t\tsize = this.getPosByDate(to) - position;\n\t\t}\n\n\t\treturn { from, to, position, size, wasMagnetized };\n\t}\n\n\tendMove()\n\t{\n\t\tdocument.removeEventListener('pointermove', this.preventDefault, { passive:false });\n\t\tthis.stopAutoScroll();\n\t\tif (this.selectorIsDraged)\n\t\t{\n\t\t\tthis.selectorIsDraged = false;\n\n\t\t\tconst left = this.getPosByDate(this.eventDragAndDrop.getFinalFrom());\n\t\t\tconst right = this.getPosByDate(this.eventDragAndDrop.getFinalTo());\n\n\t\t\tconst finalBoundary = this.getConstrainedBoundary({\n\t\t\t\tfrom: this.eventDragAndDrop.getFinalFrom(),\n\t\t\t\tto: this.eventDragAndDrop.getFinalTo(),\n\t\t\t\tposition: left,\n\t\t\t\tsize: right - left\n\t\t\t});\n\n\t\t\tthis.DOM.wrap.style.left = finalBoundary.position + 'px';\n\t\t\tthis.DOM.wrap.style.width = finalBoundary.size + 'px';\n\t\t\tthis.DOM.wrap.style.transition = 'none';\n\n\t\t\tthis.checkStatus(left, true);\n\t\t\tthis.hideTitle();\n\t\t\tthis.setValue();\n\t\t}\n\t\tthis.selectorIsDraged = false;\n\t}\n\n\tstartResize()\n\t{\n\t\tdocument.addEventListener('pointermove', this.preventDefault, { passive:false });\n\n\t\tthis.selectorIsResized = true;\n\n\t\tthis.selectorStartLeft = parseInt(this.DOM.wrap.style.left);\n\t\tthis.selectorStartWidth = parseInt(this.DOM.wrap.style.width);\n\t\tthis.selectorStartScrollLeft = this.DOM.timelineWrap.scrollLeft;\n\n\t\tthis.beforeBeginChange = true;\n\t}\n\n\tresize(x)\n\t{\n\t\tif (this.selectorIsResized)\n\t\t{\n\t\t\tlet\n\t\t\t\ttoDate,\n\t\t\t\ttimeTo,\n\t\t\t\twidth = this.selectorStartWidth + x;\n\n\t\t\t// Correct cursor position according to changes of scrollLeft\n\t\t\twidth -= this.selectorStartScrollLeft - this.DOM.timelineWrap.scrollLeft;\n\t\t\tlet rightPos = Math.min(this.selectorStartLeft + width, this.getTimelineWidth());\n\t\t\tif (rightPos < this.selectorStartLeft)\n\t\t\t{\n\t\t\t\trightPos = this.selectorStartLeft;\n\t\t\t}\n\n\t\t\ttoDate = this.getDateByPos(rightPos, true);\n\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tif (toDate.getTime() - this.currentDateFrom.getTime() < Util.getDayLength())\n\t\t\t\t{\n\t\t\t\t\ttoDate = new Date(this.currentDateFrom.getTime() + Util.getDayLength());\n\t\t\t\t}\n\n\t\t\t\ttimeTo = parseInt(toDate.getHours()) + Math.round((toDate.getMinutes() / 60) * 10) / 10;\n\t\t\t\ttoDate.setHours(0, 0, 0, 0);\n\t\t\t\tif (timeTo > 12)\n\t\t\t\t{\n\t\t\t\t\ttoDate = new Date(toDate.getTime() + Util.getDayLength());\n\t\t\t\t\ttoDate.setHours(0, 0, 0, 0);\n\t\t\t\t}\n\t\t\t\trightPos = this.getPosByDate(toDate);\n\t\t\t}\n\t\t\telse if (this.getScaleInfo().shownTimeFrom !== 0 || this.getScaleInfo().shownTimeTo !== 24)\n\t\t\t{\n\t\t\t\tlet fromDate = this.getDateByPos(this.selectorStartLeft);\n\t\t\t\tif (toDate && fromDate && fromDate.getDate() !== toDate.getDate())\n\t\t\t\t{\n\t\t\t\t\ttoDate = new Date(fromDate.getTime());\n\t\t\t\t\ttoDate.setHours(this.getScaleInfo().shownTimeTo, 0, 0, 0);\n\t\t\t\t\trightPos = this.getPosByDate(toDate);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.getPosDateMap()[rightPos])\n\t\t\t{\n\t\t\t\tthis.selectorRoundedRightPos = rightPos;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet roundedPos = Selector.roundPos(rightPos);\n\t\t\t\tif (this.getPosDateMap()[roundedPos])\n\t\t\t\t{\n\t\t\t\t\tthis.selectorRoundedRightPos = roundedPos;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.selectorRoundedRightPos < this.selectorStartLeft)\n\t\t\t{\n\t\t\t\tthis.selectorRoundedRightPos = this.selectorStartLeft;\n\t\t\t}\n\n\t\t\tif (!this.fullDayMode && this.selectorRoundedRightPos - this.DOM.timelineWrap.scrollLeft > this.DOM.timelineFixedWrap.offsetWidth)\n\t\t\t{\n\t\t\t\tthis.selectorRoundedRightPos = this.DOM.timelineWrap.scrollLeft + this.DOM.timelineFixedWrap.offsetWidth;\n\t\t\t}\n\n\t\t\twidth = this.selectorRoundedRightPos - this.selectorStartLeft;\n\n\t\t\tthis.DOM.wrap.style.width = width + 'px';\n\t\t\tthis.showTitle(this.getDateByPos(this.selectorStartLeft), this.getDateByPos(this.selectorRoundedRightPos));\n\t\t\tthis.checkStatus(this.selectorStartLeft, true);\n\n\t\t\tif (this.beforeBeginChange)\n\t\t\t{\n\t\t\t\tthis.emit('onBeginChange');\n\t\t\t\tthis.beforeBeginChange = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tendResize()\n\t{\n\t\tdocument.removeEventListener('pointermove', this.preventDefault, { passive:false });\n\t\tif (this.selectorIsResized)\n\t\t{\n\t\t\tthis.selectorIsResized = false;\n\n\t\t\tlet left = parseInt(this.DOM.wrap.style.left);\n\t\t\tlet right = left + parseInt(this.DOM.wrap.style.width);\n\t\t\tconst from = this.getDateByPos(left);\n\t\t\tconst to = this.getDateByPos(right);\n\t\t\tleft = this.getPosByDate(from);\n\t\t\tright = this.getPosByDate(to);\n\t\t\tthis.DOM.wrap.style.width = (right - left) + 'px';\n\n\t\t\tthis.checkStatus(left, true);\n\t\t\tthis.hideTitle();\n\t\t\tthis.setValue();\n\t\t}\n\t\tthis.selectorIsResized = false;\n\t}\n\n\tpreventDefault(e)\n\t{\n\t\te.preventDefault();\n\t}\n\n\tisDragged()\n\t{\n\t\treturn this.selectorIsResized || this.selectorIsDraged;\n\t}\n\n\tcheckStatus(selectorPos, checkPosition)\n\t{\n\t\tif (this.solidStatus)\n\t\t{\n\t\t\tDom.removeClass(this.DOM.wrap, 'calendar-planner-timeline-selector-warning');\n\t\t\tDom.removeClass(this.mainContWrap, 'calendar-planner-selector-warning');\n\t\t\tDom.addClass(this.DOM.wrap, 'solid');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!selectorPos)\n\t\t\t{\n\t\t\t\tselectorPos = Selector.roundPos(this.DOM.wrap.style.left);\n\t\t\t}\n\n\t\t\tlet fromDate, toDate;\n\t\t\tif (checkPosition === true || !this.currentDateFrom)\n\t\t\t{\n\t\t\t\tlet\n\t\t\t\t\tselectorWidth = parseInt(this.DOM.wrap.style.width),\n\t\t\t\t\tfromPos = selectorPos,\n\t\t\t\t\ttoPos = fromPos + selectorWidth;\n\n\t\t\t\tif (!fromPos && !toPos && !selectorWidth && this.lastFromDate)\n\t\t\t\t{\n\t\t\t\t\tfromDate = this.lastFromDate;\n\t\t\t\t\ttoDate = this.lastToDate;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfromDate = this.getDateByPos(fromPos);\n\t\t\t\t\ttoDate = this.getDateByPos(toPos, true);\n\t\t\t\t\tthis.lastFromDate = fromDate;\n\t\t\t\t\tthis.lastToDate = toDate;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfromDate = this.currentDateFrom;\n\t\t\t\ttoDate = this.currentDateTo;\n\t\t\t}\n\n\t\t\tthis.emit(\n\t\t\t\t'doCheckStatus',\n\t\t\t\tnew BaseEvent(\n\t\t\t\t{\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tdateFrom: fromDate,\n\t\t\t\t\t\t\tdateTo: toDate\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tsetSelectorStatus(status)\n\t{\n\t\tthis.selectorIsFree = status;\n\t\tif (this.selectorIsFree)\n\t\t{\n\t\t\tDom.removeClass(this.DOM.wrap, 'calendar-planner-timeline-selector-warning');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.DOM.wrap, 'calendar-planner-timeline-selector-warning');\n\t\t}\n\t}\n\n\tsetValue(selectorPos = null, duration = null)\n\t{\n\t\tif (!selectorPos)\n\t\t{\n\t\t\tselectorPos = parseInt(this.DOM.wrap.style.left);\n\t\t}\n\t\tselectorPos = Math.max(0, selectorPos);\n\t\tconst selectorWidth = parseInt(this.DOM.wrap.style.width);\n\n\t\tif (selectorPos + selectorWidth > parseInt(this.getTimelineWidth()))\n\t\t{\n\t\t\tselectorPos = parseInt(this.getTimelineWidth()) - selectorWidth;\n\t\t}\n\n\t\tconst dateFrom = this.getDateByPos(selectorPos);\n\t\tlet dateTo;\n\t\tif (duration)\n\t\t{\n\t\t\tdateTo = new Date(dateFrom.getTime() + duration);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdateTo = this.getDateByPos(selectorPos + selectorWidth, true);\n\t\t}\n\n\t\tif (dateFrom && dateTo)\n\t\t{\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tconst dayCount = Math.ceil((dateTo.getTime() - dateFrom.getTime()) / (1000 * 3600 * 24));\n\t\t\t\tdateTo = new Date(dateFrom.getTime() + (dayCount - 1) * 24 * 3600 * 1000);\n\t\t\t\tdateTo.setHours(23, 55, 0, 0);\n\t\t\t}\n\t\t\tif (!this.fullDayMode && dateFrom.getDate() !== dateTo.getDate() && dateTo.getHours() !== 0 && dateTo.getMinutes() !== 0)\n\t\t\t{\n\t\t\t\tconst duration = this.currentDateTo.getTime() - this.currentDateFrom.getTime();\n\t\t\t\tdateTo = new Date(dateFrom.getTime() + duration);\n\t\t\t}\n\n\t\t\tthis.currentDateFrom = dateFrom;\n\t\t\tthis.currentDateTo = dateTo;\n\t\t\tthis.currentFullDay = this.fullDayMode;\n\t\t\tthis.boundaryFrom = this.currentDateFrom;\n\n\t\t\tthis.emit('onChange', new BaseEvent({data: {\n\t\t\t\tdateFrom: dateFrom,\n\t\t\t\tdateTo: dateTo,\n\t\t\t\tfullDay: this.fullDayMode\n\t\t\t}}));\n\t\t}\n\t}\n\n\tcheckPosition(fromPos, selectorWidth, toPos)\n\t{\n\t\tlet scaleInfo = this.getScaleInfo();\n\t\tif (!this.fullDayMode && scaleInfo.shownTimeFrom === 0 && scaleInfo.shownTimeTo === 24)\n\t\t{\n\t\t\treturn fromPos;\n\t\t}\n\n\t\tfromPos = fromPos || parseInt(this.DOM.wrap.style.left);\n\t\tselectorWidth = selectorWidth || parseInt(this.DOM.wrap.style.width);\n\t\ttoPos = toPos || (fromPos + selectorWidth);\n\t\tif (toPos > parseInt(this.getTimelineWidth()))\n\t\t{\n\t\t\tfromPos = parseInt(this.getTimelineWidth()) - selectorWidth;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlet\n\t\t\t\tfromDate = this.getDateByPos(fromPos),\n\t\t\t\ttoDate = this.getDateByPos(toPos, true),\n\t\t\t\ttimeFrom, timeTo,\n\t\t\t\tscaleTimeFrom = parseInt(scaleInfo.shownTimeFrom),\n\t\t\t\tscaleTimeTo = parseInt(scaleInfo.shownTimeTo);\n\n\t\t\tif (fromDate && toDate)\n\t\t\t{\n\t\t\t\tif (this.fullDayMode)\n\t\t\t\t{\n\t\t\t\t\tif (fromDate.getHours() > 12)\n\t\t\t\t\t{\n\t\t\t\t\t\tfromDate = new Date(fromDate.getTime() + Util.getDayLength());\n\t\t\t\t\t}\n\t\t\t\t\tfromDate.setHours(0, 0, 0, 0);\n\n\t\t\t\t\tfromPos = this.getPosByDate(fromDate);\n\t\t\t\t}\n\t\t\t\telse if (fromDate.getDay() !== toDate.getDay())\n\t\t\t\t{\n\t\t\t\t\ttimeFrom = parseInt(fromDate.getHours()) + Math.round((fromDate.getMinutes() / 60) * 10) / 10;\n\t\t\t\t\ttimeTo = parseInt(toDate.getHours()) + Math.round((toDate.getMinutes() / 60) * 10) / 10;\n\n\t\t\t\t\tif (Math.abs(scaleTimeTo - timeFrom) > Math.abs(scaleTimeFrom - timeTo))\n\t\t\t\t\t{\n\t\t\t\t\t\tfromDate.setHours(scaleInfo.shownTimeTo, 0, 0,0);\n\t\t\t\t\t\tfromPos = this.getPosByDate(fromDate) - selectorWidth;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\ttoDate.setHours(scaleInfo.shownTimeFrom, 0, 0,0);\n\t\t\t\t\t\tfromPos = this.getPosByDate(toDate);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Math.max(fromPos, 0);\n\t}\n\n\ttransit(params = {})\n\t{\n\t\tthis.DOM.wrap.style.display = 'block';\n\n\t\tlet duration;\n\t\tif (Type.isDate(params.leftDate) && Type.isDate(params.rightDate))\n\t\t{\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tconst dayCount = Math.ceil((this.currentDateTo.getTime() - this.currentDateFrom.getTime()) / (1000 * 3600 * 24));\n\t\t\t\tparams.leftDate.setHours(0, 0, 0, 0);\n\t\t\t\tparams.rightDate = new Date(params.leftDate.getTime() + (dayCount - 1) * 24 * 3600 * 1000);\n\t\t\t\tparams.rightDate.setHours(23, 55, 0, 0);\n\t\t\t}\n\t\t\tduration = params.rightDate.getTime() - params.leftDate.getTime();\n\t\t\tconst fromPos = this.getPosByDate(params.leftDate);\n\t\t\tconst toPos = this.getPosByDate(params.rightDate);\n\t\t\tparams.toX = fromPos;\n\t\t\tthis.DOM.wrap.style.width = (toPos - fromPos) + 'px';\n\t\t}\n\n\t\tlet\n\t\t\tfromX = params.fromX ?? parseInt(this.DOM.wrap.style.left),\n\t\t\ttoX = Selector.roundPos(params.toX ?? fromX),\n\t\t\ttriggerChangeEvents = params.triggerChangeEvents !== false,\n\t\t\tfocus = !!params.focus;\n\n\t\tif (fromX !== toX)\n\t\t{\n\t\t\tif (this.animation)\n\t\t\t{\n\t\t\t\tthis.animation.stop();\n\t\t\t}\n\n\t\t\tthis.emit('onStartTransit');\n\n\t\t\tthis.animation = new BX.easing({\n\t\t\t\tduration: 300,\n\t\t\t\tstart: {left: fromX},\n\t\t\t\tfinish: {left: toX},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quart),\n\t\t\t\tstep: (state) => {this.DOM.wrap.style.left = state.left + 'px'},\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tthis.animation = null;\n\t\t\t\t\tlet\n\t\t\t\t\t\tfromPos = parseInt(this.DOM.wrap.style.left),\n\t\t\t\t\t\tcheckedPos = this.checkPosition(fromPos);\n\n\t\t\t\t\tif (checkedPos !== fromPos)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.DOM.wrap.style.left = checkedPos + 'px';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (triggerChangeEvents)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setValue(checkedPos, duration);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (focus)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.focus(true, 300);\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.show(\n\t\t\t\t\t\t\tthis.currentDateFrom,\n\t\t\t\t\t\t\tthis.currentDateTo,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tanimation: false,\n\t\t\t\t\t\t\t\tfocus: focus,\n\t\t\t\t\t\t\t\talignCenter: false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}, 200);\n\n\t\t\t\t\tthis.checkStatus(checkedPos);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.animation.animate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (triggerChangeEvents)\n\t\t\t{\n\t\t\t\tthis.setValue(false, duration);\n\t\t\t}\n\n\t\t\tif (focus === true)\n\t\t\t{\n\t\t\t\tthis.focus(true, 300);\n\t\t\t}\n\n\t\t\tthis.checkStatus();\n\t\t}\n\t}\n\n\tshowTitle(from, to)\n\t{\n\t\tlet\n\t\t\tfromDate = new Date(from.getTime()),\n\t\t\ttoDate = new Date(to.getTime()),\n\t\t\tselectorTitle = this.getTitleNode(),\n\t\t\tselector = this.DOM.wrap;\n\n\t\tif (this.fullDayMode)\n\t\t{\n\t\t\ttoDate = new Date(toDate.getTime() - 5 * 60 * 1000);\n\t\t\tif (toDate.getDate() === fromDate.getDate())\n\t\t\t{\n\t\t\t\tselectorTitle.innerHTML = BX.date.format('d F, D', fromDate.getTime() / 1000);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tselectorTitle.innerHTML =\n\t\t\t\t\tBX.date.format('d F', fromDate.getTime() / 1000)\n\t\t\t\t\t+ ' - '\n\t\t\t\t\t+ BX.date.format('d F', toDate.getTime() / 1000);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tselectorTitle.removeAttribute('style');\n\t\t\tselectorTitle.innerHTML = Util.formatTime(fromDate) + ' - ' + Util.formatTime(toDate);\n\t\t}\n\n\t\tselector.appendChild(selectorTitle);\n\n\t\tif (selectorTitle === this.selectorTitle)\n\t\t{\n\t\t\tif (selectorTitle.style.display === 'none' || this.selectorHideTimeout)\n\t\t\t{\n\t\t\t\tthis.selectorHideTimeout = clearTimeout(this.selectorHideTimeout);\n\t\t\t\t// Opacity animation\n\t\t\t\tthis.selectorTitle.style.display = '';\n\t\t\t\tthis.selectorTitle.style.opacity = 0;\n\t\t\t\tnew BX.easing({\n\t\t\t\t\tduration: 400,\n\t\t\t\t\tstart: {opacity: 0},\n\t\t\t\t\tfinish: {opacity: 100},\n\t\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quad),\n\t\t\t\t\tstep: (state)=>{this.selectorTitle.style.opacity = state.opacity / 100;},\n\t\t\t\t\tcomplete: ()=>{this.selectorTitle.removeAttribute('style');}\n\t\t\t\t}).animate();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tselectorTitle.removeAttribute('style');\n\t\t}\n\t}\n\n\thideTitle(params = {})\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t\tparams = {};\n\n\t\tlet\n\t\t\ttimeoutName = params.selectorIndex === undefined ? 'selectorHideTimeout' : 'selectorHideTimeout_' + params.selectorIndex,\n\t\t\tselectorTitle = params.selectorTitle || this.getTitleNode();\n\n\t\tif (this[timeoutName])\n\t\t\tthis[timeoutName] = clearTimeout(this[timeoutName]);\n\n\t\tif (params.timeout !== false)\n\t\t{\n\t\t\tthis[timeoutName] = setTimeout(() => {\n\t\t\t\tparams.timeout = false;\n\t\t\t\tthis.hideTitle(params);\n\t\t\t}, 700);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Opacity animation\n\t\t\tselectorTitle.style.display = '';\n\t\t\tselectorTitle.style.opacity = 1;\n\t\t\tnew BX.easing({\n\t\t\t\tduration: 400,\n\t\t\t\tstart: {opacity: 100},\n\t\t\t\tfinish: {opacity: 0},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quad),\n\t\t\t\tstep: (state) => {selectorTitle.style.opacity = state.opacity / 100;},\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tselectorTitle.removeAttribute('style');\n\t\t\t\t\tselectorTitle.style.display = 'none';\n\t\t\t\t}\n\t\t\t}).animate();\n\t\t}\n\t}\n\n\tstatic roundPos(x)\n\t{\n\t\treturn Math.round(parseFloat(x));\n\t}\n\n\tfocus(animation = true, timeout = 300, alignCenter)\n\t{\n\t\talignCenter = alignCenter === true;\n\n\t\tif (this.focusTimeout)\n\t\t{\n\t\t\tthis.focusTimeout = !!clearTimeout(this.focusTimeout);\n\t\t}\n\n\t\tif (this.useAnimation === false)\n\t\t{\n\t\t\tanimation = false;\n\t\t}\n\n\t\tif (timeout)\n\t\t{\n\t\t\tthis.focusTimeout = setTimeout(() => {this.focus(animation, false, alignCenter);}, timeout);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst\n\t\t\t\tscreenDelta = 10,\n\t\t\t\tselectorLeft = parseInt(this.DOM.wrap.style.left),\n\t\t\t\tselectorWidth = parseInt(this.DOM.wrap.style.width),\n\t\t\t\tviewWidth = parseInt(this.DOM.timelineWrap.offsetWidth),\n\t\t\t\tviewLeft = parseInt(this.DOM.timelineWrap.scrollLeft),\n\t\t\t\tviewRight = viewLeft + viewWidth;\n\n\t\t\tlet newScrollLeft = viewLeft;\n\n\t\t\tif (selectorLeft < viewLeft + screenDelta\n\t\t\t\t|| selectorLeft > viewRight - screenDelta\n\t\t\t\t|| alignCenter\n\t\t\t)\n\t\t\t{\n\t\t\t\t// Selector is smaller than view - we puting it in the middle of the view\n\t\t\t\tif (selectorWidth <= viewWidth)\n\t\t\t\t{\n\t\t\t\t\tnewScrollLeft = Math.max(Math.round(selectorLeft - ((viewWidth - selectorWidth) / 2 )), screenDelta);\n\n\t\t\t\t}\n\t\t\t\telse // Selector is wider, so we adjust by left side\n\t\t\t\t{\n\t\t\t\t\tnewScrollLeft = Math.max(Math.round(selectorLeft - screenDelta), screenDelta);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newScrollLeft !== viewLeft)\n\t\t\t{\n\t\t\t\tif (animation === false)\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.timelineWrap.scrollLeft = newScrollLeft;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnew BX.easing({\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\tstart: {scrollLeft: this.DOM.timelineWrap.scrollLeft},\n\t\t\t\t\t\tfinish: {scrollLeft: newScrollLeft},\n\t\t\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quad),\n\t\t\t\t\t\tstep: (state)=>{this.DOM.timelineWrap.scrollLeft = state.scrollLeft;},\n\t\t\t\t\t\tcomplete: ()=>{}\n\t\t\t\t\t}).animate();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDuration()\n\t{\n\t\tlet duration = Math.round((this.currentDateTo - this.currentDateFrom) / 1000) * 1000;\n\n\t\tif (this.fullDayMode)\n\t\t{\n\t\t\tduration += Util.getDayLength();\n\t\t}\n\n\t\treturn duration;\n\t}\n\n\tgetDateFrom()\n\t{\n\t\treturn this.currentDateFrom;\n\t}\n\n\tgetDateTo()\n\t{\n\t\treturn this.currentDateTo;\n\t}\n}","// @flow\nimport {Runtime, Type, Event, Loc, Dom, Tag, Text, Browser} from 'main.core';\nimport {Util} from 'calendar.util';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Selector} from './selector.js';\nimport {PopupWindowManager} from \"main.popup\";\n\nexport class Planner extends EventEmitter\n{\n\tDOM = {};\n\tconfig = {};\n\tentryStatusMap = {\n\t\th : 'user-status-h',\n\t\ty : 'user-status-y',\n\t\tq : 'user-status-q',\n\t\tn : 'user-status-n',\n\t\ttzAll: 'user-status-different-timezone',\n\t};\n\tscaleTypes = ['15min','30min','1hour', '2hour', '1day'];\n\tsavedScaleType = null;\n\tSCALE_OFFSET_BEFORE = 0;  // in days\n\tSCALE_OFFSET_AFTER = 13;  // in days\n\tEXPAND_OFFSET = 3; // in days\n\tEXPAND_DELAY = 2000; // ms\n\tREBUILD_DELAY = 100;\n\tmaxTimelineSize = 300;\n\tinitialMinEntryRows = 3;\n\tMIN_ENTRY_ROWS = this.initialMinEntryRows;\n\tMAX_ENTRY_ROWS = 300;\n\twidth = 700;\n\theight = 84;\n\tminWidth = 700;\n\tminHeight = 84;\n\tworkTime = [8, 18];\n\twarningHoursFrom = 9;\n\twarningHoursTo = 18;\n\tscrollStep = 10;\n\tshown = false;\n\tbuilt = false;\n\tlocked = false;\n\tshownScaleTimeFrom = 24;\n\tshownScaleTimeTo = 0;\n\ttimelineCellWidthOrig = false;\n\tproposeTimeLimit = 14; // in days\n\texpandTimelineDelay = 600;\n\tlimitScaleSizeMode = false;\n\tuseAnimation = true;\n\tcheckTimeCache = {};\n\tentriesIndex = new Map();\n\tsolidStatus = false;\n\n\tconstructor(params = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Planner');\n\t\tthis.config = params;\n\t\tthis.id = params.id;\n\t\tthis.dayOfWeekMonthFormat = params.dayOfWeekMonthFormat || 'd F, l';\n\t\tthis.userId = parseInt(params.userId || Loc.getMessage('USER_ID'));\n\t\tthis.DOM.wrap = params.wrap;\n\t\tthis.SCALE_TIME_FORMAT = BX.isAmPmMode() ? 'g a' : 'G';\n\t\tthis.userTimezone = Util.getUserSettings().timezoneName;\n\t\tthis.currentTimezone = Type.isStringFilled(params.entryTimezone) ? params.entryTimezone : this.userTimezone;\n\n\t\tthis.expandTimelineDebounce = Runtime.debounce(this.expandTimeline, this.EXPAND_DELAY, this);\n\t\tthis.showMoreUsersBind = this.showMoreUsers.bind(this);\n\t\tthis.hideMoreUsersBind = this.hideMoreUsers.bind(this);\n\t\tthis.setConfig(params);\n\t}\n\n\tshow()\n\t{\n\t\tif (this.currentFromDate && this.currentToDate)\n\t\t{\n\t\t\tconst hourFrom = this.currentFromDate.getHours();\n\t\t\tconst hourTo = this.currentToDate.getHours() + Math.ceil(this.currentToDate.getMinutes() / 60);\n\t\t\tthis.extendScaleTimeLimits(hourFrom, hourTo);\n\t\t}\n\n\t\tif (this.currentFromDate && this.currentToDate)\n\t\t{\n\t\t\tthis.updateScaleLimitsFromEntry(this.currentFromDate, this.currentToDate);\n\t\t}\n\n\t\tlet animation = false;\n\n\t\tif (this.hideAnimation)\n\t\t{\n\t\t\tthis.hideAnimation.stop();\n\t\t\tthis.hideAnimation = null;\n\t\t}\n\n\t\tif (!this.isBuilt())\n\t\t{\n\t\t\tthis.build();\n\t\t\tthis.bindEventHandlers();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.resizePlannerWidth(this.width);\n\t\t}\n\n\t\tthis.buildTimeline();\n\t\tthis.DOM.wrap.style.display = '';\n\n\t\tif (this.adjustWidth)\n\t\t{\n\t\t\tthis.resizePlannerWidth(this.DOM.timelineInnerWrap.offsetWidth);\n\t\t}\n\n\t\tthis.selector.update({\n\t\t\tfrom: this.currentFromDate,\n\t\t\tto: this.currentToDate,\n\t\t\tanimation: false\n\t\t});\n\t\tif (this.currentFromDate && this.currentToDate\n\t\t\t&& this.currentFromDate.getTime() >= this.scaleDateFrom.getTime()\n\t\t\t&& this.currentToDate.getTime() <= this.scaleDateTo.getTime()\n\t\t)\n\t\t{\n\t\t\tthis.selector.focus(false, 0, true);\n\t\t}\n\n\t\tif (this.readonly)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-readonly');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-readonly');\n\t\t}\n\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-compact');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-compact');\n\t\t}\n\n\t\tthis.DOM.entriesOuterWrap.style.display = this.compactMode ? 'none' : '';\n\n\t\tif (animation)\n\t\t{\n\t\t\tif (this.showAnimation)\n\t\t\t{\n\t\t\t\tthis.showAnimation.stop();\n\t\t\t}\n\t\t\tthis.showAnimation = new BX.easing({\n\t\t\t\tduration: 300,\n\t\t\t\tstart: {height: 0},\n\t\t\t\tfinish: {height: this.height},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quart),\n\t\t\t\tstep: (state) => {this.DOM.wrap.style.height = state.height + 'px';},\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tif (parseInt(this.DOM.wrap.style.height) < this.height)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.DOM.wrap.style.height = this.height + 'px';\n\t\t\t\t\t}\n\t\t\t\t\tthis.showAnimation = null;\n\t\t\t\t\tthis.selector.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.showAnimation.animate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (parseInt(this.DOM.wrap.style.height) < this.height)\n\t\t\t{\n\t\t\t\tthis.DOM.wrap.style.height = this.height + 'px';\n\t\t\t}\n\t\t\tthis.adjustHeight();\n\t\t}\n\n\t\tthis.shown = true;\n\t}\n\n\tsetConfig(params)\n\t{\n\t\tthis.todayLocMessage = Loc.getMessage('EC_PLANNER_TODAY');\n\n\t\tthis.setScaleType(params.scaleType);\n\n\t\t// showTimelineDayTitle\n\t\tif (params.showTimelineDayTitle !== undefined)\n\t\t{\n\t\t\tthis.showTimelineDayTitle = !!params.showTimelineDayTitle;\n\t\t}\n\t\telse if(this.showTimelineDayTitle === undefined)\n\t\t{\n\t\t\tthis.showTimelineDayTitle = true;\n\t\t}\n\n\t\t// compactMode\n\t\tif (params.compactMode !== undefined)\n\t\t{\n\t\t\tthis.compactMode = !!params.compactMode;\n\t\t}\n\t\telse if (this.compactMode === undefined)\n\t\t{\n\t\t\tthis.compactMode = false;\n\t\t}\n\n\t\t// readonly\n\t\tif (params.readonly !== undefined)\n\t\t{\n\t\t\tthis.readonly = !!params.readonly;\n\t\t}\n\t\telse if (this.readonly === undefined)\n\t\t{\n\t\t\tthis.readonly = false;\n\t\t}\n\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tlet compactHeight = 50;\n\t\t\tif (this.showTimelineDayTitle && !this.isOneDayScale())\n\t\t\t\tcompactHeight += 20;\n\t\t\tthis.height = this.minHeight = compactHeight;\n\t\t}\n\n\t\tif (Type.isInteger(params.SCALE_OFFSET_BEFORE))\n\t\t{\n\t\t\tthis.SCALE_OFFSET_BEFORE = parseInt(params.SCALE_OFFSET_BEFORE);\n\t\t}\n\t\tif (Type.isInteger(params.SCALE_OFFSET_AFTER))\n\t\t{\n\t\t\tthis.SCALE_OFFSET_AFTER = parseInt(params.SCALE_OFFSET_AFTER);\n\t\t}\n\t\tif (Type.isInteger(params.maxTimelineSize))\n\t\t{\n\t\t\tthis.maxTimelineSize = parseInt(params.maxTimelineSize);\n\t\t}\n\t\tif (Type.isInteger(params.minEntryRows))\n\t\t{\n\t\t\tthis.MIN_ENTRY_ROWS = parseInt(params.minEntryRows);\n\t\t}\n\t\tif (Type.isInteger(params.maxEntryRows))\n\t\t{\n\t\t\tthis.MAX_ENTRY_ROWS = parseInt(params.maxEntryRows);\n\t\t}\n\n\t\tif (Type.isInteger(params.width))\n\t\t{\n\t\t\tthis.width = parseInt(params.width);\n\t\t}\n\t\tif (Type.isInteger(params.height))\n\t\t{\n\t\t\tthis.height = parseInt(params.height);\n\t\t}\n\t\tif (Type.isInteger(params.minWidth))\n\t\t{\n\t\t\tthis.minWidth = parseInt(params.minWidth);\n\t\t}\n\t\tif (Type.isInteger(params.minHeight))\n\t\t{\n\t\t\tthis.minHeight = parseInt(params.minHeight);\n\t\t}\n\t\tthis.width = Math.max(this.minWidth, this.width);\n\t\tthis.height = Math.max(this.minHeight, this.height);\n\n\t\tif (Type.isArray(params.workTime))\n\t\t{\n\t\t\tthis.workTime = params.workTime;\n\t\t}\n\t\tthis.extendScaleTime(this.workTime[0], this.workTime[1]);\n\n\t\tthis.weekHolidays = params.weekHolidays || this.weekHolidays || [];\n\t\tthis.yearHolidays = params.yearHolidays || this.yearHolidays || [];\n\t\tthis.accuracy = params.accuracy || this.accuracy || 300; // 5 min\n\t\tthis.clickSelectorScaleAccuracy = params.clickSelectorScaleAccuracy || this.accuracy; // 5 min\n\t\tthis.selectorAccuracy = parseInt(params.selectorAccuracy) || this.selectorAccuracy || 300; // 5 min\n\t\tthis.entriesListWidth = parseInt(params.entriesListWidth) || this.entriesListWidth || 200;\n\t\tthis.timelineCellWidth = params.timelineCellWidth || this.timelineCellWidth || 40;\n\t\tthis.solidStatus = params.solidStatus === true;\n\n\t\tthis.showEntiesHeader = params.showEntiesHeader === undefined ? true : !!params.showEntiesHeader;\n\t\tthis.showEntryName = params.showEntryName === undefined ? true : !!params.showEntryName;\n\n\t\tif (this.isOneDayScale() && this.timelineCellWidth < 100)\n\t\t{\n\t\t\tthis.timelineCellWidthOrig = this.timelineCellWidth;\n\t\t\tthis.timelineCellWidth = 100;\n\t\t}\n\t\telse if(this.timelineCellWidthOrig && !this.isOneDayScale())\n\t\t{\n\t\t\tthis.timelineCellWidth = this.timelineCellWidthOrig;\n\t\t\tthis.timelineCellWidthOrig = false;\n\t\t}\n\n\t\tif (this.allowAdjustCellWidth === undefined || params.allowAdjustCellWidth !== undefined)\n\t\t{\n\t\t\tthis.allowAdjustCellWidth = this.readonly\n\t\t\t\t&& this.compactMode\n\t\t\t\t&& params.allowAdjustCellWidth !== false;\n\t\t}\n\n\t\tif (params.locked !== undefined)\n\t\t{\n\t\t\tthis.locked = params.locked;\n\t\t}\n\n\t\tthis.adjustCellWidth();\n\n\t\t// Scale params\n\t\tthis.setScaleLimits(params.scaleDateFrom, params.scaleDateTo);\n\n\t\tconst warningTimeFrom = Util.config?.work_time_start ?? 9;\n\t\tconst warningTimeTo = Util.config?.work_time_end ?? 18;\n\n\t\tconst date = new Date().toDateString();\n\t\tconst warningDateFrom = new Date(`${date} ${`${warningTimeFrom}`.replace('.', ':')}:00`);\n\t\tconst warningDateTo = new Date(`${date} ${`${warningTimeTo}`.replace('.', ':')}:00`);\n\n\t\tthis.warningHoursFrom = this.getDateHours(warningDateFrom);\n\t\tthis.warningHoursTo = this.getDateHours(warningDateTo);\n\t}\n\n\tupdateScaleLimitsFromEntry(from, to)\n\t{\n\t\tif (from.getTime() > this.scaleDateTo.getTime() || to.getTime() < this.scaleDateFrom.getTime())\n\t\t{\n\t\t\tthis.setScaleLimits(new Date(from.getTime()), new Date(to.getTime() + Util.getDayLength() * this.SCALE_OFFSET_AFTER));\n\t\t}\n\t}\n\n\tsetScaleLimits(scaleDateFrom, scaleDateTo)\n\t{\n\t\tif (scaleDateFrom !== undefined)\n\t\t{\n\t\t\tthis.scaleDateFrom = Type.isDate(scaleDateFrom) ? scaleDateFrom : Util.parseDate(scaleDateFrom);\n\t\t}\n\n\t\tif (!Type.isDate(this.scaleDateFrom))\n\t\t{\n\t\t\tif (this.compactMode && this.readonly)\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom = new Date();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom = new Date(new Date().getTime() - Util.getDayLength() * this.SCALE_OFFSET_BEFORE);\n\t\t\t}\n\t\t}\n\t\tthis.scaleDateFrom.setHours(this.isOneDayScale() ? 0 : this.shownScaleTimeFrom, 0, 0, 0);\n\n\t\tif (scaleDateTo !== undefined)\n\t\t{\n\t\t\tthis.scaleDateTo = BX.type.isString(scaleDateTo) ? Util.parseDate(scaleDateTo) : scaleDateTo;\n\t\t}\n\n\t\tif (!Type.isDate(this.scaleDateTo))\n\t\t{\n\t\t\tif (this.compactMode && this.readonly)\n\t\t\t{\n\t\t\t\tthis.scaleDateTo = new Date();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.scaleDateTo = new Date(new Date().getTime() + Util.getDayLength() * this.SCALE_OFFSET_AFTER);\n\t\t\t}\n\t\t}\n\t\tthis.scaleDateTo.setHours(this.isOneDayScale() ? 0 : this.shownScaleTimeTo, 0, 0, 0);\n\t}\n\n\textendScaleTimeLimits(fromTime, toTime)\n\t{\n\t\tif (fromTime !== false && !isNaN(parseInt(fromTime)))\n\t\t{\n\t\t\tthis.shownScaleTimeFrom = Math.min(parseInt(fromTime), this.shownScaleTimeFrom, 23);\n\t\t\tthis.shownScaleTimeFrom = Math.max(this.shownScaleTimeFrom, 0);\n\n\t\t\tif (this.scaleDateFrom)\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom.setHours(this.shownScaleTimeFrom, 0, 0 ,0);\n\t\t\t}\n\t\t}\n\n\t\tif (toTime !== false && !isNaN(parseInt(toTime)))\n\t\t{\n\t\t\tthis.shownScaleTimeTo = Math.max(parseInt(toTime), this.shownScaleTimeTo, 1);\n\t\t\tthis.shownScaleTimeTo = Math.min(this.shownScaleTimeTo, 24);\n\n\t\t\tif (this.scaleDateTo)\n\t\t\t{\n\t\t\t\tthis.scaleDateTo.setHours(this.shownScaleTimeTo, 0, 0, 0);\n\t\t\t}\n\t\t}\n\n\t\tif (this.shownScaleTimeFrom % 2 !== 0)\n\t\t{\n\t\t\tthis.shownScaleTimeFrom--;\n\t\t}\n\n\t\tif (this.shownScaleTimeTo % 2 !== 0)\n\t\t{\n\t\t\tthis.shownScaleTimeTo++;\n\t\t}\n\t}\n\n\tSetLoadedDataLimits(from, to)\n\t{\n\t\tif (from)\n\t\t{\n\t\t\tthis.loadedDataFrom = from.getTime ? from : Util.parseDate(from);\n\t\t}\n\t\tif (to)\n\t\t{\n\t\t\tthis.loadedDataTo = to.getTime ? to : Util.parseDate(to);\n\t\t}\n\t}\n\n\textendScaleTime(fromTime, toTime)\n\t{\n\t\tconst savedTimeFrom = this.shownScaleTimeFrom;\n\t\tconst savedTimeTo = this.shownScaleTimeTo;\n\n\t\tthis.extendScaleTimeLimits(fromTime, toTime);\n\n\t\tif (fromTime === false && toTime !== false)\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.extendTimelineToRight(savedTimeTo, this.shownScaleTimeTo);\n\t\t\t}, 200);\n\t\t}\n\t\tif (fromTime !== false && toTime === false)\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.extendTimelineToLeft(this.shownScaleTimeFrom, savedTimeFrom);\n\t\t\t}, 200);\n\t\t}\n\t\tif (fromTime !== false && toTime !== false)\n\t\t{\n\t\t\tthis.rebuildDebounce();\n\t\t}\n\t}\n\n\tadjustCellWidth()\n\t{\n\t\tif (this.allowAdjustCellWidth)\n\t\t{\n\t\t\tthis.timelineCellWidth = Math.round(this.width / ((this.shownScaleTimeTo - this.shownScaleTimeFrom) * 3600 / this.scaleSize));\n\t\t}\n\t}\n\n\tbuild()\n\t{\n\t\tthis.DOM.wrap.style.width = this.width + 'px';\n\t\tthis.DOM.wrap.append(this.render());\n\n\t\tif (this.isLocked())\n\t\t{\n\t\t\tthis.lock();\n\t\t}\n\n\t\tthis.built = true;\n\t\twindow.plannerr = this;\n\t}\n\n\trender()\n\t{\n\t\tthis.selector = this.createSelector();\n\n\t\tthis.DOM.mainWrap = Tag.render`\n\t\t\t<div\n\t\t\t\tclass=\"calendar-planner-main-container calendar-planner-main-container-resource\"\n\t\t\t\tstyle=\"\n\t\t\t\t\tmin-height: ${this.minHeight}px;\n\t\t\t\t\theight: ${this.height}px;\n\t\t\t\t\twidth: ${this.width}px;\n\t\t\t\t\"\n\t\t\t>\n\t\t\t\t${this.renderEntriesOuterWrap()}\n\t\t\t\t${this.renderTimelineFixedWrap()}\n\t\t\t\t${this.renderSelectorPopup()}\n\t\t\t\t${this.renderTimezoneNoticeCount()}\n\t\t\t\t${this.selector.getTitleNode()}\n\t\t\t\t${this.renderSettingsButton()}\n\t\t\t</div>\n\t\t`;\n\n\t\tthis.selector.DOM.timelineFixedWrap = this.DOM.timelineFixedWrap;\n\t\tthis.selector.DOM.timelineWrap = this.DOM.timelineVerticalConstraint;\n\n\t\tif (!this.showEntryName)\n\t\t{\n\t\t\tthis.DOM.entriesOuterWrap.style.width = '55px';\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-entry-icons-only');\n\t\t}\n\n\t\tif (this.readonly)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-readonly');\n\t\t}\n\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-compact');\n\t\t}\n\n\t\treturn this.DOM.mainWrap;\n\t}\n\n\tcreateSelector()\n\t{\n\t\tconst selector = new Selector({\n\t\t\tgetPosByDate: this.getPosByDate.bind(this),\n\t\t\tgetDateByPos: this.getDateByPos.bind(this),\n\t\t\tgetEvents: this.getAllEvents.bind(this),\n\t\t\tgetPosDateMap: () => {\n\t\t\t\treturn this.posDateMap;\n\t\t\t},\n\t\t\tuseAnimation: this.useAnimation,\n\t\t\tsolidStatus: this.solidStatus,\n\t\t\tgetScaleInfo: () => {return {\n\t\t\t\tscale: this.scaleType,\n\t\t\t\tshownTimeFrom: this.shownScaleTimeFrom,\n\t\t\t\tshownTimeTo: this.shownScaleTimeTo,\n\t\t\t\tscaleDateFrom: this.scaleDateFrom,\n\t\t\t\tscaleDateTo: this.scaleDateTo,\n\t\t\t}},\n\t\t\tgetTimelineWidth: () => {\n\t\t\t\treturn parseInt(this.DOM.timelineInnerWrap.style.width)\n\t\t\t},\n\t\t});\n\t\tselector.subscribe('onChange', this.handleSelectorChanges.bind(this));\n\t\tselector.subscribe('doCheckStatus', this.doCheckSelectorStatus.bind(this));\n\t\tselector.subscribe('onBeginChange', this.onBeginChangeHandler.bind(this));\n\t\tselector.subscribe('onStopAutoScroll', this.onStopAutoScrollHandler.bind(this));\n\t\tselector.subscribe('onStartTransit', this.hideTimezoneNotice.bind(this));\n\n\t\treturn selector;\n\t}\n\n\trenderEntriesOuterWrap()\n\t{\n\t\tthis.DOM.entriesOuterWrap = Tag.render`\n\t\t\t<div\n\t\t\t\tclass=\"calendar-planner-user-container\"\n\t\t\t\tstyle=\"\n\t\t\t\t\twidth: ${this.entriesListWidth}px;\n\t\t\t\t\theight: ${this.height}px;\n\t\t\t\t\"\n\t\t\t>\n\t\t\t\t${this.renderEntriesListHeader()}\n\t\t\t\t${this.renderEntriesListWrap()}\n\t\t\t</div>\n\t\t`;\n\n\t\tUtil.preventSelection(this.DOM.entriesOuterWrap);\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tthis.DOM.entriesOuterWrap.style.display = 'none';\n\t\t}\n\n\t\tif (this.isOneDayScale())\n\t\t{\n\t\t\tDom.addClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t}\n\n\t\treturn this.DOM.entriesOuterWrap;\n\t}\n\n\trenderEntriesListHeader()\n\t{\n\t\tif (!this.showEntiesHeader)\n\t\t{\n\t\t\treturn '';\n\t\t}\n\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-planner-header\">\n\t\t\t\t<div class=\"calendar-planner-general-info\">\n\t\t\t\t\t<div class=\"calendar-planner-users-header\">\n\t\t\t\t\t\t<span class=\"calendar-planner-users-item\">\n\t\t\t\t\t\t\t${Loc.getMessage('EC_PL_ATTENDEES_TITLE') + ' '}\n\t\t\t\t\t\t\t${this.renderEntriesListTitleCounter()}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\trenderEntriesListTitleCounter()\n\t{\n\t\tthis.entriesListTitleCounter = Tag.render`\n\t\t\t<span></span>\n\t\t`;\n\n\t\treturn this.entriesListTitleCounter;\n\t}\n\n\trenderEntriesListWrap()\n\t{\n\t\tthis.DOM.entrieListWrap = Tag.render`\n\t\t\t<div\n\t\t\t\tclass=\"calendar-planner-user-container-inner\"\n\t\t\t\tstyle=\"\n\t\t\t\t\twidth: ${this.entriesListWidth - 25}px;\n\t\t\t\t\"\n\t\t\t></div>\n\t\t`;\n\n\t\treturn this.DOM.entrieListWrap;\n\t}\n\n\trenderTimelineFixedWrap()\n\t{\n\t\tthis.DOM.timelineFixedWrap = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-wrapper\" style=\"height: ${this.height}px;\">\n\t\t\t\t${this.renderTimelineVerticalConstraint()}\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.DOM.timelineFixedWrap;\n\t}\n\n\trenderTimelineVerticalConstraint()\n\t{\n\t\tthis.DOM.timelineVerticalConstraint = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-constraint\">\n\t\t\t\t${this.renderTimelineInnerWrap()}\n\t\t\t</div>\n\t\t`;\n\n\t\tif (this.isTodayButtonEnabled())\n\t\t{\n\t\t\tthis.DOM.timelineVerticalConstraint.addEventListener('scroll', this.onScrollHandler.bind(this));\n\t\t}\n\n\t\treturn this.DOM.timelineVerticalConstraint;\n\t}\n\n\trenderTimelineInnerWrap()\n\t{\n\t\tthis.DOM.timelineInnerWrap = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-inner-wrapper\" data-bx-planner-meta=\"timeline\">\n\t\t\t\t${this.renderTimelineScaleWrap()}\n\t\t\t\t${this.renderTimelineDataWrap()}\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.DOM.timelineInnerWrap;\n\t}\n\n\trenderTimelineScaleWrap()\n\t{\n\t\tthis.DOM.timelineScaleWrap = Tag.render`\n\t\t\t<div class=\"calendar-planner-time\"></div>\n\t\t`;\n\t\tUtil.preventSelection(this.DOM.timelineScaleWrap);\n\n\t\treturn this.DOM.timelineScaleWrap;\n\t}\n\n\trenderTimelineDataWrap()\n\t{\n\t\tthis.DOM.timelineDataWrap = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-container\" style=\"height: ${this.height}px\">\n\t\t\t\t${this.renderTimelineAccessibilityWrap()}\n\t\t\t\t${this.selector.getWrap()}\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.DOM.timelineDataWrap;\n\t}\n\n\trenderTimelineAccessibilityWrap()\n\t{\n\t\tthis.DOM.accessibilityWrap = Tag.render`\n\t\t\t<div class=\"calendar-planner-acc-wrap\"></div>\n\t\t`;\n\n\t\treturn this.DOM.accessibilityWrap;\n\t}\n\n\trenderSettingsButton()\n\t{\n\t\tif (this.compactMode)\n\t\t{\n\t\t\treturn ''\n\t\t}\n\n\t\tthis.DOM.settingsButton = Tag.render`\n\t\t\t<div class=\"calendar-planner-settings-icon-container\" title=\"${Loc.getMessage('EC_PL_SETTINGS_SCALE')}\">\n\t\t\t\t<span class=\"calendar-planner-settings-title\">\n\t\t\t\t\t${Loc.getMessage('EC_PL_SETTINGS_SCALE')}\n\t\t\t\t</span>\n\t\t\t\t<span class=\"calendar-planner-settings-icon\"></span>\n\t\t\t</div>\n\t\t`;\n\n\t\tEvent.bind(this.DOM.settingsButton, 'click', () => this.showSettingsPopup());\n\n\t\treturn this.DOM.settingsButton;\n\t}\n\n\trenderSelectorPopup()\n\t{\n\t\tthis.DOM.selectorPopup = Tag.render`\n\t\t\t<div class=\"calendar-planner-selector-notice-popup\" style=\"display: none;\">\n\t\t\t\t${Loc.getMessage('EC_PLANNER_TIMEZONE_NOTICE')}\n\t\t\t</div>\n\t\t`;\n\n\t\tEvent.bind(this.DOM.selectorPopup, 'click', () => this.hideSelectorPopup());\n\n\t\tthis.doShowTimezoneNoticePopup = true;\n\n\t\treturn this.DOM.selectorPopup;\n\t}\n\n\trenderTimezoneNoticeCount()\n\t{\n\t\tthis.DOM.timezoneNoticeCount = Tag.render`\n\t\t\t<div class=\"calendar-planner-timezone-count-notice\" style=\"display: none;\">\n\t\t\t\t${this.renderTimezoneNoticeText(1)}\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.DOM.timezoneNoticeCount;\n\t}\n\n\trenderTimezoneNoticeText(count, isWarning = false)\n\t{\n\t\tconst warningClass = isWarning ? '--warning' : '';\n\t\treturn Loc.getMessage('EC_PLANNER_TIMEZONE_NOTICE_TEXT', {\n\t\t\t'#CLASS#': `calendar-planner-timezone-count-notice-text ${warningClass}`,\n\t\t\t'#COUNT#': count,\n\t\t});\n\t}\n\n\trenderVacationNode()\n\t{\n\t\tconst vacationNode = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-side-notice --vacation\" style=\"display: none;\">\n\t\t\t\t${Loc.getMessage('EC_PLANNER_IN_VACATION')}\n\t\t\t</div>\n\t\t`;\n\n\t\tEvent.bind(vacationNode, 'mouseenter', this.showHintPopup.bind(this, vacationNode));\n\t\tEvent.bind(vacationNode, 'mouseleave', this.hideHintPopup.bind(this, vacationNode));\n\n\t\treturn vacationNode;\n\t}\n\n\tshowHintPopup(node)\n\t{\n\t\tnode.hintPopup = Tag.render`\n\t\t\t<div class=\"calendar-planner-selector-notice-popup --hint\">\n\t\t\t\t${node.dataHint}\n\t\t\t</div>\n\t\t`;\n\n\t\tEvent.bind(this.DOM.selectorPopup, 'click', () => this.hideHintPopup(node));\n\n\t\tthis.DOM.entrieListWrap.style.zIndex = '';\n\t\tthis.DOM.entrieListWrap.style.overflow = '';\n\t\tthis.DOM.entrieListWrap.style.clipPath = '';\n\n\t\tnode.append(node.hintPopup);\n\t}\n\n\thideHintPopup(node)\n\t{\n\t\tnode.hintPopup.remove();\n\t}\n\n\tbuildTimeline(clearCache)\n\t{\n\t\tif (\n\t\t\tthis.isBuilt()\n\t\t\t&& (this.lastTimelineKey !== this.getTimelineShownKey()\n\t\t\t|| clearCache === true)\n\t\t)\n\t\t{\n\t\t\tDom.clean(this.DOM.timelineScaleWrap);\n\n\t\t\tthis.scaleData = this.getScaleData();\n\n\t\t\tlet\n\t\t\t\touterDayCont,\n\t\t\t\tdayTitle,\n\t\t\t\tcont = this.DOM.timelineScaleWrap;\n\n\t\t\tthis.futureDayTitles = [];\n\t\t\tthis.todayButtonPivotDay = undefined;\n\t\t\tfor (let i = 0; i < this.scaleData.length; i++)\n\t\t\t{\n\t\t\t\tif (this.showTimelineDayTitle && !this.isOneDayScale())\n\t\t\t\t{\n\t\t\t\t\tif (this.scaleDayTitles[this.scaleData[i].daystamp])\n\t\t\t\t\t{\n\t\t\t\t\t\tcont = this.scaleDayTitles[this.scaleData[i].daystamp];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tconst date = new Date(this.scaleData[i].timestamp);\n\t\t\t\t\t\tdate.setHours(0, 0, 0, 0);\n\t\t\t\t\t\tconst today = new Date();\n\t\t\t\t\t\ttoday.setHours(0, 0, 0, 0);\n\n\t\t\t\t\t\touterDayCont = this.DOM.timelineScaleWrap.appendChild(Tag.render`\n\t\t\t\t\t\t\t<div class=\"calendar-planner-time-day-outer\"></div>\n\t\t\t\t\t\t`);\n\n\t\t\t\t\t\tlet dayTitleClass = 'calendar-planner-time-day-title';\n\t\t\t\t\t\tif (date.getTime() < today.getTime())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdayTitleClass += ' calendar-planner-time-day-past';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//F d, l\n\t\t\t\t\t\tdayTitle = outerDayCont.appendChild(Tag.render`\n\t\t\t\t\t\t\t<div class=\"${dayTitleClass}\">\n\t\t\t\t\t\t\t\t<span>${BX.date.format(this.dayOfWeekMonthFormat, this.scaleData[i].timestamp / 1000)}</span>\n\t\t\t\t\t\t\t\t<div class=\"calendar-planner-time-day-border\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`);\n\n\t\t\t\t\t\tif (date.getTime() > today.getTime())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.futureDayTitles.push(dayTitle.querySelector('span'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (date.getTime() === today.getTime() && this.isTodayButtonEnabled())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.todayTitleButton = dayTitle.firstElementChild.appendChild(Tag.render`\n\t\t\t\t\t\t\t\t<div class=\"calendar-planner-today-button\"></div>\n\t\t\t\t\t\t\t`);\n\t\t\t\t\t\t\tthis.todayTitleButton.innerHTML = this.todayLocMessage;\n\t\t\t\t\t\t\tthis.todayTitleButton.addEventListener('click', this.todayButtonClickHandler.bind(this));\n\t\t\t\t\t\t\tthis.todayButtonPivotDay = outerDayCont;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcont = outerDayCont.appendChild(Tag.render`\n\t\t\t\t\t\t\t<div class=\"calendar-planner-time-day\"></div>\n\t\t\t\t\t\t`);\n\n\t\t\t\t\t\tthis.scaleDayTitles[this.scaleData[i].daystamp] = cont;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet className = 'calendar-planner-time-hour-item' + (this.scaleData[i].dayStart ? ' calendar-planner-day-start' : '');\n\n\t\t\t\tif (\n\t\t\t\t\t(this.scaleType === '15min' || this.scaleType === '30min')\n\t\t\t\t\t&& this.scaleData[i].title !== ''\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tclassName += ' calendar-planner-time-hour-bold';\n\t\t\t\t}\n\n\t\t\t\tthis.scaleData[i].cell = cont.appendChild(BX.create('DIV', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: className\n\t\t\t\t\t},\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\twidth: this.timelineCellWidth + 'px',\n\t\t\t\t\t\tminWidth: this.timelineCellWidth + 'px'\n\t\t\t\t\t},\n\t\t\t\t\thtml: this.scaleData[i].title ? '<i>' + this.scaleData[i].title + '</i>' : ''\n\t\t\t\t}));\n\n\t\t\t\tif (!this.isOneDayScale() && this.scaleData[i + 1] && this.scaleData[i + 1].dayStart)\n\t\t\t\t{\n\t\t\t\t\tcont.appendChild(Tag.render`\n\t\t\t\t\t\t<div class=\"calendar-planner-timeline-border\"></div>\n\t\t\t\t\t`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet mapDatePosRes = this.mapDatePos();\n\t\t\tthis.posDateMap = mapDatePosRes.posDateMap;\n\n\t\t\tconst timelineOffset = this.DOM.timelineScaleWrap.offsetWidth;\n\t\t\tthis.DOM.timelineInnerWrap.style.width = timelineOffset + 'px';\n\t\t\tthis.DOM.entrieListWrap.style.top = (parseInt(this.DOM.timelineDataWrap.offsetTop) + 10) + 'px';\n\n\t\t\tthis.lastTimelineKey = this.getTimelineShownKey();\n\t\t\tthis.checkRebuildTimeout(timelineOffset);\n\t\t\tthis.buildTodayButtonWrap();\n\n\t\t\tthis.scrollLeft = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\t}\n\t}\n\n\tbuildTodayButtonWrap()\n\t{\n\t\tif (!this.isTodayButtonEnabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.todayButton)\n\t\t{\n\t\t\tthis.todayButton.remove();\n\t\t}\n\t\tif (this.todayRightButton)\n\t\t{\n\t\t\tthis.todayRightButton.remove();\n\t\t}\n\t\tif (this.DOM.todayButtonContainer)\n\t\t{\n\t\t\tthis.DOM.todayButtonContainer.remove();\n\t\t}\n\t\tif (this.isOneDayScale())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst todayButton = this.DOM.entriesOuterWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-today-button\">${this.todayLocMessage}</div>\n\t\t`);\n\t\tthis.todayButtonWidth = todayButton.offsetWidth;\n\t\ttodayButton.innerHTML = this.todayLocMessage + ' &rarr;';\n\t\tthis.todayButtonRightWidth = todayButton.offsetWidth;\n\t\ttodayButton.innerHTML = this.todayLocMessage + ' &larr;';\n\t\tthis.todayButtonLeftWidth = todayButton.offsetWidth;\n\t\tconst top = BX.pos(todayButton).top - BX.pos(this.DOM.timelineScaleWrap).top;\n\t\ttodayButton.remove();\n\n\t\tlet left = 0;\n\t\tif (this.todayButtonPivotDay)\n\t\t{\n\t\t\tleft = this.todayButtonPivotDay.offsetLeft + this.todayButtonPivotDay.offsetWidth - 10 - this.todayButtonWidth + 1;\n\t\t}\n\t\tconst width = this.DOM.timelineScaleWrap.offsetWidth - left;\n\t\tthis.DOM.todayButtonContainer = this.DOM.timelineScaleWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-today-button-container\" style=\"width: ${width}px; left: ${left}px; top: ${top}px;\"></div>\n\t\t`);\n\t\tthis.todayButton = this.DOM.todayButtonContainer.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-today-button\" style=\"width: ${this.todayButtonWidth}px; direction: rtl;\">${this.todayLocMessage}</div>\n\t\t`);\n\t\tthis.todayRightButton = this.DOM.timelineVerticalConstraint.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-today-button\" style=\"right: 0; top: 5px; position: absolute;\">${this.todayLocMessage}</div>\n\t\t`);\n\n\t\tthis.todayButton.addEventListener('click', this.todayButtonClickHandler.bind(this));\n\t\tthis.todayRightButton.addEventListener('click', this.todayButtonClickHandler.bind(this));\n\t\tthis.updateTodayButtonVisibility(false);\n\n\t\tif (this.isLocked() && this.DOM.todayButtonContainer)\n\t\t{\n\t\t\tDom.addClass(this.DOM.todayButtonContainer, '--lock');\n\t\t}\n\t}\n\n\tgetTimelineShownKey()\n\t{\n\t\treturn 'tm_' + this.scaleDateFrom.getTime() + '_' + this.scaleDateTo.getTime();\n\t}\n\n\tcheckRebuildTimeout(timelineOffset, timeout = 300)\n\t{\n\t\tif (!this._checkRebuildTimeoutCount)\n\t\t{\n\t\t\tthis._checkRebuildTimeoutCount = 0;\n\t\t}\n\n\t\tif (this.rebuildTimeout)\n\t\t{\n\t\t\tthis.rebuildTimeout = !!clearTimeout(this.rebuildTimeout);\n\t\t}\n\n\t\tif (\n\t\t\tthis._checkRebuildTimeoutCount <= 10\n\t\t\t&& Type.isElementNode(this.DOM.timelineScaleWrap)\n\t\t\t&& Dom.isShown(this.DOM.timelineScaleWrap)\n\t\t)\n\t\t{\n\t\t\tthis._checkRebuildTimeoutCount++;\n\t\t\tthis.rebuildTimeout = setTimeout(() => {\n\t\t\t\tif (timelineOffset !== this.DOM.timelineScaleWrap.offsetWidth)\n\t\t\t\t{\n\t\t\t\t\tif (this.rebuildTimeout)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.rebuildTimeout = !!clearTimeout(this.rebuildTimeout);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.rebuild();\n\t\t\t\t\tif (this.selector)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.selector.focus(true, 300);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.checkRebuildTimeout(timelineOffset, timeout);\n\t\t\t\t}\n\t\t\t}, timeout);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdelete this._checkRebuildTimeoutCount;\n\t\t}\n\t}\n\n\trebuildDebounce(params)\n\t{\n\t\tRuntime.debounce(this.rebuild, this.REBUILD_DELAY, this)(params);\n\t}\n\n\textendTimelineToLeft(extendedTimeFrom, extendedTimeTo)\n\t{\n\t\tthis.extendTimeline(extendedTimeFrom, extendedTimeTo);\n\t}\n\n\textendTimelineToRight(extendedTimeFrom, extendedTimeTo)\n\t{\n\t\tthis.extendTimeline(extendedTimeFrom, extendedTimeTo, true)\n\t}\n\n\textendTimeline(extendedTimeFrom, extendedTimeTo, isToRight = false)\n\t{\n\t\tif (!this.DOM.timelineScaleWrap)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tconst isToLeft = !isToRight;\n\t\tconst dayNodeList = this.DOM.timelineScaleWrap.querySelectorAll('.calendar-planner-time-day');\n\t\tconst dayCount = dayNodeList.length;\n\t\tconst nodeCountInDay = this.scaleData.length / dayCount;\n\t\tconst extendCount = extendedTimeTo - extendedTimeFrom;\n\n\t\tlet cellsInsertedOnLeftCount = 0;\n\t\tconst insertedNodes = [];\n\t\tlet pivotScaleDatumOfDayIndex = isToRight ? nodeCountInDay - 1 : 0;\n\n\t\tfor (const dayNode of dayNodeList)\n\t\t{\n\t\t\tconst pivotNodeOfDay = isToLeft\n\t\t\t\t? dayNode.children[0]\n\t\t\t\t: dayNode.querySelector('.calendar-planner-timeline-border');\n\t\t\tif (isToLeft)\n\t\t\t{\n\t\t\t\tthis.scaleData[pivotScaleDatumOfDayIndex].dayStart = false;\n\t\t\t}\n\n\t\t\tconst daystamp = this.scaleData[pivotScaleDatumOfDayIndex].daystamp;\n\t\t\tlet toTimestamp, fromTimestamp;\n\t\t\tif (isToLeft)\n\t\t\t{\n\t\t\t\ttoTimestamp = this.scaleData[pivotScaleDatumOfDayIndex].timestamp / 1000;\n\t\t\t\tfromTimestamp = toTimestamp - 3600 * extendCount;\n\t\t\t\tif (new Date(fromTimestamp * 1000).getHours() !== extendedTimeFrom)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfromTimestamp = this.scaleData[pivotScaleDatumOfDayIndex].timestamp / 1000 + this.scaleSize;\n\t\t\t\ttoTimestamp = fromTimestamp + 3600 * extendCount;\n\t\t\t\tif (new Date(fromTimestamp * 1000).getHours() !== extendedTimeFrom)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let insertedTimestamp = fromTimestamp, i = 0; insertedTimestamp < toTimestamp; insertedTimestamp += this.scaleSize, i++)\n\t\t\t{\n\t\t\t\tconst title = BX.date.format('i', insertedTimestamp) === '00'\n\t\t\t\t\t? BX.date.format(this.SCALE_TIME_FORMAT, insertedTimestamp)\n\t\t\t\t\t: '';\n\t\t\t\tif (insertedTimestamp < this.currentFromDate.getTime() / 1000 - (isToLeft ? 3600 * 12 : 0))\n\t\t\t\t{\n\t\t\t\t\tcellsInsertedOnLeftCount++;\n\t\t\t\t}\n\t\t\t\tlet animationClass = 'expand-width-no-animation';\n\t\t\t\tif (\n\t\t\t\t\t(\n\t\t\t\t\t\tisToLeft\n\t\t\t\t\t\t&& insertedTimestamp > this.currentFromDate.getTime() / 1000 - 3600 * 12\n\t\t\t\t\t\t&& insertedTimestamp < this.currentFromDate.getTime() / 1000 + 3600 * 12\n\t\t\t\t\t)\n\t\t\t\t\t||\n\t\t\t\t\t(\n\t\t\t\t\t\tisToRight\n\t\t\t\t\t\t&& insertedTimestamp > this.currentFromDate.getTime() / 1000\n\t\t\t\t\t\t&& insertedTimestamp < this.currentFromDate.getTime() / 1000 + 3600 * 24\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tanimationClass = 'expand-width-0-40';\n\t\t\t\t}\n\n\t\t\t\tconst insertedCell = BX.create('DIV', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'calendar-planner-time-hour-item' + ' ' + animationClass,\n\t\t\t\t\t},\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\twidth: this.timelineCellWidth + 'px',\n\t\t\t\t\t\tminWidth: this.timelineCellWidth + 'px'\n\t\t\t\t\t},\n\t\t\t\t\thtml: '<i>' + title + '</i>'\n\t\t\t\t});\n\t\t\t\tinsertedNodes.push(insertedCell);\n\t\t\t\tdayNode.insertBefore(insertedCell, pivotNodeOfDay);\n\n\t\t\t\tconst insertedScaleDatum = {\n\t\t\t\t\tdaystamp: daystamp,\n\t\t\t\t\ttimestamp: insertedTimestamp * 1000,\n\t\t\t\t\tvalue: insertedTimestamp * 1000,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\tdayStart: isToLeft && i === 0,\n\t\t\t\t\tcell: insertedCell\n\t\t\t\t};\n\t\t\t\tthis.scaleData.splice(i + pivotScaleDatumOfDayIndex + (isToRight ? 1 : 0), 0, insertedScaleDatum);\n\t\t\t}\n\t\t\tif (isToLeft)\n\t\t\t{\n\t\t\t\tpivotNodeOfDay.classList.remove('calendar-planner-day-start');\n\t\t\t\tdayNode.children[0].classList.add('calendar-planner-day-start');\n\t\t\t}\n\t\t\tpivotScaleDatumOfDayIndex += nodeCountInDay + extendCount * 3600 / this.scaleSize;\n\t\t}\n\n\t\t// set scroll for timeline to compensate width of static inserted cells\n\t\tconst scroll = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\tthis.DOM.timelineVerticalConstraint.scrollLeft = scroll + cellsInsertedOnLeftCount * this.timelineCellWidth;\n\n\t\t// get accessibility events for animation\n\t\tconst midnight = new Date(this.currentFromDate.getTime());\n\t\tmidnight.setHours(0,0,0,0);\n\t\tif (isToRight)\n\t\t{\n\t\t\tmidnight.setDate(midnight.getDate() + 1);\n\t\t}\n\t\tconst visibleEvents = this.getVisibleEvents();\n\t\tconst animatedEvents = this.getEventsAfter(visibleEvents, midnight);\n\t\tthis.update(this.entries, this.accessibility);\n\n\t\t// update selector and visible events position during the css animation\n\t\tnew BX.easing({\n\t\t\tduration: 200,\n\t\t\tstart: {},\n\t\t\tfinish: {},\n\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.linear),\n\t\t\tstep: () => {\n\t\t\t\tthis.buildTodayButtonWrap();\n\t\t\t\tthis.selector.update();\n\t\t\t\tfor (const event of animatedEvents)\n\t\t\t\t{\n\t\t\t\t\tevent.node.style.left = this.getPosByDate(new Date(event.fromTimestamp)) + 'px';\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomplete: () => {\n\t\t\t\tfor (const node of insertedNodes)\n\t\t\t\t{\n\t\t\t\t\tnode.classList.remove('expand-width-no-animation');\n\t\t\t\t\tnode.classList.remove('expand-width-0-40');\n\t\t\t\t}\n\t\t\t\tthis.updateTimelineAfterExtend();\n\t\t\t}\n\t\t}).animate();\n\t}\n\n\tupdateTimelineAfterExtend()\n\t{\n\t\tlet mapDatePosRes = this.mapDatePos();\n\t\tthis.posDateMap = mapDatePosRes.posDateMap;\n\t\tconst timelineOffset = this.DOM.timelineScaleWrap.offsetWidth;\n\t\tthis.DOM.timelineInnerWrap.style.width = timelineOffset + 'px';\n\t\tthis.DOM.entrieListWrap.style.top = (parseInt(this.DOM.timelineDataWrap.offsetTop) + 10) + 'px';\n\t\tthis.lastTimelineKey = this.getTimelineShownKey();\n\t\tthis.update(this.entries, this.accessibility);\n\t\tthis.adjustHeight();\n\t\tthis.resizePlannerWidth(this.width);\n\t\tthis.selector.update();\n\t\tthis.clearCacheTime();\n\t\tthis.buildTodayButtonWrap();\n\t}\n\n\trebuild(params = {})\n\t{\n\t\tif (this.isBuilt())\n\t\t{\n\t\t\tthis.buildTimeline(true);\n\t\t\tthis.update(this.entries, this.accessibility);\n\t\t\tthis.resizePlannerWidth(this.width);\n\n\t\t\tif (params.updateSelector !== false)\n\t\t\t{\n\t\t\t\tthis.selector.update(params.selectorParams);\n\t\t\t\tif (params.dontFocus !== true)\n\t\t\t\t{\n\t\t\t\t\tthis.selector.focus(false, 0, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.clearCacheTime();\n\t\t}\n\t}\n\n\tgetScaleData()\n\t{\n\t\tthis.scaleData = [];\n\t\tthis.scaleDayTitles = {};\n\n\t\tlet\n\t\t\tts, scaleFrom, scaleTo,\n\t\t\ttime, dayStamp, title,\n\t\t\tcurDayStamp = false,\n\t\t\ttimeFrom = this.isOneDayScale() ? 0 : this.shownScaleTimeFrom,\n\t\t\ttimeTo = this.isOneDayScale() ? 0 : this.shownScaleTimeTo;\n\n\t\tthis.scaleDateFrom.setHours(timeFrom, 0, 0, 0);\n\t\tthis.scaleDateTo.setHours(timeTo, 0, 0, 0);\n\t\tscaleFrom = this.scaleDateFrom.getTime();\n\t\tscaleTo = this.scaleDateTo.getTime();\n\n\t\tfor (ts = scaleFrom; ts < scaleTo; ts += this.scaleSize * 1000)\n\t\t{\n\t\t\ttime = parseFloat(BX.date.format('H.i', ts / 1000));\n\n\t\t\tif (this.isOneDayScale())\n\t\t\t\ttitle = BX.date.format('d F, D', ts / 1000);\n\t\t\telse\n\t\t\t\ttitle = BX.date.format('i', ts / 1000) === '00'\n\t\t\t\t\t? BX.date.format(this.SCALE_TIME_FORMAT, ts / 1000)\n\t\t\t\t\t: '';\n\n\t\t\tif (this.isOneDayScale() || (time >= timeFrom && time < timeTo))\n\t\t\t{\n\t\t\t\tdayStamp = BX.date.format('d.m.Y', ts / 1000);\n\t\t\t\tthis.scaleData.push({\n\t\t\t\t\tdaystamp: dayStamp,\n\t\t\t\t\ttimestamp: ts,\n\t\t\t\t\tvalue: ts,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\tdayStart: curDayStamp !== dayStamp\n\t\t\t\t});\n\t\t\t\tcurDayStamp = dayStamp;\n\t\t\t}\n\t\t}\n\n\t\treturn this.scaleData;\n\t}\n\n\tisOneDayScale()\n\t{\n\t\treturn this.scaleType === '1day';\n\t}\n\n\tprepareAccessibilityItem(entry)\n\t{\n\t\tconst userOffset = Util.getTimeZoneOffset(this.userTimezone);\n\t\tconst timezoneOffset = Util.getTimeZoneOffset(this.currentTimezone);\n\t\tconst timeOffset = (userOffset - timezoneOffset) * 60 * 1000;\n\n\t\treturn Planner.prepareAccessibilityItem(entry, timeOffset);\n\t}\n\n\tstatic prepareAccessibilityItem(entry, timeOffset = 0)\n\t{\n\t\tif (!Type.isDate(entry.from))\n\t\t{\n\t\t\tentry.from = Util.parseDate(entry.dateFrom);\n\t\t}\n\n\t\tif (!Type.isDate(entry.to))\n\t\t{\n\t\t\tentry.to = Util.parseDate(entry.dateTo);\n\t\t}\n\n\t\tif (!Type.isDate(entry.from) || !Type.isDate(entry.to))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tlet from = new Date(entry.from.getTime());\n\t\tlet to = new Date(entry.to.getTime());\n\t\tfrom.setSeconds(0,0);\n\t\tto.setSeconds(0,0);\n\t\tif (!entry.isFullDay)\n\t\t{\n\t\t\tfrom = new Date(from.getTime() + timeOffset);\n\t\t\tto = new Date(to.getTime() + timeOffset);\n\t\t}\n\n\t\tconst fromTimestamp = from.getTime();\n\t\tconst toTimestamp = to.getTime();\n\t\tconst toReal = new Date(to.getTime());\n\t\tconst toTimestampReal = toTimestamp;\n\t\tconst name = entry.name || entry.title;\n\t\tconst type = entry.isVacation ? 'hr' : 'event';\n\n\t\tentry.fromTimestamp = fromTimestamp;\n\t\tentry.toTimestamp = toTimestamp;\n\t\tentry.toTimestampReal = toTimestamp;\n\n\t\treturn { from, to, fromTimestamp, toTimestamp, toReal, toTimestampReal, name, type };\n\t}\n\n\taddAccessibilityItem(entry, wrap)\n\t{\n\t\tlet\n\t\t\ttimeFrom, timeTo,\n\t\t\thidden = false,\n\t\t\tfromTimestamp = entry.fromTimestamp,\n\t\t\ttoTimestamp = entry.toTimestampReal || entry.toTimestamp,\n\t\t\tshownScaleTimeFrom = this.isOneDayScale() ? 0 : this.shownScaleTimeFrom,\n\t\t\tshownScaleTimeTo = this.isOneDayScale() ? 24 : this.shownScaleTimeTo,\n\t\t\tfrom = new Date(fromTimestamp),\n\t\t\tto = new Date(toTimestamp);\n\n\t\ttimeFrom = parseInt(from.getHours()) + from.getMinutes() / 60;\n\t\ttimeTo = parseInt(to.getHours()) + to.getMinutes() / 60;\n\n\t\tif (timeFrom > shownScaleTimeTo)\n\t\t{\n\t\t\tfrom = new Date(from.getTime() + Util.getDayLength() - 1);\n\t\t\tfrom.setHours(shownScaleTimeFrom, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden && timeFrom < shownScaleTimeFrom)\n\t\t{\n\t\t\tfrom.setHours(shownScaleTimeFrom, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden && timeTo > shownScaleTimeTo)\n\t\t{\n\t\t\tto.setHours(shownScaleTimeTo, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden && timeTo < shownScaleTimeFrom)\n\t\t{\n\t\t\tto = new Date(to.getTime() - Util.getDayLength() + 1);\n\t\t\tto.setHours(shownScaleTimeTo, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden && from.getTime() < this.scaleDateTo)\n\t\t{\n\t\t\tlet\n\t\t\t\tfromPos = this.getPosByDate(from),\n\t\t\t\ttoPos = Math.min(this.getPosByDate(to), this.DOM.timelineScaleWrap.offsetWidth);\n\n\t\t\tentry.node = wrap.appendChild(BX.create('DIV', {\n\t\t\t\tprops: {\n\t\t\t\t\tclassName: 'calendar-planner-acc-entry',\n\t\t\t\t},\n\t\t\t\tstyle: {\n\t\t\t\t\tleft: fromPos + 'px',\n\t\t\t\t\twidth: Math.max((toPos - fromPos), 3) + 'px'\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tif (entry.name)\n\t\t\t{\n\t\t\t\tentry.node.title = entry.name;\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayEntryRow(entry, accessibility = [])\n\t{\n\t\tlet rowWrap;\n\t\tif (entry.type === 'moreLink')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\n\t\t\tthis.DOM.statusNodeAll = this.getStatusNode('tzAll');\n\t\t\tif (!entry.hasDifferentTimezone || this.readonly)\n\t\t\t{\n\t\t\t\tthis.DOM.statusNodeAll.style.display = 'none';\n\t\t\t}\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-all-users\" title=\"${entry.title || ''}\">\n\t\t\t\t\t\t${entry.name}\n\t\t\t\t\t\t${this.DOM.statusNodeAll}\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-users-more\" title=\"${entry.name || ''}\">\n\t\t\t\t\t\t<span class=\"calendar-planner-users-more-btn\">\n\t\t\t\t\t\t\t${this.DOM.statusNodeAll}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t\tEvent.bind(this.DOM.showMoreUsersLink, 'click', this.showMoreUsersBind);\n\t\t\tEvent.bind(this.selector.DOM.moreButton, 'click', this.showMoreUsersBind);\n\t\t\tthis.selector.DOM.moreButton.style.display = '';\n\t\t}\n\t\telse if (entry.type === 'lastUsers')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\t\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-all-users calendar-planner-last-users\" title=\"${entry.title || ''}\">\n\t\t\t\t\t\t${entry.name}\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-users-more\" title=\"${entry.title || entry.name}\">\n\t\t\t\t\t\t<span class=\"calendar-planner-users-last-btn\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\telse if (entry.id && entry.type === 'user')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(BX.create('DIV', {\n\t\t\t\tattrs: {\n\t\t\t\t\t'data-bx-planner-entry' : entry.uid,\n\t\t\t\t\tclassName: 'calendar-planner-user'\n\t\t\t\t\t\t+ (entry.emailUser ? ' calendar-planner-email-user' : '')\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tentry.vacationNode = this.renderVacationNode();\n\n\t\t\tif (entry.timezoneName)\n\t\t\t{\n\t\t\t\tentry.statusNode = this.getStatusNode(entry.status, entry.timezoneName);\n\t\t\t\trowWrap.append(entry.statusNode);\n\t\t\t}\n\n\t\t\tif (!this.showEntryName)\n\t\t\t{\n\t\t\t\trowWrap.append(entry.vacationNode);\n\t\t\t}\n\n\t\t\tif (!this.hasCorrectStatus(entry) && entry.statusNode)\n\t\t\t{\n\t\t\t\tentry.statusNode.style.display = 'none';\n\t\t\t}\n\n\t\t\trowWrap.appendChild(Planner.getEntryAvatarNode(entry));\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\trowWrap.append(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-user-name\">\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"calendar-planner-entry-name\"\n\t\t\t\t\t\t\tbx-tooltip-user-id=\"${entry.id}\"\n\t\t\t\t\t\t\tbx-tooltip-classname=\"calendar-planner-user-tooltip\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${Text.encode(entry.name)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t${entry.vacationNode}\n\t\t\t\t\t</span>\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\telse if (entry.id && entry.type === 'room')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-user-name\"></span>\n\t\t\t\t`)\n\t\t\t\t.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-entry-name\" style=\"width: ${this.entriesListWidth - 20}px;\">\n\t\t\t\t\t\t${Text.encode(entry.name)}\n\t\t\t\t\t</span>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-location-image-icon\" title=\"${Text.encode(entry.name)}\"></div>\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\telse if (entry.type === 'resource')\n\t\t{\n\t\t\tif (!this.entriesResourceListWrap || !BX.isNodeInDom(this.entriesResourceListWrap))\n\t\t\t{\n\t\t\t\tthis.entriesResourceListWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-container-resource\">\n\t\t\t\t\t\t<div class=\"calendar-planner-resource-header\">\n\t\t\t\t\t\t\t<span class=\"calendar-planner-users-item\">${Loc.getMessage('EC_PL_RESOURCE_TITLE')}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\trowWrap = this.entriesResourceListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\" data-bx-planner-entry=\"${entry.uid}\"></div>\n\t\t\t`);\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-user-name\"></span>\n\t\t\t\t`)\n\t\t\t\t.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-entry-name\" style=\"width: ${this.entriesListWidth - 20}px;\">\n\t\t\t\t\t\t${Text.encode(entry.name)}\n\t\t\t\t\t<span>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-location-image-icon\" title=\"${Text.encode(entry.name)}\"></div>\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-all-users\">${Text.encode(entry.name)}</div>\n\t\t\t`);\n\t\t}\n\n\t\tlet top = rowWrap.offsetTop + 13;\n\n\t\tlet dataRowWrap = this.DOM.accessibilityWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-space\" style=\"top:${top}px\" data-bx-planner-entry=\"${entry.uid||0}\"></div>\n\t\t`);\n\n\t\t//this.entriesRowMap.set(entry, rowWrap);\n\t\tthis.entriesDataRowMap.set(entry.uid, dataRowWrap);\n\t\taccessibility.forEach((item) => this.addAccessibilityItem(item, dataRowWrap));\n\t}\n\n\thasCorrectStatus(entry)\n\t{\n\t\treturn entry.status && this.entryStatusMap[entry.status];\n\t}\n\n\tgetStatusNode(status, timezoneName = '')\n\t{\n\t\tconst statusMessage = 'EC_PL_STATUS_' + status.toUpperCase();\n\t\tconst title = Loc.hasMessage(statusMessage) ? Loc.getMessage(statusMessage) : Util.getFormattedTimezone(timezoneName);\n\n\t\treturn Tag.render`\n\t\t\t<span\n\t\t\t\tclass=\"calendar-planner-user-status-icon ${this.entryStatusMap[status]}\"\n\t\t\t\ttitle=\"${title}\"\n\t\t\t></span>\n\t\t`;\n\t}\n\n\tstatic getEntryAvatarNode(entry)\n\t{\n\t\tlet imageNode;\n\t\tconst img = entry.avatar;\n\n\t\tif (!img || img === \"/bitrix/images/1.gif\")\n\t\t{\n\t\t\tlet defaultAvatarClass = 'ui-icon-common-user';\n\t\t\tif (entry.emailUser)\n\t\t\t{\n\t\t\t\tdefaultAvatarClass = 'ui-icon-common-user-mail';\n\t\t\t}\n\t\t\tif (entry.sharingUser)\n\t\t\t{\n\t\t\t\tdefaultAvatarClass += ' ui-icon-common-user-sharing';\n\t\t\t}\n\t\t\timageNode = Tag.render`<div bx-tooltip-user-id=\"${entry.id}\" bx-tooltip-classname=\"calendar-planner-user-tooltip\" title=\"${Text.encode(entry.name)}\" class=\"ui-icon calendar-planner-user-image-icon ${defaultAvatarClass}\"><i></i></div>`;\n\t\t}\n\t\telse\n\t\t{\n\t\t\timageNode = Tag.render`<div bx-tooltip-user-id=\"${entry.id}\" bx-tooltip-classname=\"calendar-planner-user-tooltip\" title=\"${Text.encode(entry.name)}\" class=\"ui-icon calendar-planner-user-image-icon\"><i style=\"background-image: url('${encodeURI(entry.avatar)}')\"></i></div>`;\n\t\t}\n\t\treturn imageNode;\n\t}\n\n\tselectEntryRow(entry)\n\t{\n\t\tif (BX.type.isPlainObject(entry))\n\t\t{\n\t\t\tlet top = parseInt(entry.dataRowWrap.offsetTop);\n\t\t\tif (\n\t\t\t\t!entry.selectWrap\n\t\t\t\t|| !BX.isParentForNode(this.selectedEntriesWrap, entry.selectWrap)\n\t\t\t)\n\t\t\t{\n\t\t\t\tentry.selectWrap = this.selectedEntriesWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-timeline-selected\"></div>\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tentry.selectWrap.style.display = '';\n\t\t\tentry.selectWrap.style.top = (top + 36) + 'px';\n\t\t\tentry.selectWrap.style.width = (parseInt(this.DOM.mainWrap.offsetWidth) + 5) + 'px';\n\n\t\t\tDom.addClass(entry.selectorControlWrap, 'active');\n\t\t\tentry.selected = true;\n\n\t\t\tthis.clearCacheTime();\n\t\t}\n\t}\n\n\tisEntrySelected(entry)\n\t{\n\t\treturn entry && entry.selected;\n\t}\n\n\tdeSelectEntryRow(entry)\n\t{\n\t\tif (BX.type.isPlainObject(entry))\n\t\t{\n\t\t\tif (entry.selectWrap)\n\t\t\t{\n\t\t\t\tentry.selectWrap.style.display = 'none';\n\t\t\t}\n\t\t\tif (entry.selectorControlWrap)\n\t\t\t{\n\t\t\t\tDom.removeClass(entry.selectorControlWrap, 'active');\n\t\t\t}\n\t\t\tentry.selected = false;\n\t\t\tthis.clearCacheTime();\n\t\t}\n\t}\n\n\tstatic getEntryUniqueId(entry)\n\t{\n\t\treturn ['user', 'room'].includes(entry.type) ? entry.id : entry.type + '-' + entry.id;\n\t}\n\n\tgetEntryByUniqueId(entryUniqueId)\n\t{\n\t\tif (BX.type.isArray(this.entries))\n\t\t{\n\t\t\treturn this.entries.find(function(entry){return entry.uid == entryUniqueId;})\n\t\t}\n\t\treturn null;\n\t}\n\n\tbindEventHandlers()\n\t{\n\t\tEvent.bind(this.DOM.wrap, 'click', this.handleClick.bind(this));\n\t\tEvent.bind(this.DOM.wrap, 'contextmenu', this.handleClick.bind(this));\n\t\tEvent.bind(this.DOM.wrap, 'mousedown', this.handleMousedown.bind(this));\n\t\tEvent.bind(document, 'mousemove', this.handleMousemove.bind(this));\n\t\tEvent.bind(document, 'mouseup', this.handleMouseup.bind(this));\n\n\t\tEvent.bind(\n\t\t\tthis.DOM.timelineFixedWrap,\n\t\t\t'onwheel' in document ? 'wheel' : 'mousewheel',\n\t\t\tthis.mouseWheelTimelineHandler.bind(this)\n\t\t);\n\n\t}\n\n\thandleClick(e)\n\t{\n\t\tif (!e)\n\t\t{\n\t\t\te = window.event;\n\t\t}\n\t\te.preventDefault();\n\t\tconst isRightClick = e.which === 3;\n\t\tif (isRightClick || e.target.className === 'calendar-planner-today-button')\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clickMousePos = this.getMousePos(e);\n\t\tlet\n\t\t\tnodeTarget = e.target || e.srcElement,\n\t\t\taccuracyMouse = 5;\n\n\t\tif (!this.readonly)\n\t\t{\n\t\t\tlet\n\t\t\t\ttimeline = this.findTarget(nodeTarget, 'timeline'),\n\t\t\t\tselector = this.findTarget(nodeTarget, 'selector');\n\n\t\t\tif (timeline && !selector && Math.abs(this.clickMousePos.x - this.mouseDownMousePos.x) < accuracyMouse && Math.abs(this.clickMousePos.y - this.mouseDownMousePos.y) < accuracyMouse)\n\t\t\t{\n\t\t\t\tconst left = this.clickMousePos.x - BX.pos(this.DOM.timelineFixedWrap).left + this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\t\t\tconst mapDatePosRes = this.mapDatePos(this.clickSelectorScaleAccuracy);\n\t\t\t\tlet selectedDateFrom = this.getDateByPos(left, false, mapDatePosRes.posDateMap);\n\t\t\t\tif (!selectedDateFrom)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selectorTimeLength = this.currentToDate - this.currentFromDate;\n\t\t\t\tlet selectedDateTo = new Date(selectedDateFrom.getTime() + selectorTimeLength);\n\t\t\t\tthis.currentFromDate = selectedDateFrom;\n\t\t\t\tthis.currentToDate = selectedDateTo;\n\n\t\t\t\tthis.selector.transit({\n\t\t\t\t\ttoX: this.getPosByDate(selectedDateFrom),\n\t\t\t\t\tleftDate: this.currentFromDate,\n\t\t\t\t\trightDate: this.currentToDate\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\thandleMousedown(e)\n\t{\n\t\tif (!e)\n\t\t{\n\t\t\te = window.event;\n\t\t}\n\n\t\tlet nodeTarget = e.target || e.srcElement;\n\n\t\tif (this.selector.DOM.timeWrap.contains(nodeTarget))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.mouseDownMousePos = this.getMousePos(e);\n\t\tthis.mouseDown = true;\n\n\t\tif (!this.readonly)\n\t\t{\n\t\t\tlet selector = this.findTarget(nodeTarget, 'selector');\n\t\t\tthis.startMousePos = this.mouseDownMousePos;\n\n\t\t\tif (selector)\n\t\t\t{\n\t\t\t\tif (this.findTarget(nodeTarget, 'selector-resize-right'))\n\t\t\t\t{\n\t\t\t\t\tthis.selector.startResize();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.selector.startMove();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.findTarget(nodeTarget, 'timeline'))\n\t\t\t{\n\t\t\t\tthis.startScrollTimeline();\n\t\t\t}\n\t\t}\n\n\t\tif (this.shouldShakeSelector(nodeTarget))\n\t\t{\n\t\t\tthis.showSelectorPopup(Loc.getMessage('EC_PLANNER_CANT_DRAG_SHARED_EVENT'));\n\t\t\tthis.selector.shake();\n\t\t}\n\t}\n\n\tshouldShakeSelector(nodeTarget)\n\t{\n\t\tconst isSelector = this.findTarget(nodeTarget, 'selector');\n\t\tconst isNotMoreButton = nodeTarget !== this.selector.DOM.moreButton;\n\n\t\treturn this.readonly && !this.solidStatus && isSelector && isNotMoreButton;\n\t}\n\n\thandleMouseup()\n\t{\n\t\tif (this.selector.isDragged())\n\t\t{\n\t\t\tthis.selector.endMove();\n\t\t\tthis.selector.endResize();\n\t\t}\n\n\t\tif(this.timelineIsDraged)\n\t\t{\n\t\t\tthis.endScrollTimeline();\n\t\t}\n\n\t\tif (this.shown && !this.readonly && this.mouseDown)\n\t\t{\n\t\t\tthis.checkTimelineScroll();\n\t\t}\n\n\t\tthis.mouseDown = false;\n\t\tDom.removeClass(document.body, 'calendar-planner-unselectable');\n\t}\n\n\thandleMousemove(e)\n\t{\n\t\tlet mousePos;\n\n\t\tif (this.selector.isDragged())\n\t\t{\n\t\t\tmousePos = this.getMousePos(e);\n\t\t\tthis.selector.move(mousePos.x - this.startMousePos.x);\n\t\t\tthis.selector.resize(mousePos.x - this.startMousePos.x);\n\t\t}\n\n\t\tif (this.timelineIsDraged)\n\t\t{\n\t\t\tmousePos = this.getMousePos(e);\n\t\t\tthis.scrollTimeline(mousePos.x - this.startMousePos.x);\n\t\t}\n\t}\n\n\tmouseWheelTimelineHandler(e)\n\t{\n\t\te = e || window.event;\n\t\tif (this.shown && !this.readonly)\n\t\t{\n\t\t\tif (Browser.isMac())\n\t\t\t{\n\t\t\t\tthis.checkTimelineScroll();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst delta = e.deltaY || e.detail || e.wheelDelta;\n\t\t\t\tif (Math.abs(delta) > 0)\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.timelineVerticalConstraint.scrollLeft = Math.max(\n\t\t\t\t\t\tthis.DOM.timelineVerticalConstraint.scrollLeft + Math.round(delta / 3),\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\t\t\t\t\tthis.checkTimelineScroll();\n\t\t\t\t\treturn BX.PreventDefault(e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tonScrollHandler()\n\t{\n\t\tthis.scrollLeft = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\tthis.updateTodayButtonVisibility();\n\t\tthis.updateWorkTimeNotice();\n\t}\n\n\tupdateTodayButtonVisibility(animation = true)\n\t{\n\t\tif (!this.isTodayButtonEnabled() || this.isOneDayScale())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.todayButton.style.transition = animation ? '' : 'none';\n\n\t\tconst today = new Date();\n\t\ttoday.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\n\t\tlet parent = this.DOM.entriesOuterWrap;\n\t\tif (this.todayTitleButton)\n\t\t{\n\t\t\tparent = this.todayTitleButton.parentElement;\n\t\t}\n\n\t\tconst doDisplayTodayButton = today.getTime() < this.scaleDateTo.getTime()\n\t\t\t&& BX.pos(parent).left + 30 < BX.pos(this.DOM.entriesOuterWrap).right;\n\t\tif (doDisplayTodayButton && this.todayButton.style.display !== '')\n\t\t{\n\t\t\tthis.todayButton.style.display = '';\n\t\t\tthis.setFutureDayTitlesOffset(false);\n\t\t}\n\t\tif (!doDisplayTodayButton && this.todayButton.style.display !== 'none')\n\t\t{\n\t\t\tthis.todayButton.style.display = 'none';\n\t\t\tthis.setFutureDayTitlesOffset(false);\n\t\t}\n\n\t\tconst doAddLeftArrow = BX.pos(this.todayTitleButton).right + (this.todayButtonLeftWidth - this.todayButtonWidth) < BX.pos(this.DOM.entriesOuterWrap).right;\n\t\tif (doAddLeftArrow && this.todayButton.innerHTML === this.todayLocMessage)\n\t\t{\n\t\t\tthis.todayButton.innerHTML = this.todayLocMessage + ' &larr;';\n\t\t\tthis.todayButton.style.width = this.todayButtonLeftWidth + 'px';\n\t\t\tthis.setFutureDayTitlesOffset(animation);\n\t\t}\n\t\tif (!doAddLeftArrow && this.todayButton.innerHTML !== this.todayLocMessage)\n\t\t{\n\t\t\tthis.todayButton.innerHTML = this.todayLocMessage;\n\t\t\tthis.todayButton.style.width = this.todayButtonWidth + 'px';\n\t\t\tthis.setFutureDayTitlesOffset(animation);\n\t\t}\n\n\t\tconst isTodayInFuture = today.getTime() > this.scaleDateTo.getTime();\n\t\tconst doDisplayTodayRightButton = isTodayInFuture || BX.pos(parent).right > BX.pos(this.DOM.timelineVerticalConstraint).right;\n\t\tif (doDisplayTodayRightButton && this.todayRightButton.style.display !== '')\n\t\t{\n\t\t\tthis.todayRightButton.style.display = '';\n\t\t}\n\t\tif (!doDisplayTodayRightButton && this.todayRightButton.style.display !== 'none')\n\t\t{\n\t\t\tthis.todayRightButton.style.display = 'none';\n\t\t}\n\n\t\tif (this.todayTitleButton)\n\t\t{\n\t\t\tif (BX.pos(this.todayTitleButton).right < BX.pos(this.DOM.timelineVerticalConstraint).right)\n\t\t\t{\n\t\t\t\tthis.todayTitleButton.style.position = 'sticky';\n\t\t\t}\n\t\t\tif (BX.pos(this.todayTitleButton).right > BX.pos(this.DOM.timelineVerticalConstraint).right)\n\t\t\t{\n\t\t\t\tthis.todayTitleButton.style.position = '';\n\t\t\t}\n\t\t}\n\n\t\tconst doAddRightArrow = BX.pos(parent).left > BX.pos(this.DOM.timelineVerticalConstraint).right || isTodayInFuture;\n\t\tif (doAddRightArrow && this.todayRightButton.innerHTML === this.todayLocMessage)\n\t\t{\n\t\t\tthis.todayRightButton.innerHTML = this.todayLocMessage + ' &rarr;';\n\t\t\tthis.todayRightButton.style.width = this.todayButtonRightWidth + 'px';\n\t\t}\n\t\tif (!doAddRightArrow && this.todayRightButton.innerHTML !== this.todayLocMessage)\n\t\t{\n\t\t\tthis.todayRightButton.innerHTML = this.todayLocMessage;\n\t\t\tthis.todayRightButton.style.width = this.todayButtonWidth + 'px';\n\t\t}\n\t}\n\n\tsetFutureDayTitlesOffset(animation = true)\n\t{\n\t\tconst left = this.todayButton.style.display === 'none' ? '' : (parseInt(this.todayButton.style.width) + 4) + 'px';\n\t\tfor (const title of this.futureDayTitles)\n\t\t{\n\t\t\ttitle.style.transition = animation ? '' : 'none';\n\t\t\ttitle.style.left = left;\n\t\t}\n\t}\n\n\ttodayButtonClickHandler()\n\t{\n\t\tif (!this.isTodayButtonEnabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.todayButtonPivotDay)\n\t\t{\n\t\t\tconst today = new Date();\n\t\t\ttoday.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\t\t\tnew BX.easing({\n\t\t\t\tduration: 300,\n\t\t\t\tstart: {scrollLeft: this.DOM.timelineVerticalConstraint.scrollLeft},\n\t\t\t\tfinish: {scrollLeft: this.getPosByDate(today)},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quad),\n\t\t\t\tstep: (state)=>{this.DOM.timelineVerticalConstraint.scrollLeft = state.scrollLeft;},\n\t\t\t\tcomplete: ()=>{}\n\t\t\t}).animate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.scaleDateFrom = new Date();\n\t\t\tthis.scaleDateFrom.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\n\t\t\tthis.scaleDateTo = new Date(new Date().getTime() + Util.getDayLength() * this.SCALE_OFFSET_AFTER);\n\t\t\tthis.scaleDateTo.setHours(this.shownScaleTimeTo, 0, 0, 0);\n\n\t\t\tthis.rebuild();\n\t\t\tthis.DOM.timelineVerticalConstraint.scrollLeft = 0;\n\n\t\t\tthis.emit('onExpandTimeline', new BaseEvent({\n\t\t\t\tdata: {\n\t\t\t\t\treload: true,\n\t\t\t\t\tdateFrom: this.scaleDateFrom,\n\t\t\t\t\tdateTo: this.scaleDateTo\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t}\n\n\tisTodayButtonEnabled()\n\t{\n\t\treturn !this.readonly && !this.compactMode;\n\t}\n\n\tcheckTimelineScroll()\n\t{\n\t\tconst minScroll = this.scrollStep;\n\t\tconst maxScroll = this.DOM.timelineVerticalConstraint.scrollWidth\n\t\t\t\t\t\t\t- this.DOM.timelineFixedWrap.offsetWidth\n\t\t\t\t\t\t\t- this.scrollStep;\n\n\t\t// Check and expand only if it is visible\n\t\tif (this.DOM.timelineFixedWrap.offsetWidth > 0)\n\t\t{\n\t\t\tconst today = new Date();\n\t\t\ttoday.setHours(this.scaleDateFrom.getHours(), 0, 0, 0);\n\t\t\tif ((this.DOM.timelineVerticalConstraint.scrollLeft <= minScroll) && (this.scaleDateFrom.getTime() > today.getTime()))\n\t\t\t{\n\t\t\t\tthis.expandTimelineDirection = 'past';\n\t\t\t}\n\t\t\tif (this.DOM.timelineVerticalConstraint.scrollLeft >= maxScroll)\n\t\t\t{\n\t\t\t\tthis.expandTimelineDirection = 'future';\n\t\t\t}\n\n\t\t\tif (this.expandTimelineDirection)\n\t\t\t{\n\t\t\t\tif (!this.isLoaderShown())\n\t\t\t\t{\n\t\t\t\t\tthis.showLoader();\n\t\t\t\t}\n\t\t\t\tthis.expandTimelineDebounce();\n\t\t\t}\n\t\t}\n\t}\n\n\tstartScrollTimeline()\n\t{\n\t\tthis.timelineIsDraged = true;\n\t\tthis.timelineStartScrollLeft = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t}\n\tscrollTimeline(x)\n\t{\n\t\tthis.DOM.timelineVerticalConstraint.scrollLeft = Math.max(this.timelineStartScrollLeft - x, 0);\n\t}\n\tendScrollTimeline()\n\t{\n\t\tthis.timelineIsDraged = false;\n\t}\n\n\tfindTarget(node, nodeMetaType, parentCont)\n\t{\n\t\tif (!parentCont)\n\t\t\tparentCont = this.DOM.mainWrap;\n\n\t\tlet type = (node && node.getAttribute) ? node.getAttribute('data-bx-planner-meta') : null;\n\n\t\tif (type !== nodeMetaType)\n\t\t{\n\t\t\tif (node)\n\t\t\t{\n\t\t\t\tnode = BX.findParent(node, function(n)\n\t\t\t\t{\n\t\t\t\t\treturn n.getAttribute && n.getAttribute('data-bx-planner-meta') === nodeMetaType;\n\t\t\t\t}, parentCont);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnode = null;\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tgetMousePos(e)\n\t{\n\t\tif (!e)\n\t\t\te = window.event;\n\n\t\tlet x = 0, y = 0;\n\t\tif (e.pageX || e.pageY)\n\t\t{\n\t\t\tx = e.pageX;\n\t\t\ty = e.pageY;\n\t\t}\n\t\telse if (e.clientX || e.clientY)\n\t\t{\n\t\t\tx = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;\n\t\t\ty = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t}\n\n\tsetScaleType(scaleType)\n\t{\n\t\tif (!this.scaleTypes.includes(scaleType))\n\t\t{\n\t\t\tscaleType = '1hour';\n\t\t}\n\n\t\tthis.scaleType = scaleType;\n\t\tthis.scaleSize = Planner.getScaleSize(scaleType);\n\n\t\tif (this.isOneDayScale() && this.timelineCellWidth < 100)\n\t\t{\n\t\t\tthis.timelineCellWidthOrig = this.timelineCellWidth;\n\t\t\tthis.timelineCellWidth = 100;\n\t\t}\n\t\telse if (!this.isOneDayScale() && this.timelineCellWidthOrig)\n\t\t{\n\t\t\tthis.timelineCellWidth = this.timelineCellWidthOrig;\n\t\t\tthis.timelineCellWidthOrig = false;\n\t\t}\n\n\t\tif (this.isOneDayScale())\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-fulldaymode');\n\t\t\tif (this.DOM.entriesOuterWrap)\n\t\t\t{\n\t\t\t\tDom.addClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-fulldaymode');\n\t\t\tif (this.DOM.entriesOuterWrap)\n\t\t\t{\n\t\t\t\tDom.removeClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic getScaleSize(scaleType)\n\t{\n\t\tlet\n\t\t\thour = 3600,\n\t\t\tmap = {\n\t\t\t\t'15min' : Math.round(hour / 4),\n\t\t\t\t'30min' : Math.round(hour / 2),\n\t\t\t\t'1hour' : hour,\n\t\t\t\t'2hour' : hour * 2,\n\t\t\t\t'1day' : hour * 24\n\t\t\t};\n\n\t\treturn map[scaleType] || hour;\n\t}\n\n\tmapDatePos(accuracy)\n\t{\n\t\tif (!accuracy)\n\t\t{\n\t\t\taccuracy = this.accuracy;\n\t\t}\n\n\t\tlet datePosMap = {};\n\t\tlet posDateMap = {};\n\t\tlet i, j, tsi, xi, tsj, xj, cellWidth;\n\n\t\tthis.substeps = Math.round(this.scaleSize / accuracy);\n\t\tthis.posAccuracy = this.timelineCellWidth / this.substeps;\n\n\t\taccuracy = accuracy * 1000;\n\t\tlet scaleSize = this.scaleData[1].timestamp - this.scaleData[0].timestamp;\n\n\t\tfor (i = 0; i < this.scaleData.length; i++)\n\t\t{\n\t\t\ttsi = this.scaleData[i].timestamp;\n\t\t\txi = parseInt(this.scaleData[i].cell.offsetLeft);\n\t\t\tcellWidth = parseInt(this.scaleData[i].cell.offsetWidth);\n\n\t\t\tif (!datePosMap[tsi])\n\t\t\t{\n\t\t\t\tdatePosMap[tsi] = xi;\n\t\t\t}\n\t\t\tposDateMap[xi] = tsi;\n\n\t\t\tfor (j = 1; j <= cellWidth; j++)\n\t\t\t{\n\t\t\t\ttsj = tsi + Math.round((j * scaleSize / cellWidth) / accuracy) * accuracy;\n\t\t\t\txj = xi + j;\n\t\t\t\tif (!datePosMap[tsi])\n\t\t\t\t{\n\t\t\t\t\tdatePosMap[tsj] = xj;\n\t\t\t\t}\n\t\t\t\tposDateMap[xj] = tsj;\n\n\t\t\t\tif (j === cellWidth &&\n\t\t\t\t\t(!this.scaleData[i + 1] || this.scaleData[i + 1].dayStart))\n\t\t\t\t{\n\t\t\t\t\tdatePosMap[xj + '_end'] = tsj;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (i + 1 < this.scaleData.length && this.scaleData[i + 1].dayStart)\n\t\t\t{\n\t\t\t\tconst borderStart = xi + cellWidth;\n\t\t\t\tconst borderEnd = parseInt(this.scaleData[i + 1].cell.offsetLeft);\n\t\t\t\tconst borderTimestamp = tsi + scaleSize;\n\t\t\t\tfor (let borderX = borderStart; borderX < borderEnd; borderX++)\n\t\t\t\t{\n\t\t\t\t\tposDateMap[borderX] = borderTimestamp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tdatePosMap: datePosMap,\n\t\t\tposDateMap: posDateMap\n\t\t}\n\t}\n\n\tgetPosByDate(date)\n\t{\n\t\tlet x = 0;\n\t\tif (date && typeof date !== 'object')\n\t\t{\n\t\t\tdate = Util.parseDate(date);\n\t\t}\n\n\t\tif (date && typeof date === 'object')\n\t\t{\n\t\t\tlet curInd = 0;\n\t\t\tconst timestamp = date.getTime();\n\n\t\t\tfor (let i = 0; i < this.scaleData.length; i++)\n\t\t\t{\n\t\t\t\tif (timestamp >= this.scaleData[i].timestamp)\n\t\t\t\t{\n\t\t\t\t\tcurInd = i;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.scaleData[curInd] && this.scaleData[curInd].cell)\n\t\t\t{\n\t\t\t\tx = this.scaleData[curInd].cell.offsetLeft;\n\t\t\t\tconst cellWidth = this.scaleData[curInd].cell.offsetWidth;\n\t\t\t\tconst deltaTs = Math.round((timestamp - this.scaleData[curInd].timestamp) / 1000);\n\n\t\t\t\tif (deltaTs > 0)\n\t\t\t\t{\n\t\t\t\t\tx += Math.round(deltaTs * 10 / this.scaleSize * cellWidth) / 10;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn x;\n\t}\n\n\tgetDateByPos(x, end, posDateMap)\n\t{\n\t\tif (!posDateMap)\n\t\t{\n\t\t\tposDateMap = this.posDateMap;\n\t\t}\n\t\tlet\n\t\t\tdate,\n\t\t\ttimestamp = (end && posDateMap[x + '_end']) ? posDateMap[x + '_end'] : posDateMap[x];\n\n\t\tif (!timestamp)\n\t\t{\n\t\t\tx = Math.round(x);\n\t\t\ttimestamp = (end && posDateMap[x + '_end']) ?  posDateMap[x + '_end'] : posDateMap[x];\n\t\t}\n\n\t\tif (timestamp)\n\t\t{\n\t\t\tdate = new Date(timestamp);\n\t\t}\n\n\t\treturn date;\n\t}\n\n\tshowMoreUsers()\n\t{\n\t\tthis.MIN_ENTRY_ROWS = this.MAX_ENTRY_ROWS;\n\t\tthis.rebuild({ dontFocus: true });\n\n\t\tDom.addClass(this.selector.DOM.moreButton, '--close');\n\n\t\tEvent.unbind(this.selector.DOM.moreButton, 'click', this.showMoreUsersBind);\n\t\tEvent.bind(this.selector.DOM.moreButton, 'click', this.hideMoreUsersBind);\n\t}\n\n\thideMoreUsers()\n\t{\n\t\tthis.MIN_ENTRY_ROWS = this.initialMinEntryRows;\n\t\tthis.rebuild({ dontFocus: true });\n\n\t\tDom.removeClass(this.selector.DOM.moreButton, '--close');\n\n\t\tEvent.unbind(this.selector.DOM.moreButton, 'click', this.hideMoreUsersBind);\n\t\tEvent.bind(this.selector.DOM.moreButton, 'click', this.showMoreUsersBind);\n\t}\n\n\tadjustHeight()\n\t{\n\t\tlet\n\t\t\tnewHeight = this.DOM.entrieListWrap.offsetHeight + this.DOM.entrieListWrap.offsetTop + 30,\n\t\t\tcurrentHeight = parseInt(this.DOM.wrap.style.height) || this.height;\n\n\t\tif (this.compactMode && currentHeight < newHeight || !this.compactMode)\n\t\t{\n\t\t\tthis.resizePlannerHeight(newHeight, Math.abs(newHeight - currentHeight) > 10);\n\t\t}\n\t}\n\n\tresizePlannerHeight(height, animation = false)\n\t{\n\t\tif (animation)\n\t\t{\n\t\t\tconst animationDuration = 300;\n\t\t\tconst top = parseInt(this.DOM.entrieListWrap.style.top);\n\n\t\t\tthis.updateHeightTransition(animationDuration);\n\t\t\tthis.DOM.entrieListWrap.style.zIndex = '10';\n\t\t\tthis.DOM.entrieListWrap.style.overflow = 'hidden';\n\t\t\tthis.DOM.entrieListWrap.style.clipPath = `inset(0 0 calc(100% - ${this.height - top}px))`;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateHeight(height);\n\t\t\t\tthis.DOM.entrieListWrap.style.clipPath = `inset(0 0 calc(100% - ${height - top}px))`;\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.updateHeightTransition(0);\n\t\t\t\t\tthis.DOM.entrieListWrap.style.zIndex = '';\n\t\t\t\t\tthis.DOM.entrieListWrap.style.overflow = '';\n\t\t\t\t\tthis.DOM.entrieListWrap.style.clipPath = '';\n\t\t\t\t}, animationDuration);\n\t\t\t}, 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.updateHeight(height);\n\t\t}\n\n\t\tthis.height = height;\n\t\tlet timelineDataContHeight = this.DOM.entrieListWrap.offsetHeight + 3;\n\t\tthis.DOM.timelineDataWrap.style.height = timelineDataContHeight + 'px';\n\t\tif (this.DOM.proposeTimeButton && this.DOM.proposeTimeButton.style.display !== \"none\")\n\t\t{\n\t\t\tthis.DOM.proposeTimeButton.style.top = (this.DOM.timelineDataWrap.offsetTop + timelineDataContHeight / 2 - 16) + \"px\";\n\t\t}\n\t}\n\n\tupdateHeightTransition(duration)\n\t{\n\t\tthis.DOM.wrap.style.transition = `height ${duration}ms ease`;\n\t\tthis.DOM.mainWrap.style.transition = `height ${duration}ms ease`;\n\t\tthis.DOM.timelineFixedWrap.style.transition = `height ${duration}ms ease`;\n\t\tthis.DOM.entriesOuterWrap.style.transition = `height ${duration}ms ease`;\n\t\tthis.DOM.entrieListWrap.style.transition = `clip-path ${duration}ms ease`;\n\t}\n\n\tupdateHeight(height)\n\t{\n\t\tthis.DOM.wrap.style.height = height + 'px';\n\t\tthis.DOM.mainWrap.style.height = height + 'px';\n\t\tthis.DOM.timelineFixedWrap.style.height = height + 'px';\n\t\tthis.DOM.entriesOuterWrap.style.height = height + 'px';\n\t}\n\n\tresizePlannerWidth(width, animation)\n\t{\n\t\tif (!animation && this.DOM.wrap && this.DOM.mainWrap)\n\t\t{\n\t\t\tthis.DOM.wrap.style.width = width + 'px';\n\t\t\tlet entriesListWidth = this.compactMode ? 0 : this.entriesListWidth;\n\n\t\t\tif (!this.showEntryName)\n\t\t\t{\n\t\t\t\tentriesListWidth = 55;\n\t\t\t}\n\n\t\t\tthis.DOM.mainWrap.style.width = width + 'px';\n\t\t\tthis.DOM.entriesOuterWrap.style.width = entriesListWidth + 'px';\n\t\t}\n\t}\n\n\texpandTimeline(scaleDateFrom, scaleDateTo)\n\t{\n\t\tlet loadedTimelineSize;\n\t\tlet scrollLeft;\n\t\tconst prevScaleDateFrom = this.scaleDateFrom;\n\t\tconst prevScaleDateTo = this.scaleDateTo;\n\n\t\tif (!scaleDateFrom)\n\t\t{\n\t\t\tscaleDateFrom = this.scaleDateFrom;\n\t\t}\n\t\tif (!scaleDateTo)\n\t\t{\n\t\t\tscaleDateTo = this.scaleDateTo;\n\t\t}\n\n\t\tif (this.expandTimelineDirection === 'past')\n\t\t{\n\t\t\tscrollLeft = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\t\tthis.scaleDateFrom = new Date(scaleDateFrom.getTime() - Util.getDayLength()  * this.EXPAND_OFFSET);\n\t\t\tconst today = new Date();\n\t\t\ttoday.setHours(this.scaleDateFrom.getHours(), 0, 0, 0);\n\t\t\tif (this.scaleDateFrom.getTime() < today)\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom = today;\n\t\t\t}\n\n\t\t\tloadedTimelineSize = (this.scaleDateTo.getTime() - this.scaleDateFrom.getTime()) / Util.getDayLength();\n\t\t\tif (loadedTimelineSize > this.maxTimelineSize)\n\t\t\t{\n\t\t\t\tthis.scaleDateTo = new Date(this.scaleDateFrom.getTime() + Util.getDayLength()  * this.maxTimelineSize);\n\t\t\t\tthis.loadedDataFrom = this.scaleDateFrom;\n\t\t\t\tthis.loadedDataTo = this.scaleDateTo;\n\t\t\t\tthis.limitScaleSizeMode = true;\n\t\t\t}\n\t\t}\n\t\telse if (this.expandTimelineDirection === 'future')\n\t\t{\n\t\t\tlet oldDateTo = this.scaleDateTo;\n\t\t\tscrollLeft = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\t\tthis.scaleDateTo = new Date(scaleDateTo.getTime() + Util.getDayLength() * this.EXPAND_OFFSET);\n\t\t\tloadedTimelineSize = (this.scaleDateTo.getTime() - this.scaleDateFrom.getTime()) / Util.getDayLength();\n\n\t\t\tif (loadedTimelineSize > this.maxTimelineSize)\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom = new Date(this.scaleDateTo.getTime() - Util.getDayLength()  * this.maxTimelineSize);\n\t\t\t\tthis.loadedDataFrom = this.scaleDateFrom;\n\t\t\t\tthis.loadedDataTo = this.scaleDateTo;\n\n\t\t\t\tscrollLeft = this.getPosByDate(oldDateTo) - this.DOM.timelineFixedWrap.offsetWidth;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.DOM.timelineVerticalConstraint.scrollLeft = this.getPosByDate(oldDateTo) - this.DOM.timelineFixedWrap.offsetWidth;\n\t\t\t\t}, 10);\n\n\t\t\t\tthis.limitScaleSizeMode = true;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.scaleDateFrom = new Date(scaleDateFrom.getTime() - Util.getDayLength()  * this.SCALE_OFFSET_BEFORE);\n\t\t\tthis.scaleDateTo = new Date(scaleDateTo.getTime() + Util.getDayLength() * this.SCALE_OFFSET_AFTER);\n\t\t}\n\n\t\tconst reloadData = this.scaleDateFrom.getTime() < prevScaleDateFrom.getTime()\n\t\t|| this.scaleDateTo.getTime() > prevScaleDateTo.getTime();\n\n\t\tthis.hideLoader();\n\t\tthis.emit('onExpandTimeline', new BaseEvent({\n\t\t\tdata: {\n\t\t\t\treload: reloadData,\n\t\t\t\tdateFrom: this.scaleDateFrom,\n\t\t\t\tdateTo: this.scaleDateTo\n\t\t\t} }));\n\n\t\tconst currentPlannerWidth = this.DOM.timelineInnerWrap.offsetWidth;\n\t\tthis.rebuild({\n\t\t\tupdateSelector: true\n\t\t});\n\n\t\tif (this.expandTimelineDirection === 'past')\n\t\t{\n\t\t\tconst widthDiff = this.DOM.timelineInnerWrap.offsetWidth - currentPlannerWidth;\n\t\t\tthis.DOM.timelineVerticalConstraint.scrollLeft = scrollLeft + widthDiff;\n\t\t}\n\t\telse if (scrollLeft !== undefined)\n\t\t{\n\t\t\tthis.DOM.timelineVerticalConstraint.scrollLeft = scrollLeft;\n\t\t}\n\n\t\tthis.expandTimelineDirection = null;\n\t}\n\n\tgetVisibleEvents()\n\t{\n\t\tconst visibleEvents = [];\n\n\t\tconst timelineFromPosition = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\tconst timelineToPosition = timelineFromPosition + this.DOM.timelineFixedWrap.offsetWidth;\n\n\t\tfor (const index in this.accessibility)\n\t\t{\n\t\t\tfor (const event of this.accessibility[index])\n\t\t\t{\n\t\t\t\tconst eventFromPosition = this.getPosByDate(new Date(event.fromTimestamp));\n\t\t\t\tconst eventToPosition = this.getPosByDate(new Date(event.toTimestamp));\n\t\t\t\tif (\n\t\t\t\t\tthis.doSegmentsIntersect(eventFromPosition, eventToPosition, timelineFromPosition, timelineToPosition)\n\t\t\t\t\t&& event.node\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tvisibleEvents.push(event);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn visibleEvents;\n\t}\n\n\tgetEventsAfter(events, timestamp)\n\t{\n\t\tconst eventsAfter = [];\n\t\tfor (const event of events)\n\t\t{\n\t\t\tif (event.fromTimestamp >= timestamp)\n\t\t\t{\n\t\t\t\teventsAfter.push(event);\n\t\t\t}\n\t\t}\n\t\treturn eventsAfter;\n\t}\n\n\tupdateTimezone(timezone)\n\t{\n\t\tconst currentOffset = Util.getTimeZoneOffset(this.currentTimezone);\n\t\tconst timezoneOffset = Util.getTimeZoneOffset(timezone);\n\t\tthis.currentTimezone = timezone;\n\n\t\tif (currentOffset === timezoneOffset)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isBuilt())\n\t\t{\n\t\t\tthis.update(this.entries, this.accessibility);\n\t\t}\n\t}\n\n\tupdate(entries = [], accessibility = {})\n\t{\n\t\tDom.clean(this.DOM.entrieListWrap);\n\n\t\tDom.clean(this.DOM.accessibilityWrap);\n\t\tthis.entriesDataRowMap = new Map();\n\n\t\tif (!Type.isArray(entries))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.entries?.length !== entries.length)\n\t\t{\n\t\t\tthis.doShowTimezoneNoticePopup = true;\n\t\t}\n\n\t\tthis.entries = entries;\n\t\tthis.accessibility = [];\n\t\tthis.preparedAccessibility = [];\n\t\tthis.allEvents = [];\n\n\t\tconst currentOffset = Util.getTimeZoneOffset(this.currentTimezone);\n\t\tthis.entries.forEach((entry) => {\n\t\t\tthis.accessibility[entry.id] = accessibility[entry.id];\n\t\t\tthis.preparedAccessibility[entry.id] = accessibility[entry.id].map((it) => this.prepareAccessibilityItem(it));\n\t\t\tthis.allEvents.push(...this.preparedAccessibility[entry.id]);\n\t\t\tentry.timezoneOffset = Util.getTimeZoneOffset(entry.timezoneName);\n\t\t\tentry.timezoneNameFormatted = Util.getFormattedTimezone(entry.timezoneName);\n\t\t\tentry.offset = currentOffset - entry.timezoneOffset;\n\t\t});\n\n\t\tconst userId = parseInt(this.userId);\n\n\t\t// sort entries list by amount of accessibility data\n\t\t// Entries without accessibility data should be in the end of the array\n\t\t// But first in the list will be meeting room\n\t\t// And second (or first) will be owner-host of the event\n\t\tentries.sort((a, b) => {\n\t\t\tif (b.status === 'h' || parseInt(b.id) === userId && a.status !== 'h')\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (a.status === 'h' || parseInt(a.id) === userId && b.status !== 'h')\n\t\t\t{\n\t\t\t\treturn  -1;\n\t\t\t}\n\t\t\tif (parseInt(a.id) < parseInt(b.id))\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn 1;\n\t\t});\n\n\t\tif (this.selectedEntriesWrap)\n\t\t{\n\t\t\tDom.clean(this.selectedEntriesWrap);\n\t\t\tif (this.selector && this.selector.controlWrap)\n\t\t\t{\n\t\t\t\tDom.clean(this.selector.controlWrap);\n\t\t\t}\n\t\t}\n\n\t\tconst cutData = [];\n\t\tconst cutDataTitle = [];\n\t\tlet usersCount = 0;\n\t\tlet cutEntries = [];\n\t\tlet dispDataCount = 0;\n\n\t\tif (entries.length <= this.initialMinEntryRows + 1)\n\t\t{\n\t\t\tthis.selector.DOM.moreButton.style.display = 'none';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.selector.DOM.moreButton.style.display = '';\n\t\t}\n\n\t\tentries.forEach((entry, ind) => {\n\t\t\tentry.uid = Planner.getEntryUniqueId(entry);\n\n\t\t\tconst accData = this.preparedAccessibility[entry.uid];\n\t\t\tthis.entriesIndex.set(entry.uid, entry);\n\n\t\t\tif (entry.type === 'user')\n\t\t\t{\n\t\t\t\tusersCount++;\n\t\t\t}\n\n\t\t\tif (ind < this.MIN_ENTRY_ROWS || entries.length === this.MIN_ENTRY_ROWS + 1)\n\t\t\t{\n\t\t\t\tdispDataCount++;\n\t\t\t\tthis.displayEntryRow(entry, accData);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcutEntries.push(entry);\n\t\t\t\tcutDataTitle.push(entry.name);\n\t\t\t\tcutData.push(...accData);\n\t\t\t}\n\t\t});\n\n\t\t// Update entries title count\n\t\tif (this.entriesListTitleCounter)\n\t\t{\n\t\t\tthis.entriesListTitleCounter.innerHTML = usersCount > this.MAX_ENTRY_ROWS ? '(' + usersCount + ')' : '';\n\t\t}\n\n\t\tthis.emit('onDisplayAttendees', new BaseEvent({\n\t\t\tdata:  {\n\t\t\t\tusersCount: usersCount\n\t\t\t}\n\t\t}));\n\n\t\tif (cutEntries.length > 0)\n\t\t{\n\t\t\tif (dispDataCount === this.MAX_ENTRY_ROWS)\n\t\t\t{\n\t\t\t\tthis.displayEntryRow({\n\t\t\t\t\tname: Loc.getMessage('EC_PL_ATTENDEES_LAST') + ' (' + cutEntries.length + ')',\n\t\t\t\t\ttype: 'lastUsers',\n\t\t\t\t\ttitle: cutDataTitle.join(', ')\n\t\t\t\t}, cutData);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.displayEntryRow({\n\t\t\t\t\tname: Loc.getMessage('EC_PL_ATTENDEES_SHOW_MORE') + ' (' + cutEntries.length + ')',\n\t\t\t\t\ttype: 'moreLink',\n\t\t\t\t\thasDifferentTimezone: cutEntries.filter(entry => entry.offset !== 0).length > 0,\n\t\t\t\t}, cutData);\n\t\t\t}\n\t\t}\n\n\t\tthis.clearCacheTime();\n\t\tconst status = this.checkTimePeriod(this.currentFromDate, this.currentToDate) === true;\n\t\tthis.updateSelectorFromStatus(status);\n\n\t\tUtil.extendPlannerWatches({entries: entries, userId: this.userId});\n\n\t\tthis.adjustHeight();\n\t\tthis.updateWorkTimeNotice();\n\t}\n\n\tupdateSelector(from, to, fullDay, options = {})\n\t{\n\t\tif (this.shown && this.selector)\n\t\t{\n\t\t\tthis.setFullDayMode(fullDay);\n\n\t\t\t// Update limits of scale\n\t\t\tif (!this.isOneDayScale())\n\t\t\t{\n\t\t\t\tif (Util.formatDate(from) !== Util.formatDate(to))\n\t\t\t\t{\n\t\t\t\t\tthis.extendScaleTime(0, 24);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet timeFrom = parseInt(from.getHours()) + Math.floor(from.getMinutes() / 60);\n\t\t\t\t\tlet timeTo = parseInt(to.getHours()) + Math.ceil(to.getMinutes() / 60);\n\t\t\t\t\tlet scale = 2;\n\n\t\t\t\t\tif (timeFrom <= this.shownScaleTimeFrom)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.extendScaleTime(timeFrom - scale, false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (timeTo >= this.shownScaleTimeTo)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.extendScaleTime(false, timeTo + scale);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isNeedToExpandTimeline(from, to))\n\t\t\t{\n\t\t\t\tthis.expandTimelineDirection = false;\n\t\t\t\tthis.expandTimeline(from, to);\n\t\t\t}\n\n\t\t\tthis.currentFromDate = from;\n\t\t\tthis.currentToDate = to;\n\t\t\tif (!this.selector)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (from.getTime() < this.scaleDateFrom.getTime())\n\t\t\t{\n\t\t\t\tthis.selector.update({\n\t\t\t\t\tfrom: from,\n\t\t\t\t\tto: to,\n\t\t\t\t\tfullDay: fullDay,\n\t\t\t\t\tfocus: options.focus !== false\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selector.update({\n\t\t\t\tfrom: from,\n\t\t\t\tto: to,\n\t\t\t\tfullDay: fullDay\n\t\t\t});\n\n\t\t\tif (options.focus !== false)\n\t\t\t{\n\t\t\t\tthis.selector.focus(true, 300);\n\t\t\t}\n\n\t\t\tthis.updateWorkTimeNotice();\n\t\t}\n\t}\n\n\tisNeedToExpandTimeline(from, to)\n\t{\n\t\treturn to.getTime() > this.scaleDateTo.getTime()\n\t\t\t|| from.getTime() < this.scaleDateFrom.getTime();\n\t}\n\n\thandleSelectorChanges(event)\n\t{\n\t\tif (event instanceof BaseEvent)\n\t\t{\n\t\t\tlet data = event.getData();\n\t\t\tthis.emit('onDateChange', new BaseEvent({data: data}));\n\t\t\tthis.currentFromDate = data.dateFrom;\n\t\t\tthis.currentToDate = data.dateTo;\n\n\t\t\tif (this.currentToDate.getHours() < this.shownScaleTimeFrom\n\t\t\t\t&& !(this.currentToDate.getHours() === 0 && this.currentToDate.getMinutes() === 0))\n\t\t\t{\n\t\t\t\tthis.extendScaleTime(this.currentToDate.getHours(), false);\n\t\t\t}\n\n\t\t\tthis.updateWorkTimeNotice();\n\t\t}\n\t}\n\n\tonStopAutoScrollHandler()\n\t{\n\t\tthis.hideWorkTimeNotice();\n\t}\n\n\tonBeginChangeHandler()\n\t{\n\t\tthis.hideWorkTimeNotice();\n\t}\n\n\tupdateWorkTimeNotice()\n\t{\n\t\tif (!this.isWorkTimeNoticeEnabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectorTime = this.selector.boundaryFrom ?? this.currentFromDate;\n\t\tthis.updateVacationNotice(selectorTime);\n\t\tthis.updateTimezoneNotice(selectorTime);\n\t}\n\n\thideWorkTimeNotice()\n\t{\n\t\tthis.hideVacationNotice();\n\t\tthis.hideTimezoneNotice();\n\t}\n\n\tupdateVacationNotice(selectorTime)\n\t{\n\t\tfor (const entry of this.entries.filter(entry => Type.isDomNode(entry.vacationNode)))\n\t\t{\n\t\t\tconst currentVacations = this.accessibility[entry.id].filter((acc) => {\n\t\t\t\tconst from = acc.from.getTime();\n\t\t\t\tconst to = acc.to.getTime();\n\t\t\t\treturn acc.isVacation && from < selectorTime.getTime() && selectorTime.getTime() < to;\n\t\t\t});\n\n\t\t\tif (currentVacations.length > 0)\n\t\t\t{\n\t\t\t\tconst to = Math.max(...currentVacations.map(vacation => vacation.to));\n\t\t\t\tentry.vacationNode.dataHint = Loc.getMessage('EC_PLANNER_IN_VACATION_UNTIL', {\n\t\t\t\t\t'#UNTIL#': Util.formatDate(to),\n\t\t\t\t});\n\t\t\t\tentry.vacationNode.style.display = '';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tentry.vacationNode.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\thideVacationNotice()\n\t{\n\t\tfor (const entry of this.entries.filter(entry => Type.isDomNode(entry.vacationNode)))\n\t\t{\n\t\t\tentry.vacationNode.style.display = 'none';\n\t\t}\n\t}\n\n\tupdateTimezoneNotice(selectorTime)\n\t{\n\t\tif (!this.isSelectorVisible())\n\t\t{\n\t\t\tthis.hideTimezoneNotice();\n\t\t\treturn;\n\t\t}\n\n\t\tconst otherTimezoneEntries = this.entries.filter((entry) => this.isInternalUser(entry) && entry.offset !== 0);\n\t\tconst warningTimezoneEntries = otherTimezoneEntries.filter((entry) => {\n\t\t\tconst entryTime = new Date(selectorTime.getTime() + entry.offset * 60 * 1000);\n\t\t\tconst entryHours = this.getDateHours(entryTime);\n\t\t\treturn entryHours < this.warningHoursFrom || entryHours >= this.warningHoursTo;\n\t\t});\n\n\t\tif (Type.isDomNode(this.DOM.statusNodeAll))\n\t\t{\n\t\t\tDom.removeClass(this.DOM.statusNodeAll, '--warning');\n\t\t}\n\n\t\tthis.selector.clearTimeNodes();\n\t\tfor (const entry of otherTimezoneEntries)\n\t\t{\n\t\t\tconst entryNode = this.entriesDataRowMap.get(entry.uid);\n\t\t\tconst entryTime = new Date(selectorTime.getTime() + entry.offset * 60 * 1000);\n\t\t\tconst entryHours = this.getDateHours(entryTime);\n\t\t\tconst isWarning = entryHours < this.warningHoursFrom || entryHours >= this.warningHoursTo;\n\n\t\t\tif (Type.isDomNode(entryNode))\n\t\t\t{\n\t\t\t\tconst top = parseInt(entryNode.style.top);\n\t\t\t\tthis.selector.showTimeNode(top, Util.formatTime(entryTime), entry.timezoneNameFormatted, isWarning);\n\t\t\t}\n\n\t\t\tthis.showEntryStatusTimezone(entry, isWarning);\n\t\t}\n\n\t\tconst isWarning = warningTimezoneEntries.length > 0;\n\t\tif (isWarning)\n\t\t{\n\t\t\tDom.addClass(this.selector.DOM.moreButton, '--warning');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.selector.DOM.moreButton, '--warning');\n\t\t}\n\n\t\tif (otherTimezoneEntries.length > 0)\n\t\t{\n\t\t\tthis.showTimezoneNotice(otherTimezoneEntries.length, isWarning);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.hideTimezoneNotice();\n\t\t}\n\t}\n\n\tisInternalUser(entry)\n\t{\n\t\treturn entry.type === 'user' && !entry.sharingUser && !entry.emailUser;\n\t}\n\n\tgetDateHours(date)\n\t{\n\t\treturn date.getHours() + date.getMinutes() / 60;\n\t}\n\n\tisSelectorVisible()\n\t{\n\t\tconst timelineLeft = this.DOM.timelineVerticalConstraint.scrollLeft;\n\t\tconst timelineRight = timelineLeft + this.DOM.timelineFixedWrap.offsetWidth;\n\n\t\tconst selectorWrap = this.selector.getWrap();\n\t\tconst selectorLeft = selectorWrap.offsetLeft;\n\t\tconst selectorRight = selectorWrap.offsetLeft + selectorWrap.offsetWidth;\n\n\t\treturn this.doSegmentsIntersect(selectorLeft, selectorRight, timelineLeft, timelineRight);\n\t}\n\n\tshowTimezoneNotice(count, isWarning)\n\t{\n\t\tthis.showTimezoneNoticeCount(count, isWarning);\n\t\tif (isWarning)\n\t\t{\n\t\t\tthis.showTimezoneNoticePopup();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.hideTimezoneNoticePopup();\n\t\t}\n\t}\n\n\thideTimezoneNotice()\n\t{\n\t\tthis.selector.clearTimeNodes();\n\t\tthis.hideTimezoneNoticeCount();\n\t\tthis.hideTimezoneNoticePopup();\n\t}\n\n\tshowTimezoneNoticeCount(count, isWarning)\n\t{\n\t\tthis.DOM.timezoneNoticeCount.innerHTML = this.renderTimezoneNoticeText(count, isWarning);\n\n\t\tconst left = this.getSelectorOffset();\n\t\tthis.DOM.timezoneNoticeCount.style.left = `${left}px`;\n\t\tthis.DOM.timezoneNoticeCount.style.display = 'block';\n\t\tthis.DOM.wrap.style.marginBottom = `${20}px`;\n\t}\n\n\thideTimezoneNoticeCount()\n\t{\n\t\tthis.DOM.timezoneNoticeCount.style.display = 'none';\n\t}\n\n\tshowTimezoneNoticePopup()\n\t{\n\t\tif (!this.doShowTimezoneNoticePopup || this.isTimezoneNoticePopupShown)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.showSelectorPopup(Loc.getMessage('EC_PLANNER_TIMEZONE_NOTICE'));\n\t}\n\n\thideTimezoneNoticePopup()\n\t{\n\t\tif (this.DOM.selectorPopup.style.display !== 'none')\n\t\t{\n\t\t\tthis.doShowTimezoneNoticePopup = false;\n\t\t\tthis.isTimezoneNoticePopupShown = true;\n\t\t}\n\t\tthis.hideSelectorPopup();\n\t}\n\n\tshowSelectorPopup(text)\n\t{\n\t\tif (this.DOM.selectorPopup.style.display === 'block' && this.DOM.selectorPopup.innerText !== text)\n\t\t{\n\t\t\tthis.DOM.selectorPopup.style.transition = 'color 200ms ease';\n\t\t\tthis.DOM.selectorPopup.style.color = '#ffffff00';\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.DOM.selectorPopup.innerText = text;\n\t\t\t\tthis.DOM.selectorPopup.style.color = '';\n\t\t\t}, 200);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.DOM.selectorPopup.style.transition = 'none';\n\t\t\tthis.DOM.selectorPopup.innerText = text;\n\t\t\tthis.DOM.selectorPopup.style.color = '';\n\t\t}\n\n\t\tconst left = this.getSelectorOffset();\n\t\tthis.DOM.selectorPopup.style.left = `${left}px`;\n\t\tthis.DOM.selectorPopup.style.display = 'block';\n\n\t\tclearTimeout(this.selectorPopupTimeout);\n\t\tthis.selectorPopupTimeout = setTimeout(() => this.hideTimezoneNoticePopup(), 3000);\n\t}\n\n\thideSelectorPopup()\n\t{\n\t\tthis.DOM.selectorPopup.style.display = 'none';\n\t}\n\n\tgetSelectorOffset()\n\t{\n\t\tconst scroll = this.scrollLeft;\n\t\tconst selectorWrap = this.selector.getWrap();\n\t\tconst selectorCenter = parseInt(selectorWrap.style.width) / 2 + parseInt(selectorWrap.style.left);\n\t\tconst userWrapWidth = parseInt(this.DOM.entriesOuterWrap.style.width);\n\n\t\treturn selectorCenter - scroll + userWrapWidth;\n\t}\n\n\tshowEntryStatusTimezone(entry, isWarning)\n\t{\n\t\tif (!Type.isDomNode(entry.statusNode) || !this.DOM.wrap.contains(entry.statusNode))\n\t\t{\n\t\t\tif (Type.isDomNode(this.DOM.statusNodeAll))\n\t\t\t{\n\t\t\t\tthis.DOM.statusNodeAll.style.display = '';\n\t\t\t}\n\n\t\t\tif (isWarning)\n\t\t\t{\n\t\t\t\tDom.addClass(this.DOM.statusNodeAll, '--warning');\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tentry.statusNode.style.display = '';\n\t\tDom.addClass(entry.statusNode, 'user-status-different-timezone');\n\n\t\tif (isWarning)\n\t\t{\n\t\t\tDom.addClass(entry.statusNode, '--warning');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(entry.statusNode, '--warning');\n\t\t}\n\t}\n\n\tisWorkTimeNoticeEnabled()\n\t{\n\t\treturn !this.solidStatus && Type.isArrayFilled(this.entries);\n\t}\n\n\tgetAllEvents()\n\t{\n\t\treturn this.allEvents;\n\t}\n\n\tdoCheckSelectorStatus(event)\n\t{\n\t\tif (event instanceof BaseEvent)\n\t\t{\n\t\t\tconst data = event.getData();\n\t\t\tthis.clearCacheTime();\n\t\t\tconst selectorStatus = this.checkTimePeriod(data.dateFrom, data.dateTo) === true;\n\t\t\tthis.updateSelectorFromStatus(selectorStatus)\n\t\t}\n\t}\n\n\tupdateSelectorFromStatus(status)\n\t{\n\t\tthis.selector.setSelectorStatus(status);\n\t\tif (this.selector.isDragged())\n\t\t{\n\t\t\tthis.hideProposeControl();\n\t\t}\n\t\tif (status)\n\t\t{\n\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-selector-warning');\n\t\t\tthis.hideProposeControl();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-selector-warning');\n\t\t\tif (!this.selector.isDragged())\n\t\t\t{\n\t\t\t\tthis.showProposeControl();\n\t\t\t}\n\t\t}\n\t}\n\n\tproposeTime(params = {})\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\tparams = {};\n\t\t}\n\n\t\tlet\n\t\t\tcurTimestamp = Math.round(this.selector.getDateFrom().getTime() / (this.accuracy * 1000)) * this.accuracy * 1000,\n\t\t\tcurDate = new Date(curTimestamp),\n\t\t\tduration = this.selector.getDuration();\n\n\t\tcurDate.setSeconds(0,0);\n\t\tcurTimestamp = curDate.getTime();\n\n\t\tconst data = [...this.allEvents];\n\t\tdata.sort(function(a, b){return a.fromTimestamp - b.fromTimestamp});\n\n\t\tlet ts = curTimestamp;\n\t\twhile (true)\n\t\t{\n\t\t\tlet dateFrom = new Date(ts);\n\t\t\tlet dateTo = new Date(ts + duration);\n\n\t\t\tif (!this.isOneDayScale())\n\t\t\t{\n\t\t\t\tlet timeFrom = parseInt(dateFrom.getHours() + dateFrom.getMinutes() / 60);\n\t\t\t\tlet timeTo = parseInt(dateTo.getHours() + dateTo.getMinutes() / 60);\n\t\t\t\tif (timeTo === 0)\n\t\t\t\t{\n\t\t\t\t\ttimeTo = 24;\n\t\t\t\t}\n\n\t\t\t\tif (timeFrom <= this.shownScaleTimeFrom)\n\t\t\t\t{\n\t\t\t\t\tdateFrom.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\t\t\t\t\tts = dateFrom.getTime();\n\t\t\t\t\tdateTo = new Date(ts + duration);\n\t\t\t\t}\n\n\t\t\t\tif (timeTo > this.shownScaleTimeTo)\n\t\t\t\t{\n\t\t\t\t\tdateFrom = new Date(ts + Util.getDayLength() - 1000); // next day\n\t\t\t\t\tdateFrom.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\t\t\t\t\tts = dateFrom.getTime();\n\t\t\t\t\tdateTo = new Date(ts + duration);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tdateFrom.setHours(0, 0, 0, 0);\n\t\t\t\tdateTo.setHours(0, 0, 0, 0);\n\t\t\t}\n\n\t\t\tconst checkRes = this.checkTimePeriod(dateFrom, dateTo, data);\n\n\t\t\tif (checkRes === true)\n\t\t\t{\n\t\t\t\tif (dateTo.getTime() > this.scaleDateTo.getTime())\n\t\t\t\t{\n\t\t\t\t\tif ((dateTo.getTime() - this.scaleDateTo.getTime()) > this.proposeTimeLimit * Util.getDayLength()\n\t\t\t\t\t\t||\n\t\t\t\t\t\tparams.checkedFuture === true)\n\t\t\t\t\t{\n\t\t\t\t\t\tPlanner.showNoResultNotification();\n\t\t\t\t\t}\n\t\t\t\t\telse if (params.checkedFuture !== true)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.scaleDateTo = new Date(this.scaleDateTo.getTime() + Util.getDayLength() * this.proposeTimeLimit);\n\t\t\t\t\t\tthis.expandTimeline(this.scaleDateFrom, this.scaleDateTo);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (this.fullDayMode)\n\t\t\t\t\t\tdateTo = new Date(dateTo.getTime() - Util.getDayLength());\n\n\t\t\t\t\tthis.currentFromDate = dateFrom;\n\t\t\t\t\tthis.currentToDate = dateTo;\n\n\t\t\t\t\tthis.selector.update({\n\t\t\t\t\t\tfrom: dateFrom,\n\t\t\t\t\t\tto: dateTo,\n\t\t\t\t\t\tupdateScaleType:false,\n\t\t\t\t\t\tupdateScaleLimits:true,\n\t\t\t\t\t\tanimation: true,\n\t\t\t\t\t\tfocus: true\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.emit('onDateChange', new BaseEvent({data: {\n\t\t\t\t\t\tdateFrom: dateFrom,\n\t\t\t\t\t\tdateTo: dateTo,\n\t\t\t\t\t\tfullDay: this.fullDayMode\n\t\t\t\t\t}}));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (checkRes && checkRes.toTimestampReal)\n\t\t\t{\n\t\t\t\tts = checkRes.toTimestampReal;\n\t\t\t\tif (this.fullDayMode)\n\t\t\t\t{\n\t\t\t\t\tlet dt = new Date(ts + Util.getDayLength() - 1000); // next day\n\t\t\t\t\tdt.setHours(0, 0, 0, 0);\n\t\t\t\t\tts = dt.getTime();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckTimePeriod(fromDate, toDate, data)\n\t{\n\t\tif (!this.currentFromDate)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tconst timelineFrom = new Date();\n\t\ttimelineFrom.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\t\tif (this.fullDayMode)\n\t\t{\n\t\t\ttimelineFrom.setHours(0, 0, 0, 0);\n\t\t}\n\t\tif (fromDate && fromDate.getTime() < timelineFrom.getTime())\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tlet result = true;\n\t\tlet entry;\n\n\t\tif (!Type.isDate(fromDate) || !Type.isDate(toDate))\n\t\t{\n\t\t\treturn result;\n\t\t}\n\n\t\tlet fromTimestamp = fromDate.getTime();\n\t\tlet toTimestamp = toDate.getTime();\n\t\tconst cacheKey = fromTimestamp + '_' + toTimestamp;\n\t\tconst accuracy = 3 * 60 * 1000; // 3min\n\n\t\tif (Type.isArray(data))\n\t\t{\n\t\t\tfor (let i = 0; i < data.length; i++)\n\t\t\t{\n\t\t\t\tlet item = data[i];\n\n\t\t\t\tif ((item.fromTimestamp + accuracy) <= toTimestamp && ((item.toTimestampReal || item.toTimestamp) - accuracy) >= fromTimestamp)\n\t\t\t\t{\n\t\t\t\t\tresult = item;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (Type.isArray(this.entries))\n\t\t{\n\t\t\tlet\n\t\t\t\tentriesAccessibleIndex = {},\n\t\t\t\tselectorAccuracy = this.selectorAccuracy * 1000,\n\t\t\t\tentryId;\n\n\t\t\tif (this.checkTimeCache[cacheKey] !== undefined)\n\t\t\t{\n\t\t\t\tresult = this.checkTimeCache[cacheKey];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (entryId in this.accessibility)\n\t\t\t\t{\n\t\t\t\t\tif (this.accessibility.hasOwnProperty(entryId))\n\t\t\t\t\t{\n\t\t\t\t\t\tentry = this.entries.find(function(el){return el.id === entryId.toString();});\n\n\t\t\t\t\t\tif (!entry)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tentriesAccessibleIndex[entryId] = true;\n\t\t\t\t\t\tif (Type.isArray(this.accessibility[entryId]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (let i = 0; i < this.accessibility[entryId].length; i++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlet item = this.accessibility[entryId][i];\n\n\t\t\t\t\t\t\t\tif ((item.fromTimestamp + selectorAccuracy) <= toTimestamp && ((item.toTimestampReal || item.toTimestamp) - selectorAccuracy) >= fromTimestamp)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentriesAccessibleIndex[entryId] = false;\n\t\t\t\t\t\t\t\t\tresult = item;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.checkTimeCache[cacheKey] = result;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tclearCacheTime()\n\t{\n\t\tthis.checkTimeCache = {};\n\t}\n\n\tshowSettingsPopup()\n\t{\n\t\tlet\tsettingsDialogCont = Tag.render`<div class=\"calendar-planner-settings-popup\"></div>`;\n\t\tlet scaleRow = settingsDialogCont.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-settings-row\">\n\t\t\t\t<i>${Loc.getMessage('EC_PL_SETTINGS_SCALE')}:</i>\n\t\t\t</div>\n\t\t`);\n\t\tlet scaleWrap = scaleRow.appendChild(Tag.render`\n\t\t\t<span class=\"calendar-planner-option-container\"></span>\n\t\t`);\n\n\n\t\tif (this.fullDayMode)\n\t\t{\n\t\t\tscaleRow.title = Loc.getMessage('EC_PL_SETTINGS_SCALE_READONLY_TITLE');\n\t\t\tDom.addClass(scaleRow, 'calendar-planner-option-container-disabled');\n\t\t}\n\n\t\tthis.scaleTypes.forEach((scale)=>{\n\t\t\tscaleWrap.appendChild(Tag.render`<span class=\"calendar-planner-option-tab ${(scale === this.scaleType ? ' calendar-planner-option-tab-active' : '')}\" data-bx-planner-scale=\"${scale}\">${Loc.getMessage('EC_PL_SETTINGS_SCALE_' + scale.toUpperCase())}</span>`);\n\t\t});\n\n\n\t\t// Create and show settings popup\n\t\tlet popup = PopupWindowManager.create(\n\t\t\tthis.id + \"-settings-popup\",\n\t\t\tthis.DOM.settingsButton,\n\t\t\t{\n\t\t\t\tautoHide: true,\n\t\t\t\tcloseByEsc: true,\n\t\t\t\toffsetTop: -1,\n\t\t\t\toffsetLeft: 7,\n\t\t\t\tlightShadow: true,\n\t\t\t\tcontent: settingsDialogCont,\n\t\t\t\tzIndex: 4000,\n\t\t\t\tangle: {postion: 'top'},\n\t\t\t\tcacheable: false\n\t\t\t});\n\t\tpopup.show(true);\n\n\t\tEvent.bind(scaleWrap, 'click', (e) => {\n\t\t\tif (!this.fullDayMode)\n\t\t\t{\n\t\t\t\tlet\n\t\t\t\t\tnodeTarget = e.target || e.srcElement,\n\t\t\t\t\tscale = nodeTarget && nodeTarget.getAttribute && nodeTarget.getAttribute('data-bx-planner-scale');\n\n\t\t\t\tif (scale)\n\t\t\t\t{\n\t\t\t\t\tthis.changeScaleType(scale);\n\t\t\t\t\tpopup.close();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tchangeScaleType(scaleType)\n\t{\n\t\tif (scaleType !== this.scaleType)\n\t\t{\n\t\t\tthis.setScaleType(scaleType);\n\t\t\tthis.rebuild();\n\t\t}\n\t}\n\n\tsetFullDayMode(fullDayMode)\n\t{\n\t\tif (fullDayMode !== this.fullDayMode)\n\t\t{\n\t\t\tthis.fullDayMode = fullDayMode;\n\t\t\tif (fullDayMode && !this.isOneDayScale())\n\t\t\t{\n\t\t\t\tthis.savedScaleType = this.scaleType;\n\t\t\t\tthis.changeScaleType('1day');\n\t\t\t}\n\t\t\telse if (!fullDayMode && this.isOneDayScale() && this.savedScaleType)\n\t\t\t{\n\t\t\t\tthis.changeScaleType(this.savedScaleType);\n\t\t\t\tthis.savedScaleType = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic showNoResultNotification()\n\t{\n\t\talert(Loc.getMessage('EC_PL_PROPOSE_NO_RESULT'));\n\t}\n\n\tshowProposeControl()\n\t{\n\t\tif (!this.DOM.proposeTimeButton)\n\t\t{\n\t\t\tthis.DOM.proposeTimeButton = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-time-arrow-right\">\n\t\t\t\t\t<span class=\"calendar-planner-time-arrow-right-text\">\n\t\t\t\t\t\t${Loc.getMessage('EC_PL_PROPOSE')}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"calendar-planner-time-arrow-right-item\"></span>\n\t\t\t\t</div>\n\t\t\t`);\n\t\t\tEvent.bind(this.DOM.proposeTimeButton, 'click', this.proposeTime.bind(this));\n\n\t\t\tif (this.isLocked())\n\t\t\t{\n\t\t\t\tDom.addClass(this.DOM.proposeTimeButton, '--lock');\n\t\t\t}\n\t\t}\n\t\tthis.DOM.proposeTimeButton.style.display = \"block\";\n\t\tthis.DOM.proposeTimeButton.style.top = (this.DOM.timelineDataWrap.offsetTop + this.DOM.timelineDataWrap.offsetHeight / 2 - 16) + \"px\";\n\t}\n\n\thideProposeControl()\n\t{\n\t\tif (this.DOM.proposeTimeButton)\n\t\t{\n\t\t\tthis.DOM.proposeTimeButton.style.display = \"none\";\n\t\t}\n\t}\n\n\tmouseMoveHandler(e)\n\t{\n\t\tlet\n\t\t\ti, nodes,\n\t\t\tentryUid, parentTarget,\n\t\t\tprevEntry,\n\t\t\tmainContWrap = this.DOM.mainWrap,\n\t\t\ttarget = e.target || e.srcElement;\n\n\t\tentryUid = target.getAttribute('data-bx-planner-entry');\n\t\tif (!entryUid)\n\t\t{\n\t\t\tparentTarget = BX.findParent(target,\n\t\t\t\tfunction(node)\n\t\t\t\t{\n\t\t\t\t\tif (node == mainContWrap ||\n\t\t\t\t\t\tnode.getAttribute && node.getAttribute('data-bx-planner-entry')\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmainContWrap\n\t\t\t);\n\n\t\t\tif (parentTarget)\n\t\t\t{\n\t\t\t\tentryUid = target.getAttribute('data-bx-planner-entry')\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.removeClass(this.hoverRow, 'show');\n\t\t\t\tnodes = this.selector.controlWrap.querySelectorAll('.calendar-planner-selector-control-row.hover');\n\t\t\t\tfor (i = 0; i < nodes.length; i++)\n\t\t\t\t{\n\t\t\t\t\tDom.removeClass(nodes[i], 'hover');\n\t\t\t\t}\n\t\t\t\tprevEntry = this.getEntryByUniqueId(this.howerEntryId);\n\t\t\t\tif (prevEntry && prevEntry.selectWrap)\n\t\t\t\t{\n\t\t\t\t\tprevEntry.selectWrap.style.opacity = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (entryUid)\n\t\t{\n\t\t\tif (this.howerEntryId !== entryUid)\n\t\t\t{\n\t\t\t\tthis.howerEntryId = entryUid;\n\t\t\t\tlet entry = this.getEntryByUniqueId(entryUid);\n\t\t\t\tif (entry)\n\t\t\t\t{\n\t\t\t\t\tlet top = parseInt(entry.dataRowWrap.offsetTop);\n\t\t\t\t\tDom.addClass(this.hoverRow, 'show');\n\t\t\t\t\tthis.hoverRow.style.top = (top + 36) + 'px';\n\t\t\t\t\tthis.hoverRow.style.width = (parseInt(this.DOM.mainWrap.offsetWidth) + 5) + 'px';\n\n\t\t\t\t\tif (entry.selectorControlWrap)\n\t\t\t\t\t{\n\t\t\t\t\t\tnodes = this.selector.controlWrap.querySelectorAll('.calendar-planner-selector-control-row.hover');\n\t\t\t\t\t\tfor (i = 0; i < nodes.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tDom.removeClass(nodes[i], 'hover');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tDom.addClass(entry.selectorControlWrap, 'hover');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tshowLoader()\n\t{\n\t\tthis.hideLoader();\n\t\tthis.DOM.loader = this.DOM.mainWrap.appendChild(Util.getLoader(50));\n\t\tDom.addClass(this.DOM.loader, 'calendar-planner-main-loader');\n\t\tthis.loaderShown = true;\n\t}\n\n\thideLoader()\n\t{\n\t\tif(Type.isDomNode(this.DOM.loader))\n\t\t{\n\t\t\tDom.remove(this.DOM.loader);\n\t\t}\n\t\tthis.loaderShown = false;\n\t}\n\n\tisLoaderShown()\n\t{\n\t\treturn this.loaderShown;\n\t}\n\n\tisShown()\n\t{\n\t\treturn this.shown;\n\t}\n\n\tisBuilt()\n\t{\n\t\treturn this.built;\n\t}\n\n\tisLocked()\n\t{\n\t\treturn this.locked;\n\t}\n\n\tlock()\n\t{\n\t\tif (!this.DOM.lockScreen)\n\t\t{\n\t\t\tthis.DOM.lockScreen = Tag.render`\n\t\t\t\t<div class=\"calendar-planner-timeline-locker\">\n\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-container\">\n\t\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-top\">\n\t\t\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-icon\"></div>\n\t\t\t\t\t\t\t<div class=\"calendar-planner-timeline-text\">${Loc.getMessage('EC_PL_LOCKED_TITLE')}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-button\">\n\t\t\t\t\t\t\t<a href=\"javascript:void(0)\" onclick=\"top.BX.UI.InfoHelper.show('limit_crm_calender_planner');\" class=\"ui-btn ui-btn-sm ui-btn-light-border ui-btn-round\">${Loc.getMessage('EC_PL_UNLOCK_FEATURE')}</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tDom.addClass(this.DOM.timelineFixedWrap, '--lock');\n\t\tthis.DOM.timelineFixedWrap.appendChild(this.DOM.lockScreen);\n\t}\n\n\tdoSegmentsIntersect(x1, x2, y1, y2)\n\t{\n\t\treturn (x1 >= y1 && x1 <= y2)\n\t\t\t|| (x2 >= y1 && x2 <= y2)\n\t\t\t|| (x1 <= y1 && x2 >= y2);\n\t}\n\n\tsetReadonly()\n\t{\n\t\tthis.readonly = true;\n\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-readonly');\n\t}\n}\n"],"names":["Selector","EventEmitter","constructor","params","DOM","selectMode","currentDateFrom","Date","currentDateTo","currentFullDay","useAnimation","beforeBeginChange","setEventNamespace","getPosByDate","getDateByPos","getPosDateMap","getTimelineWidth","getScaleInfo","solidStatus","eventDragAndDrop","EventDragAndDrop","getEvents","render","timeNodes","timeWrap","Tag","wrap","renderMoreButton","ondrag","BX","False","ondragstart","titleNode","moreButton","shake","shakeClass","Dom","addClass","clearTimeout","shakeTimeout","setTimeout","removeClass","clearTimeNodes","offset","destroyTimeNode","showTimeNode","offsetTop","time","timezone","isWarning","warningClass","append","Type","isElementNode","remove","getWrap","getTitleNode","update","isPlainObject","updateScaleType","updateScaleLimits","animation","from","isDate","parseDate","to","fullDayMode","fullDay","undefined","setHours","dayCount","Math","ceil","getTime","boundaryFrom","show","focus","isSelectorInThePast","scaleDateFrom","isSelectorInTheFuture","scaleDateTo","style","display","alignCenter","fromPos","toPos","width","left","transit","toX","checkStatus","hide","startMove","document","addEventListener","preventDefault","passive","selectorIsDraged","selectorStartLeft","parseInt","selectorStartScrollLeft","timelineWrap","scrollLeft","onDragStart","body","move","x","pos","checkPosition","boundary","getDragBoundary","valueChanged","emit","getAutoScrollBoundary","getConstrainedBoundary","setBoundary","boundaryLeft","position","containerLeft","boundaryRight","size","containerRight","timelineFixedWrap","offsetWidth","scrollSpeed","getSpeed","setAutoScrollInterval","stopAutoScroll","x1","x2","floor","sqrt","abs","direction","scrollInterval","setInterval","setFinalTimeInterval","clearInterval","wasMagnetized","transition","showTitle","duration","getHours","shownTimeFrom","shownTimeTo","getMinutes","endMove","removeEventListener","getFinalFrom","right","getFinalTo","finalBoundary","hideTitle","setValue","startResize","selectorIsResized","selectorStartWidth","resize","toDate","timeTo","rightPos","min","Util","getDayLength","round","fromDate","getDate","selectorRoundedRightPos","roundedPos","roundPos","endResize","e","isDragged","selectorPos","mainContWrap","selectorWidth","lastFromDate","lastToDate","BaseEvent","data","dateFrom","dateTo","setSelectorStatus","status","selectorIsFree","max","scaleInfo","timeFrom","scaleTimeFrom","scaleTimeTo","getDay","leftDate","rightDate","fromX","triggerChangeEvents","stop","easing","start","finish","makeEaseOut","transitions","quart","step","state","complete","checkedPos","animate","selectorTitle","selector","innerHTML","date","format","removeAttribute","formatTime","appendChild","selectorHideTimeout","opacity","quad","timeoutName","selectorIndex","timeout","parseFloat","focusTimeout","screenDelta","selectorLeft","viewWidth","viewLeft","viewRight","newScrollLeft","getDuration","getDateFrom","getDateTo","Planner","config","entryStatusMap","h","y","q","n","tzAll","scaleTypes","savedScaleType","SCALE_OFFSET_BEFORE","SCALE_OFFSET_AFTER","EXPAND_OFFSET","EXPAND_DELAY","REBUILD_DELAY","maxTimelineSize","initialMinEntryRows","MIN_ENTRY_ROWS","MAX_ENTRY_ROWS","height","minWidth","minHeight","workTime","warningHoursFrom","warningHoursTo","scrollStep","shown","built","locked","shownScaleTimeFrom","shownScaleTimeTo","timelineCellWidthOrig","proposeTimeLimit","expandTimelineDelay","limitScaleSizeMode","checkTimeCache","entriesIndex","Map","id","dayOfWeekMonthFormat","userId","Loc","getMessage","SCALE_TIME_FORMAT","isAmPmMode","userTimezone","getUserSettings","timezoneName","currentTimezone","isStringFilled","entryTimezone","expandTimelineDebounce","Runtime","debounce","expandTimeline","showMoreUsersBind","showMoreUsers","bind","hideMoreUsersBind","hideMoreUsers","setConfig","currentFromDate","currentToDate","hourFrom","hourTo","extendScaleTimeLimits","updateScaleLimitsFromEntry","hideAnimation","isBuilt","build","bindEventHandlers","resizePlannerWidth","buildTimeline","adjustWidth","timelineInnerWrap","readonly","mainWrap","compactMode","entriesOuterWrap","adjustHeight","todayLocMessage","setScaleType","scaleType","showTimelineDayTitle","compactHeight","isOneDayScale","isInteger","minEntryRows","maxEntryRows","isArray","extendScaleTime","weekHolidays","yearHolidays","accuracy","clickSelectorScaleAccuracy","selectorAccuracy","entriesListWidth","timelineCellWidth","showEntiesHeader","showEntryName","allowAdjustCellWidth","adjustCellWidth","setScaleLimits","warningTimeFrom","work_time_start","warningTimeTo","work_time_end","toDateString","warningDateFrom","replace","warningDateTo","getDateHours","type","isString","fromTime","toTime","isNaN","SetLoadedDataLimits","loadedDataFrom","loadedDataTo","savedTimeFrom","savedTimeTo","extendTimelineToRight","extendTimelineToLeft","rebuildDebounce","scaleSize","isLocked","lock","window","plannerr","createSelector","renderEntriesOuterWrap","renderTimelineFixedWrap","renderSelectorPopup","renderTimezoneNoticeCount","renderSettingsButton","timelineVerticalConstraint","getAllEvents","posDateMap","scale","subscribe","handleSelectorChanges","doCheckSelectorStatus","onBeginChangeHandler","onStopAutoScrollHandler","hideTimezoneNotice","renderEntriesListHeader","renderEntriesListWrap","preventSelection","renderEntriesListTitleCounter","entriesListTitleCounter","entrieListWrap","renderTimelineVerticalConstraint","renderTimelineInnerWrap","isTodayButtonEnabled","onScrollHandler","renderTimelineScaleWrap","renderTimelineDataWrap","timelineScaleWrap","timelineDataWrap","renderTimelineAccessibilityWrap","accessibilityWrap","settingsButton","Event","showSettingsPopup","selectorPopup","hideSelectorPopup","doShowTimezoneNoticePopup","timezoneNoticeCount","renderTimezoneNoticeText","count","renderVacationNode","vacationNode","showHintPopup","hideHintPopup","node","hintPopup","dataHint","zIndex","overflow","clipPath","clearCache","lastTimelineKey","getTimelineShownKey","clean","scaleData","getScaleData","outerDayCont","dayTitle","cont","futureDayTitles","todayButtonPivotDay","i","length","scaleDayTitles","daystamp","timestamp","today","dayTitleClass","push","querySelector","todayTitleButton","firstElementChild","todayButtonClickHandler","className","dayStart","title","cell","create","props","html","mapDatePosRes","mapDatePos","timelineOffset","top","checkRebuildTimeout","buildTodayButtonWrap","todayButton","todayRightButton","todayButtonContainer","todayButtonWidth","todayButtonRightWidth","todayButtonLeftWidth","offsetLeft","updateTodayButtonVisibility","_checkRebuildTimeoutCount","rebuildTimeout","isShown","rebuild","extendedTimeFrom","extendedTimeTo","extendTimeline","isToRight","isToLeft","dayNodeList","querySelectorAll","nodeCountInDay","extendCount","cellsInsertedOnLeftCount","insertedNodes","pivotScaleDatumOfDayIndex","dayNode","pivotNodeOfDay","children","toTimestamp","fromTimestamp","insertedTimestamp","animationClass","insertedCell","insertBefore","insertedScaleDatum","value","splice","classList","add","scroll","midnight","setDate","visibleEvents","getVisibleEvents","animatedEvents","getEventsAfter","entries","accessibility","linear","event","updateTimelineAfterExtend","clearCacheTime","updateSelector","selectorParams","dontFocus","ts","scaleFrom","scaleTo","dayStamp","curDayStamp","prepareAccessibilityItem","entry","userOffset","getTimeZoneOffset","timezoneOffset","timeOffset","setSeconds","isFullDay","toReal","toTimestampReal","name","isVacation","addAccessibilityItem","hidden","displayEntryRow","rowWrap","statusNodeAll","getStatusNode","hasDifferentTimezone","showMoreUsersLink","attrs","uid","emailUser","statusNode","hasCorrectStatus","getEntryAvatarNode","Text","encode","entriesResourceListWrap","isNodeInDom","dataRowWrap","entriesDataRowMap","set","forEach","item","statusMessage","toUpperCase","hasMessage","getFormattedTimezone","imageNode","img","avatar","defaultAvatarClass","sharingUser","encodeURI","selectEntryRow","selectWrap","isParentForNode","selectedEntriesWrap","selectorControlWrap","selected","isEntrySelected","deSelectEntryRow","getEntryUniqueId","includes","getEntryByUniqueId","entryUniqueId","find","handleClick","handleMousedown","handleMousemove","handleMouseup","mouseWheelTimelineHandler","isRightClick","which","target","clickMousePos","getMousePos","nodeTarget","srcElement","accuracyMouse","timeline","findTarget","mouseDownMousePos","selectedDateFrom","selectorTimeLength","selectedDateTo","contains","mouseDown","startMousePos","startScrollTimeline","shouldShakeSelector","showSelectorPopup","isSelector","isNotMoreButton","timelineIsDraged","endScrollTimeline","checkTimelineScroll","mousePos","scrollTimeline","Browser","isMac","delta","deltaY","detail","wheelDelta","PreventDefault","updateWorkTimeNotice","parent","parentElement","doDisplayTodayButton","setFutureDayTitlesOffset","doAddLeftArrow","isTodayInFuture","doDisplayTodayRightButton","doAddRightArrow","reload","minScroll","maxScroll","scrollWidth","expandTimelineDirection","isLoaderShown","showLoader","timelineStartScrollLeft","nodeMetaType","parentCont","getAttribute","findParent","pageX","pageY","clientX","clientY","documentElement","clientLeft","scrollTop","clientTop","getScaleSize","hour","map","datePosMap","j","tsi","xi","tsj","xj","cellWidth","substeps","posAccuracy","borderStart","borderEnd","borderTimestamp","borderX","curInd","deltaTs","end","unbind","newHeight","offsetHeight","currentHeight","resizePlannerHeight","animationDuration","updateHeightTransition","updateHeight","timelineDataContHeight","proposeTimeButton","loadedTimelineSize","prevScaleDateFrom","prevScaleDateTo","oldDateTo","reloadData","hideLoader","currentPlannerWidth","widthDiff","timelineFromPosition","timelineToPosition","index","eventFromPosition","eventToPosition","doSegmentsIntersect","events","eventsAfter","updateTimezone","currentOffset","preparedAccessibility","allEvents","it","timezoneNameFormatted","sort","a","b","controlWrap","cutData","cutDataTitle","usersCount","cutEntries","dispDataCount","ind","accData","join","filter","checkTimePeriod","updateSelectorFromStatus","extendPlannerWatches","options","setFullDayMode","formatDate","isNeedToExpandTimeline","getData","hideWorkTimeNotice","isWorkTimeNoticeEnabled","selectorTime","updateVacationNotice","updateTimezoneNotice","hideVacationNotice","isDomNode","currentVacations","acc","vacation","isSelectorVisible","otherTimezoneEntries","isInternalUser","warningTimezoneEntries","entryTime","entryHours","entryNode","get","showEntryStatusTimezone","showTimezoneNotice","timelineLeft","timelineRight","selectorWrap","selectorRight","showTimezoneNoticeCount","showTimezoneNoticePopup","hideTimezoneNoticePopup","hideTimezoneNoticeCount","getSelectorOffset","marginBottom","isTimezoneNoticePopupShown","text","innerText","color","selectorPopupTimeout","selectorCenter","userWrapWidth","isArrayFilled","selectorStatus","hideProposeControl","showProposeControl","proposeTime","curTimestamp","curDate","checkRes","checkedFuture","showNoResultNotification","dt","timelineFrom","result","cacheKey","entryId","hasOwnProperty","el","toString","settingsDialogCont","scaleRow","scaleWrap","popup","PopupWindowManager","autoHide","closeByEsc","lightShadow","content","angle","postion","cacheable","changeScaleType","close","alert","mouseMoveHandler","nodes","entryUid","parentTarget","prevEntry","hoverRow","howerEntryId","loader","getLoader","loaderShown","lockScreen","y1","y2","setReadonly"],"mappings":"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"}

Anon7 - 2022
AnonSec Team