File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/modules/calendar/install/js/calendar/planner/dist/planner.bundle.js.map
Back
{"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\tmagnetDuration = 50;\n\tstickDistanceInMinutes = 30;\n\tmagnetizeDistanceInMinutes = 15;\n\n\tconstructor(params = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Planner.Selector');\n\n\t\tthis.selectMode = params.selectMode;\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\t\tthis.DOM.timelineWrap = params.timelineWrap;\n\t\tthis.DOM.timelineFixedWrap = params.timelineFixedWrap;\n\n\t\tthis.render();\n\t}\n\n\trender()\n\t{\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</div>`;\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\n\t\tif (this.selectMode)\n\t\t{\n\t\t\tresult.controlWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-planner-selector-control\"></div>`);\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.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\ttriggerChangeEvents: false,\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\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\t\t\tboundary = this.getAutoScrollBoundary(boundary);\n\t\t\tboundary = this.getConstrainedBoundary(boundary);\n\t\t\tthis.setBoundary(boundary);\n\t\t}\n\t}\n\n\tgetAutoScrollBoundary(boundary)\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();\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()\n\t{\n\t\tclearInterval(this.scrollInterval);\n\t\tthis.scrollInterval = false;\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\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\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\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.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\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\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.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\tif (this.selectMode && this.lastTouchedEntry)\n\t\t{\n\t\t\tlet\n\t\t\t\tentriesListWidth = this.compactMode ? 0 : this.entriesListWidth,\n\t\t\t\tselectorTitleLeft = parseInt(selector.style.left) - this.DOM.timelineWrap.scrollLeft + entriesListWidth + parseInt(selector.style.width) / 2,\n\t\t\t\tselectorTitleTop = parseInt(this.timelineDataCont.offsetTop) + parseInt(this.lastTouchedEntry.style.top) - 12;\n\n\t\t\tselectorTitle.style.top = selectorTitleTop + 'px';\n\t\t\tselectorTitle.style.left = selectorTitleLeft + 'px';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tselector.appendChild(selectorTitle);\n\t\t}\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};\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\tMIN_ENTRY_ROWS = 3;\n\tMAX_ENTRY_ROWS = 300;\n\twidth = 700;\n\theight = 84;\n\tminWidth = 700;\n\tminHeight = 84;\n\tworkTime = [8, 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\n\t\tthis.expandTimelineDebounce = Runtime.debounce(this.expandTimeline, this.EXPAND_DELAY, 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\t// Select mode\n\t\tif (params.selectEntriesMode !== undefined)\n\t\t{\n\t\t\tthis.selectMode = !!params.selectEntriesMode;\n\t\t}\n\t\telse if (this.selectMode === undefined)\n\t\t{\n\t\t\tthis.selectMode = false;\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\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\tif (!Type.isDomNode(this.DOM.wrap))\n\t\t{\n\t\t\tthrow new TypeError(\"Wrap is not DOM node\");\n\t\t}\n\n\t\tthis.DOM.wrap.style.width = this.width + 'px';\n\n\t\t// Left part - list of users and other resources\n\t\tlet entriesListWidth = this.compactMode ? 0 : this.entriesListWidth;\n\n\t\t// Timeline with accessibility information\n\t\tthis.DOM.mainWrap = this.DOM.wrap.appendChild(BX.create('DIV', {\n\t\t\tprops: {\n\t\t\t\tclassName: 'calendar-planner-main-container calendar-planner-main-container-resource'\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\tminHeight: this.minHeight + 'px',\n\t\t\t\theight: this.height + 'px',\n\t\t\t\twidth: this.width + 'px'\n\t\t\t}\n\t\t}));\n\n\t\tif (!this.showEntryName)\n\t\t{\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\tthis.DOM.entriesOuterWrap = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-user-container\" style=\"width: ${entriesListWidth}px; height: ${this.height}px;\"></div>\n\t\t`);\n\n\t\tUtil.preventSelection(this.DOM.entriesOuterWrap);\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-compact');\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\tif (this.showEntiesHeader !== false)\n\t\t{\n\t\t\tthis.DOM.entrieListHeader = this.DOM.entriesOuterWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-header\"></div>\n\t\t\t`)\n\t\t\t.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-general-info\"></div>\n\t\t\t`)\n\t\t\t.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-users-header\"></div>\n\t\t\t`);\n\n\t\t\tthis.entriesListTitleCounter = this.DOM.entrieListHeader.appendChild(Tag.render`\n\t\t\t\t<span class=\"calendar-planner-users-item\">\n\t\t\t\t\t${Loc.getMessage('EC_PL_ATTENDEES_TITLE') + ' '}\n\t\t\t\t</span>\n\t\t\t`)\n\t\t\t.appendChild(Tag.render`<span></span>`);\n\t\t}\n\n\t\tthis.DOM.entrieListWrap = this.DOM.entriesOuterWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-user-container-inner\"></div>\n\t\t`);\n\n\t\t// Fixed cont with specific width and height\n\t\tthis.DOM.timelineFixedWrap = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-wrapper\" style=\"height: ${this.height}px\"></div>\n\t\t`);\n\n\t\tif (this.isLocked())\n\t\t{\n\t\t\tthis.lock();\n\t\t}\n\n\t\t// overflow-y: hidden;\n\t\tthis.DOM.timelineVerticalConstraint = this.DOM.timelineFixedWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-constraint\"></div>\n\t\t`);\n\n\t\t// Movable cont - used to move scale and data containers easy and at the same time\n\t\tthis.DOM.timelineInnerWrap = this.DOM.timelineVerticalConstraint.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-inner-wrapper\" data-bx-planner-meta=\"timeline\"></div>\n\t\t`);\n\n\t\t// Scale container\n\t\tthis.DOM.timelineScaleWrap = this.DOM.timelineInnerWrap.appendChild(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\t// Accessibility container\n\t\tthis.DOM.timelineDataWrap = this.DOM.timelineInnerWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-container\" style=\"height: ${this.height}px\"></div>\n\t\t`);\n\t\t// Container with accessibility entries elements\n\t\tthis.DOM.accessibilityWrap = this.DOM.timelineDataWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-acc-wrap\"></div>\n\t\t`);\n\n\t\tif (this.isTodayButtonEnabled())\n\t\t{\n\t\t\tthis.DOM.timelineVerticalConstraint.addEventListener('scroll', this.updateTodayButtonVisibility.bind(this));\n\t\t}\n\n\t\t// Selector\n\t\tthis.selector = new Selector({\n\t\t\tselectMode: this.selectMode,\n\t\t\ttimelineFixedWrap: this.DOM.timelineFixedWrap,\n\t\t\ttimelineWrap: this.DOM.timelineVerticalConstraint,\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\tthis.DOM.timelineDataWrap.appendChild(this.selector.getWrap());\n\t\tthis.DOM.mainWrap.appendChild(this.selector.getTitleNode());\n\t\tthis.selector.subscribe('onChange', this.handleSelectorChanges.bind(this));\n\t\tthis.selector.subscribe('doCheckStatus', this.doCheckSelectorStatus.bind(this));\n\n\t\tif (this.selectMode)\n\t\t{\n\t\t\tthis.selectedEntriesWrap = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-timeline-select-entries-wrap\"></div>\n\t\t\t`);\n\n\t\t\tthis.hoverRow = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-timeline-hover-row\" style=\"top: 0; width: ${parseInt(this.DOM.mainWrap.offsetWidth)}px\"></div>\n\t\t\t`);\n\n\n\t\t\tEvent.bind(document, 'mousemove', this.mouseMoveHandler.bind(this));\n\t\t}\n\n\t\tif (!this.compactMode)\n\t\t{\n\t\t\tthis.DOM.settingsButton = this.DOM.mainWrap.appendChild(Tag.render`<div class=\"calendar-planner-settings-icon-container\" title=\"${Loc.getMessage('EC_PL_SETTINGS_SCALE')}\"><span class=\"calendar-planner-settings-title\">${Loc.getMessage('EC_PL_SETTINGS_SCALE')}</span><span class=\"calendar-planner-settings-icon\"></span></div>`);\n\t\t\tEvent.bind(this.DOM.settingsButton, 'click', () => this.showSettingsPopup());\n\t\t}\n\n\t\tthis.built = true;\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\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 + ' →';\n\t\tthis.todayButtonRightWidth = todayButton.offsetWidth;\n\t\ttodayButton.innerHTML = this.todayLocMessage + ' ←';\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(timeout = this.REBUILD_DELAY)\n\t{\n\t\tRuntime.debounce(this.rebuild, timeout, this)();\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.adjustHeight();\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\tthis.selector.focus(false, 0, true);\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\tstatic prepareAccessibilityItem(entry)\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\tentry.from.setSeconds(0,0);\n\t\tentry.fromTimestamp = entry.from.getTime();\n\n\t\tentry.to.setSeconds(0,0);\n\t\tentry.toTimestamp = entry.to.getTime();\n\n\t\tif (!Type.isDate(entry.toReal))\n\t\t{\n\t\t\t// Full day\n\t\t\tif (\n\t\t\t\t(entry.toTimestamp - entry.fromTimestamp) % Util.getDayLength() === 0\n\t\t\t\t&& BX.date.format('H:i', entry.toTimestamp / 1000) === '00:00'\n\t\t\t)\n\t\t\t{\n\t\t\t\tentry.toReal = new Date(entry.to.getTime() + Util.getDayLength());\n\t\t\t\tentry.toReal.setSeconds(0,0);\n\t\t\t\tentry.toTimestampReal = entry.toReal.getTime();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tentry.toReal = entry.to;\n\t\t\t\tentry.toTimestampReal = entry.toTimestamp;\n\t\t\t}\n\t\t}\n\n\t\treturn entry;\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\t\t+ (entry.type && entry.type === 'hr' ? ' calendar-planner-acc-entry-hr' : '')\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.title || entry.name)\n\t\t\t{\n\t\t\t\tentry.node.title = entry.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\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</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\"></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.showMoreUsers());\n\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\tif (entry.status && this.entryStatusMap[entry.status])\n\t\t\t{\n\t\t\t\trowWrap.appendChild(BX.create('SPAN', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'calendar-planner-user-status-icon '\n\t\t\t\t\t\t\t+ this.entryStatusMap[entry.status],\n\t\t\t\t\t\ttitle: Loc.getMessage('EC_PL_STATUS_'\n\t\t\t\t\t\t\t+ entry.status.toUpperCase())\n\t\t\t\t\t}\n\t\t\t\t}));\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.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(BX.create('SPAN', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'calendar-planner-entry-name'\n\t\t\t\t\t},\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\t'bx-tooltip-user-id': entry.id,\n\t\t\t\t\t\t'bx-tooltip-classname': 'calendar-planner-user-tooltip'\n\t\t\t\t\t},\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\twidth: (this.entriesListWidth - 42) + 'px'\n\t\t\t\t\t},\n\t\t\t\t\ttext: entry.name\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\tif (this.selectMode)\n\t\t{\n\t\t\tentry.selectorControlWrap = this.selector.controlWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-selector-control-row\" data-bx-planner-entry=\"${entry.uid}\" style=\"top: ${top - 4}px;\"></div>\n\t\t\t`);\n\n\t\t\tif (entry.selected)\n\t\t\t{\n\t\t\t\tthis.selectEntryRow(entry);\n\t\t\t}\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) => {\n\t\t\titem = Planner.prepareAccessibilityItem(item);\n\t\t\tif (item)\n\t\t\t{\n\t\t\t\tthis.addAccessibilityItem(item, dataRowWrap);\n\t\t\t}\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.selectMode &&\n\t\t\tDom.hasClass(nodeTarget, 'calendar-planner-selector-control-row'))\n\t\t{\n\t\t\tlet entry = this.getEntryByUniqueId(nodeTarget.getAttribute('data-bx-planner-entry'));\n\t\t\tif (entry)\n\t\t\t{\n\t\t\t\tif (!this.isEntrySelected(entry))\n\t\t\t\t{\n\t\t\t\t\tthis.selectEntryRow(entry);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.deSelectEntryRow(entry);\n\t\t\t\t}\n\n\t\t\t\tthis.selector.checkStatus();\n\n\t\t\t\tBX.onCustomEvent('OnCalendarPlannerSelectedEntriesOnChange', [{\n\t\t\t\t\tplannerId: this.id,\n\t\t\t\t\tentries: this.entries\n\t\t\t\t}]);\n\t\t\t}\n\t\t\treturn;\n\t\t}\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\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\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\n\t\t\tmousePos,\n\t\t\ttarget = e.target || e.srcElement;\n\n\t\tif (this.selectMode && target && target.getAttribute && target.getAttribute('data-bx-planner-entry'))\n\t\t{\n\t\t\tthis.lastTouchedEntry = target;\n\t\t}\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\tupdateTodayButtonVisibility(animation = true)\n\t{\n\t\tif (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 + ' ←';\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 + ' →';\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.update(this.entries, this.accessibility);\n\t\tthis.rebuildDebounce();\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.DOM.wrap.style.height = currentHeight + 'px';\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\tthis.height = height;\n\t\tif (animation)\n\t\t{\n\t\t\t// Stop animation before starting another one\n\t\t\tif(this.resizeAnimation)\n\t\t\t{\n\t\t\t\tthis.resizeAnimation.stop();\n\t\t\t\tthis.resizeAnimation = null;\n\t\t\t}\n\t\t\tthis.resizeAnimation = new BX.easing({\n\t\t\t\tduration: 800,\n\t\t\t\tstart: {height: parseInt(this.DOM.wrap.style.height)},\n\t\t\t\tfinish: {height: height},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quart),\n\t\t\t\tstep: (state) => {\n\t\t\t\t\tthis.resizePlannerHeight(state.height, false);\n\t\t\t\t},\n\t\t\t\tcomplete: () => {this.resizeAnimation = null;}\n\t\t\t});\n\t\t\tthis.resizeAnimation.animate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.DOM.wrap.style.height = height + 'px';\n\t\t\tthis.DOM.mainWrap.style.height = height + 'px';\n\t\t\tthis.DOM.timelineFixedWrap.style.height = height + 'px';\n\t\t\tlet timelineDataContHeight = this.DOM.entrieListWrap.offsetHeight + 3;\n\t\t\tthis.DOM.timelineDataWrap.style.height = timelineDataContHeight + 'px';\n\t\t\t// Todo: resize selector\n\t\t\t//this.selector.wrap.style.height = (timelineDataContHeight + 10) + 'px';\n\t\t\tthis.DOM.entriesOuterWrap.style.height = height + 'px';\n\n\t\t\tif (this.DOM.proposeTimeButton && this.DOM.proposeTimeButton.style.display !== \"none\")\n\t\t\t{\n\t\t\t\tthis.DOM.proposeTimeButton.style.top = (this.DOM.timelineDataWrap.offsetTop + timelineDataContHeight / 2 - 16) + \"px\";\n\t\t\t}\n\t\t}\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\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\tscaleDateFrom = this.scaleDateFrom;\n\t\tif (!scaleDateTo)\n\t\t\tscaleDateTo = this.scaleDateTo;\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\tupdate(entries = [], accessibility = {})\n\t{\n\t\tDom.clean(this.DOM.entrieListWrap);\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\tthis.entries = entries;\n\t\tthis.accessibility = accessibility;\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 cutAmount = 0;\n\t\tlet dispDataCount = 0;\n\n\t\tentries.forEach((entry, ind) => {\n\t\t\tentry.uid = Planner.getEntryUniqueId(entry);\n\n\t\t\tlet accData = Type.isArray(accessibility[entry.uid]) ? accessibility[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\tcutAmount++;\n\t\t\t\tcutDataTitle.push(entry.name);\n\t\t\t\taccData.forEach((item) => {\n\t\t\t\t\titem = Planner.prepareAccessibilityItem(item);\n\t\t\t\t\tif (item)\n\t\t\t\t\t{\n\t\t\t\t\t\tcutData.push(item);\n\t\t\t\t\t}\n\t\t\t\t});\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\t\t\tthis.emit('onDisplayAttendees', new BaseEvent({\n\t\t\t\tdata: {\n\t\t\t\t\tusersCount: usersCount\n\t\t\t\t}\n\t\t\t}));\n\n\t\tif (cutAmount > 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') + ' (' + cutAmount + ')',\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') + ' (' + cutAmount + ')',\n\t\t\t\t\ttype: 'moreLink'\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}\n\n\tupdateAccessibility(accessibility)\n\t{\n\t\tthis.accessibility = accessibility;\n\t\tif (Type.isPlainObject(accessibility))\n\t\t{\n\t\t\tlet key;\n\t\t\tfor (key in accessibility)\n\t\t\t{\n\t\t\t\tif (accessibility.hasOwnProperty(key)\n\t\t\t\t\t&& Type.isArray(accessibility[key])\n\t\t\t\t\t&& accessibility[key].length)\n\t\t\t\t{\n\t\t\t\t\tlet wrap = this.entriesDataRowMap.get(key);\n\t\t\t\t\tif (Type.isDomNode(wrap))\n\t\t\t\t\t{\n\t\t\t\t\t\taccessibility[key].forEach((event) => {\n\t\t\t\t\t\t\tevent = Planner.prepareAccessibilityItem(event);\n\t\t\t\t\t\t\tif (event)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.addAccessibilityItem(event, wrap)\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}\n\t\t}\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 ((to.getTime() > this.scaleDateTo.getTime())\n\t\t\t\t||\n\t\t\t\tfrom.getTime() < this.scaleDateFrom.getTime())\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\t\t}\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\t\t}\n\t}\n\n\tgetAllEvents()\n\t{\n\t\tconst events = [];\n\t\tfor (const entryId in this.accessibility)\n\t\t{\n\t\t\tif (!this.accessibility.hasOwnProperty(entryId) || !Type.isArray(this.accessibility[entryId]))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const event of this.accessibility[entryId])\n\t\t\t{\n\t\t\t\tevents.push(event)\n\t\t\t}\n\t\t}\n\t\treturn events;\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\t\t\tdata = [], k, i;\n\n\t\tcurDate.setSeconds(0,0);\n\t\tcurTimestamp = curDate.getTime();\n\n\t\tfor (k in this.accessibility)\n\t\t{\n\t\t\tif (this.accessibility.hasOwnProperty(k) && this.accessibility[k] && this.accessibility[k].length > 0)\n\t\t\t{\n\t\t\t\tfor (i = 0; i < this.accessibility[k].length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (this.accessibility[k][i].toTimestampReal >= curTimestamp)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet item = Planner.prepareAccessibilityItem(this.accessibility[k][i]);\n\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata.push(item);\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\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.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\t\t\t\tif (item.type && item.type === 'hr')\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\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 || this.selectMode && !entry.selected)\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\t\t\t\t\t\t\t\tif (item.type && item.type === 'hr')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\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\tcheckEntryTimePeriod(entry, fromDate, toDate)\n\t{\n\t\tlet data = [], i;\n\t\tif (entry && entry.id && BX.type.isArray(this.accessibility[entry.id]))\n\t\t{\n\t\t\tfor (i = 0; i < this.accessibility[entry.id].length; i++)\n\t\t\t{\n\t\t\t\tlet item = Planner.prepareAccessibilityItem(this.accessibility[entry.id][i]);\n\t\t\t\tif (item)\n\t\t\t\t{\n\t\t\t\t\tdata.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.checkTimePeriod(fromDate, toDate, data) === true;\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"],"names":["Selector","EventEmitter","constructor","params","DOM","selectMode","currentDateFrom","Date","currentDateTo","currentFullDay","useAnimation","magnetDuration","stickDistanceInMinutes","magnetizeDistanceInMinutes","setEventNamespace","getPosByDate","getDateByPos","getPosDateMap","getTimelineWidth","getScaleInfo","solidStatus","eventDragAndDrop","EventDragAndDrop","getEvents","timelineWrap","timelineFixedWrap","render","wrap","Tag","ondrag","BX","False","ondragstart","titleNode","result","controlWrap","appendChild","getWrap","getTitleNode","update","Type","isPlainObject","updateScaleType","updateScaleLimits","animation","from","isDate","parseDate","to","fullDayMode","fullDay","undefined","setHours","dayCount","Math","ceil","getTime","show","focus","isSelectorInThePast","scaleDateFrom","isSelectorInTheFuture","scaleDateTo","style","display","alignCenter","fromPos","toPos","width","left","transit","toX","triggerChangeEvents","checkStatus","hide","startMove","document","addEventListener","preventDefault","passive","selectorIsDraged","selectorStartLeft","parseInt","selectorStartScrollLeft","scrollLeft","onDragStart","Dom","addClass","body","move","x","pos","checkPosition","boundary","getDragBoundary","getAutoScrollBoundary","getConstrainedBoundary","setBoundary","boundaryLeft","position","containerLeft","boundaryRight","size","containerRight","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","round","Util","getDayLength","fromDate","getDate","selectorRoundedRightPos","roundedPos","roundPos","endResize","e","isDragged","selectorPos","removeClass","mainContWrap","selectorWidth","lastFromDate","lastToDate","emit","BaseEvent","data","dateFrom","dateTo","setSelectorStatus","status","selectorIsFree","max","scaleInfo","timeFrom","scaleTimeFrom","scaleTimeTo","getDay","leftDate","rightDate","fromX","stop","easing","start","finish","makeEaseOut","transitions","quart","step","state","complete","checkedPos","setTimeout","animate","selectorTitle","selector","innerHTML","date","format","removeAttribute","formatTime","lastTouchedEntry","entriesListWidth","compactMode","selectorTitleLeft","selectorTitleTop","timelineDataCont","offsetTop","top","selectorHideTimeout","clearTimeout","opacity","quad","timeoutName","selectorIndex","timeout","parseFloat","focusTimeout","screenDelta","selectorLeft","viewWidth","viewLeft","viewRight","newScrollLeft","getDuration","getDateFrom","getDateTo","Planner","config","entryStatusMap","h","y","q","n","scaleTypes","savedScaleType","SCALE_OFFSET_BEFORE","SCALE_OFFSET_AFTER","EXPAND_OFFSET","EXPAND_DELAY","REBUILD_DELAY","maxTimelineSize","MIN_ENTRY_ROWS","MAX_ENTRY_ROWS","height","minWidth","minHeight","workTime","scrollStep","shown","built","locked","shownScaleTimeFrom","shownScaleTimeTo","timelineCellWidthOrig","proposeTimeLimit","expandTimelineDelay","limitScaleSizeMode","checkTimeCache","entriesIndex","Map","id","dayOfWeekMonthFormat","userId","Loc","getMessage","SCALE_TIME_FORMAT","isAmPmMode","expandTimelineDebounce","Runtime","debounce","expandTimeline","setConfig","currentFromDate","currentToDate","hourFrom","hourTo","extendScaleTimeLimits","updateScaleLimitsFromEntry","hideAnimation","isBuilt","build","bindEventHandlers","resizePlannerWidth","buildTimeline","adjustWidth","timelineInnerWrap","readonly","mainWrap","entriesOuterWrap","adjustHeight","todayLocMessage","setScaleType","scaleType","showTimelineDayTitle","compactHeight","isOneDayScale","selectEntriesMode","isInteger","minEntryRows","maxEntryRows","isArray","extendScaleTime","weekHolidays","yearHolidays","accuracy","clickSelectorScaleAccuracy","selectorAccuracy","timelineCellWidth","showEntiesHeader","showEntryName","allowAdjustCellWidth","adjustCellWidth","setScaleLimits","type","isString","fromTime","toTime","isNaN","SetLoadedDataLimits","loadedDataFrom","loadedDataTo","savedTimeFrom","savedTimeTo","extendTimelineToRight","extendTimelineToLeft","rebuildDebounce","scaleSize","isDomNode","TypeError","create","props","className","preventSelection","entrieListHeader","entriesListTitleCounter","entrieListWrap","isLocked","lock","timelineVerticalConstraint","timelineScaleWrap","timelineDataWrap","accessibilityWrap","isTodayButtonEnabled","updateTodayButtonVisibility","bind","getAllEvents","posDateMap","scale","subscribe","handleSelectorChanges","doCheckSelectorStatus","selectedEntriesWrap","hoverRow","Event","mouseMoveHandler","settingsButton","showSettingsPopup","clearCache","lastTimelineKey","getTimelineShownKey","clean","scaleData","getScaleData","outerDayCont","dayTitle","cont","futureDayTitles","todayButtonPivotDay","i","length","scaleDayTitles","daystamp","timestamp","today","dayTitleClass","push","querySelector","todayTitleButton","firstElementChild","todayButtonClickHandler","dayStart","title","cell","html","mapDatePosRes","mapDatePos","timelineOffset","checkRebuildTimeout","buildTodayButtonWrap","todayButton","remove","todayRightButton","todayButtonContainer","todayButtonWidth","todayButtonRightWidth","todayButtonLeftWidth","offsetLeft","_checkRebuildTimeoutCount","rebuildTimeout","isElementNode","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","node","updateTimelineAfterExtend","clearCacheTime","updateSelector","selectorParams","ts","scaleFrom","scaleTo","time","dayStamp","curDayStamp","prepareAccessibilityItem","entry","setSeconds","toReal","toTimestampReal","addAccessibilityItem","hidden","name","displayEntryRow","rowWrap","showMoreUsersLink","showMoreUsers","attrs","uid","emailUser","toUpperCase","getEntryAvatarNode","text","Text","encode","entriesResourceListWrap","isNodeInDom","dataRowWrap","selectorControlWrap","selected","selectEntryRow","entriesDataRowMap","set","forEach","item","imageNode","img","avatar","defaultAvatarClass","sharingUser","encodeURI","selectWrap","isParentForNode","isEntrySelected","deSelectEntryRow","getEntryUniqueId","includes","getEntryByUniqueId","entryUniqueId","find","handleClick","handleMousedown","handleMousemove","handleMouseup","mouseWheelTimelineHandler","window","isRightClick","which","target","clickMousePos","getMousePos","nodeTarget","srcElement","accuracyMouse","hasClass","getAttribute","onCustomEvent","plannerId","timeline","findTarget","mouseDownMousePos","selectedDateFrom","selectorTimeLength","selectedDateTo","mouseDown","startMousePos","startScrollTimeline","timelineIsDraged","endScrollTimeline","checkTimelineScroll","mousePos","scrollTimeline","Browser","isMac","delta","deltaY","detail","wheelDelta","PreventDefault","parent","parentElement","doDisplayTodayButton","setFutureDayTitlesOffset","doAddLeftArrow","isTodayInFuture","doDisplayTodayRightButton","doAddRightArrow","reload","minScroll","maxScroll","scrollWidth","expandTimelineDirection","isLoaderShown","showLoader","timelineStartScrollLeft","nodeMetaType","parentCont","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","newHeight","offsetHeight","currentHeight","resizePlannerHeight","resizeAnimation","timelineDataContHeight","proposeTimeButton","loadedTimelineSize","prevScaleDateFrom","prevScaleDateTo","oldDateTo","reloadData","hideLoader","currentPlannerWidth","widthDiff","timelineFromPosition","timelineToPosition","index","eventFromPosition","eventToPosition","doSegmentsIntersect","events","eventsAfter","sort","a","b","cutData","cutDataTitle","usersCount","cutAmount","dispDataCount","ind","accData","join","checkTimePeriod","updateSelectorFromStatus","extendPlannerWatches","updateAccessibility","key","hasOwnProperty","get","options","setFullDayMode","formatDate","getData","entryId","selectorStatus","hideProposeControl","showProposeControl","proposeTime","curTimestamp","curDate","k","checkRes","checkedFuture","showNoResultNotification","dt","timelineFrom","cacheKey","el","toString","checkEntryTimePeriod","settingsDialogCont","scaleRow","scaleWrap","popup","PopupWindowManager","autoHide","closeByEsc","lightShadow","content","zIndex","angle","postion","cacheable","changeScaleType","close","alert","nodes","entryUid","parentTarget","prevEntry","howerEntryId","loader","getLoader","loaderShown","lockScreen","y1","y2"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings