{"version":3,"file":"js/1dfaf6b583635165a2b0.chunk.js","mappings":"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","sources":["webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/DatePicker/DatePickerInput.tsx","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/DatePicker/DatePickerTooltip.tsx","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/DatePicker/DatePickerTooltipBtn.tsx","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/DatePicker/const.ts","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/DatePicker/DatePicker.tsx","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/Icons/Calendar.tsx","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/const.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/parseMask.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/utils/string.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/utils/defer.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/utils/helpers.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/utils/selection.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/InputMask.jsx","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/utils/environment.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/InputMask/processChange.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/vendors/air-datepicker/dist/js/datepicker.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/vendors/air-datepicker/src/js/i18n/datepicker.de.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/vendors/air-datepicker/src/js/i18n/datepicker.en.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/vendors/air-datepicker/src/js/i18n/datepicker.hr.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/vendors/air-datepicker/src/js/i18n/datepicker.nl.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/vendors/air-datepicker/src/js/i18n/datepicker.pl.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/vendors/air-datepicker/src/js/i18n/datepicker.sk.js","webpack://helloFlexReact/./Themes/Glued/Content/ReactSharedScripts/components/DatePicker/styles/index.module.scss"],"sourcesContent":["import React, { FC, useContext, useRef } from 'react';\r\nimport { InputMask } from '../InputMask';\r\nimport { codes } from '../../data/translations';\r\nimport classes from './styles/index.module.scss';\r\nimport { TranslationContext } from '../../modules/translations';\r\nimport classNames from 'classnames';\r\nimport { DatePickerProps, HandleDatePickerInputChangeFn } from './types';\r\n\r\ntype PickedPartialKeys = 'size' | 'disabled' | 'invalid' | 'value' | 'onFocus' | 'onBlur' | 'onKeyDown' | 'dataTestId';\r\ntype PickedRequiredKeys = 'name' | 'dateFormat';\r\ntype DatePickerInputProps = Pick &\r\n\tRequired> & {\r\n\t\tonChange: HandleDatePickerInputChangeFn;\r\n\t};\r\n\r\nexport const DatePickerInput: FC = ({\r\n\tdateFormat,\r\n\tdataTestId,\r\n\tsize,\r\n\tdisabled,\r\n\tvalue,\r\n\tname,\r\n\tonChange,\r\n\tonBlur,\r\n\tonFocus,\r\n\tonKeyDown,\r\n\tinvalid,\r\n}) => {\r\n\tconst inputRef = useRef(null);\r\n\tconst { translate } = useContext(TranslationContext);\r\n\tconst datePickerClasses = classNames(classes.datePickerInput, {\r\n\t\t[classes.datePickerInput_disabled]: disabled,\r\n\t\t[classes.datePickerInput_invalid]: invalid,\r\n\t\t[classes.datePickerInput_small]: size === 'small',\r\n\t\t[classes.datePickerInput_medium]: size === 'medium',\r\n\t\t[classes.datePickerInput_large]: size === 'large',\r\n\t});\r\n\r\n\tconst mask = dateFormat.replace(/\\w/g, '9');\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{() => (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n","import React, { FC, useEffect, useRef } from 'react';\r\nimport { TooltipTip } from '../Tooltip';\r\nimport store from '../../store/configureStore';\r\nimport moment from 'moment';\r\nimport $ from 'jquery';\r\nimport '../../vendors/air-datepicker/dist/css/datepicker.css';\r\nimport '../../vendors/air-datepicker/dist/js/datepicker';\r\nimport '../../vendors/air-datepicker/src/js/i18n/datepicker.en';\r\nimport '../../vendors/air-datepicker/src/js/i18n/datepicker.nl';\r\nimport '../../vendors/air-datepicker/src/js/i18n/datepicker.pl';\r\nimport '../../vendors/air-datepicker/src/js/i18n/datepicker.de';\r\nimport '../../vendors/air-datepicker/src/js/i18n/datepicker.sk';\r\nimport '../../vendors/air-datepicker/src/js/i18n/datepicker.hr';\r\nimport classes from './styles/index.module.scss';\r\nimport './styles/datePickerCalendar.scss';\r\n\r\nimport { AirDatePickerOptions, DatePickerProps, HandleSelectAirDatePickerFn } from './types';\r\n\r\ntype PickedPartialKeys = 'value';\r\ntype PickedRequiredKeys = 'dateFormat' | 'minDate' | 'maxDate';\r\ntype DatePickerTooltipProps = Pick &\r\n\tRequired> & {\r\n\t\thandleSelectAirDatePicker: HandleSelectAirDatePickerFn;\r\n\t};\r\n\r\nexport const DatePickerTooltip: FC> = ({\r\n\tdateFormat,\r\n\thandleSelectAirDatePicker,\r\n\tvalue,\r\n\tminDate,\r\n\tmaxDate,\r\n}) => {\r\n\tconst airDatePickerRef = useRef(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst {\r\n\t\t\ttranslations: { activeLanguage },\r\n\t\t} = store.getState();\r\n\t\tconst $airDatePicker = $(airDatePickerRef.current);\r\n\t\tconst isValidDate = moment(value, dateFormat.toUpperCase(), true).isValid();\r\n\t\tconst minDateMoment = moment(minDate, dateFormat.toUpperCase(), true);\r\n\t\tconst maxDateMoment = moment(maxDate, dateFormat.toUpperCase(), true);\r\n\r\n\t\tconst airDatePickerOptions: AirDatePickerOptions = {\r\n\t\t\tlanguage: activeLanguage,\r\n\t\t\tdateFormat,\r\n\t\t\tfirstDay: 1,\r\n\t\t\tonSelect(formattedDate) {\r\n\t\t\t\thandleSelectAirDatePicker(formattedDate);\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tif (minDateMoment.isValid()) {\r\n\t\t\t// @ts-ignore\r\n\t\t\tairDatePickerOptions.minDate = minDateMoment._d!;\r\n\t\t}\r\n\r\n\t\tif (maxDateMoment.isValid()) {\r\n\t\t\t// @ts-ignore\r\n\t\t\tairDatePickerOptions.maxDate = maxDateMoment._d;\r\n\t\t}\r\n\r\n\t\t$airDatePicker.datepicker(airDatePickerOptions);\r\n\r\n\t\t$airDatePicker.click((e) => e.stopPropagation());\r\n\r\n\t\tif (typeof value !== 'undefined' && isValidDate) {\r\n\t\t\tconst [dd, mm, yyyy] = value.toString().split('-');\r\n\r\n\t\t\t$airDatePicker.data('datepicker').selectDate(new Date(+yyyy, +mm - 1, +dd));\r\n\t\t}\r\n\t\t//eslint-disable-next-line\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n","import React, { FC } from 'react';\r\nimport classNames from 'classnames';\r\nimport TooltipBtn from '../TooltipBtn';\r\nimport { DatePickerTooltip } from './DatePickerTooltip';\r\nimport classes from './styles/index.module.scss';\r\nimport { DatePickerProps, HandleSelectAirDatePickerFn } from './types';\r\nimport { Calendar } from '../Icons/Calendar';\r\n\r\ntype PickedPartialKeys = 'size' | 'disabled' | 'value' | 'tooltipPosition' | 'tooltipAlign' | 'tooltipBtnGroupName';\r\ntype PickedRequiredKeys = 'dateFormat' | 'minDate' | 'maxDate';\r\ntype DatePickerTooltipBtnProps = Pick &\r\n\tRequired> & {\r\n\t\thandleSelectAirDatePicker: HandleSelectAirDatePickerFn;\r\n\t};\r\n\r\nexport const DatePickerTooltipBtn: FC> = ({\r\n\tdateFormat,\r\n\tsize,\r\n\tdisabled,\r\n\tvalue,\r\n\ttooltipPosition = 'bottom',\r\n\ttooltipAlign = 'end',\r\n\thandleSelectAirDatePicker,\r\n\tminDate,\r\n\tmaxDate,\r\n\ttooltipBtnGroupName,\r\n}) => {\r\n\tconst datePickerBtnClasses = classNames(classes.datePickerBtn, {\r\n\t\t[classes.datePickerBtn_disable]: disabled,\r\n\t\t[classes.datePickerBtn_small]: size === 'small',\r\n\t\t[classes.datePickerBtn_medium]: size === 'medium',\r\n\t\t[classes.datePickerBtn_large]: size === 'large',\r\n\t});\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t}\r\n\t\t\tclassName={datePickerBtnClasses}\r\n\t\t\ttooltipPosition={tooltipPosition}\r\n\t\t\ttooltipAlign={tooltipAlign}\r\n\t\t\tdisabled={disabled}\r\n\t\t\tgroupName={tooltipBtnGroupName}\r\n\t\t\ttabIndex={-1}\r\n\t\t>\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n","export const EMPTY_FUNCTION = () => {};\r\nexport const HELLOFLEX_DATEPICKER_CLASS = 'helloflex-datepicker';\r\n","import React, { FC, memo, useEffect, useRef } from 'react';\r\nimport classNames from 'classnames';\r\nimport { DatePickerInput } from './DatePickerInput';\r\nimport { DatePickerTooltipBtn } from './DatePickerTooltipBtn';\r\nimport classes from './styles/index.module.scss';\r\nimport { closeActiveTooltip, closeLastTooltipByName } from '../TooltipBtn';\r\nimport { isNull } from '../../predicates/type';\r\nimport { DatePickerProps, HandleDatePickerInputChangeFn, HandleSelectAirDatePickerFn } from './types';\r\nimport { EMPTY_FUNCTION, HELLOFLEX_DATEPICKER_CLASS } from './const';\r\n\r\nexport const DatePicker: FC> = memo(\r\n\t({\r\n\t\tdateFormat = 'dd-mm-yyyy',\r\n\t\tdataTestId,\r\n\t\tsize,\r\n\t\tdisabled,\r\n\t\tvalue,\r\n\t\tname = '',\r\n\t\ttooltipPosition,\r\n\t\ttooltipAlign,\r\n\t\tonChange = EMPTY_FUNCTION,\r\n\t\tonBlur = EMPTY_FUNCTION,\r\n\t\tonFocus = EMPTY_FUNCTION,\r\n\t\tonKeyDown = EMPTY_FUNCTION,\r\n\t\tonSelect = EMPTY_FUNCTION,\r\n\t\ttooltipBtnGroupName,\r\n\t\tminDate = '',\r\n\t\tmaxDate = '',\r\n\t\tinvalid,\r\n\t\tstyle,\r\n\t\tclassName,\r\n\t}) => {\r\n\t\tconst prevValueRef = useRef(null);\r\n\t\tconst rootClasses = classNames(className, classes.datePicker, HELLOFLEX_DATEPICKER_CLASS);\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tconst { current: prevValue } = prevValueRef;\r\n\r\n\t\t\tif (isNull(prevValue) || value === prevValue) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcloseLastTooltipByName(tooltipBtnGroupName);\r\n\t\t\tprevValueRef.current = value;\r\n\t\t}, [tooltipBtnGroupName, value]);\r\n\r\n\t\tconst setDatePickerInputValue = (value: string) => {\r\n\t\t\tif (disabled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tonChange(value);\r\n\t\t};\r\n\r\n\t\tconst handleDatePickerInputChange: HandleDatePickerInputChangeFn = (event) => {\r\n\t\t\tsetDatePickerInputValue(event.target.value);\r\n\t\t};\r\n\r\n\t\tconst handleSelectAirDatePicker: HandleSelectAirDatePickerFn = (newValue) => {\r\n\t\t\tif (value === newValue) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetDatePickerInputValue(newValue);\r\n\t\t\tonSelect(newValue);\r\n\t\t\tcloseActiveTooltip();\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n);\r\n\r\nDatePicker.displayName = 'DatePicker';\r\n","/* eslint max-len: 0 */\r\nimport React, { FC } from 'react';\r\nimport { SvgComponentProps } from './types';\r\nimport { Svg } from './Svg';\r\n\r\nconst Calendar: FC = (props) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport { Calendar };\r\n","export const defaultFormatChars = {\r\n\t9: '[0-9]',\r\n\ta: '[A-Za-z]',\r\n\t'*': '[A-Za-z0-9]',\r\n};\r\n\r\nexport const defaultMaskChar = '_';\r\n","import { defaultFormatChars, defaultMaskChar } from './const';\r\n\r\nexport default function (mask, maskChar, formatChars) {\r\n\tlet parsedMaskString = '';\r\n\tlet prefix = '';\r\n\tlet lastEditablePosition = null;\r\n\tconst permanents = [];\r\n\r\n\tif (maskChar === undefined) {\r\n\t\tmaskChar = defaultMaskChar;\r\n\t}\r\n\r\n\tif (formatChars == null) {\r\n\t\tformatChars = defaultFormatChars;\r\n\t}\r\n\r\n\tif (!mask || typeof mask !== 'string') {\r\n\t\treturn {\r\n\t\t\tmaskChar,\r\n\t\t\tformatChars,\r\n\t\t\tmask: null,\r\n\t\t\tprefix: null,\r\n\t\t\tlastEditablePosition: null,\r\n\t\t\tpermanents: [],\r\n\t\t};\r\n\t}\r\n\r\n\tlet isPermanent = false;\r\n\tmask.split('').forEach((character) => {\r\n\t\tif (!isPermanent && character === '\\\\') {\r\n\t\t\tisPermanent = true;\r\n\t\t} else {\r\n\t\t\tif (isPermanent || !formatChars[character]) {\r\n\t\t\t\tpermanents.push(parsedMaskString.length);\r\n\t\t\t\tif (parsedMaskString.length === permanents.length - 1) {\r\n\t\t\t\t\tprefix += character;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlastEditablePosition = parsedMaskString.length + 1;\r\n\t\t\t}\r\n\t\t\tparsedMaskString += character;\r\n\t\t\tisPermanent = false;\r\n\t\t}\r\n\t});\r\n\r\n\treturn {\r\n\t\tmaskChar,\r\n\t\tformatChars,\r\n\t\tprefix,\r\n\t\tmask: parsedMaskString,\r\n\t\tlastEditablePosition,\r\n\t\tpermanents,\r\n\t};\r\n}\r\n","/* eslint no-use-before-define: [\"error\", { functions: false }] */\r\n\r\nexport function isPermanentCharacter(maskOptions, pos) {\r\n\treturn maskOptions.permanents.indexOf(pos) !== -1;\r\n}\r\n\r\nexport function isAllowedCharacter(maskOptions, pos, character) {\r\n\tconst { mask, formatChars } = maskOptions;\r\n\r\n\tif (!character) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (isPermanentCharacter(maskOptions, pos)) {\r\n\t\treturn mask[pos] === character;\r\n\t}\r\n\r\n\tconst ruleChar = mask[pos];\r\n\tconst charRule = formatChars[ruleChar];\r\n\r\n\treturn new RegExp(charRule).test(character);\r\n}\r\n\r\nexport function isEmpty(maskOptions, value) {\r\n\treturn value.split('').every((character, i) => {\r\n\t\treturn isPermanentCharacter(maskOptions, i) || !isAllowedCharacter(maskOptions, i, character);\r\n\t});\r\n}\r\n\r\nexport function getFilledLength(maskOptions, value) {\r\n\tconst { maskChar, prefix } = maskOptions;\r\n\r\n\tif (!maskChar) {\r\n\t\twhile (value.length > prefix.length && isPermanentCharacter(maskOptions, value.length - 1)) {\r\n\t\t\tvalue = value.slice(0, value.length - 1);\r\n\t\t}\r\n\t\treturn value.length;\r\n\t}\r\n\r\n\tlet filledLength = prefix.length;\r\n\tfor (let i = value.length; i >= prefix.length; i--) {\r\n\t\tconst character = value[i];\r\n\t\tconst isEnteredCharacter =\r\n\t\t\t!isPermanentCharacter(maskOptions, i) && isAllowedCharacter(maskOptions, i, character);\r\n\t\tif (isEnteredCharacter) {\r\n\t\t\tfilledLength = i + 1;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn filledLength;\r\n}\r\n\r\nexport function isFilled(maskOptions, value) {\r\n\treturn getFilledLength(maskOptions, value) === maskOptions.mask.length;\r\n}\r\n\r\nexport function formatValue(maskOptions, value) {\r\n\tconst { maskChar, mask, prefix } = maskOptions;\r\n\r\n\tif (!maskChar) {\r\n\t\tvalue = insertString(maskOptions, '', value, 0);\r\n\r\n\t\tif (value.length < prefix.length) {\r\n\t\t\tvalue = prefix;\r\n\t\t}\r\n\r\n\t\twhile (value.length < mask.length && isPermanentCharacter(maskOptions, value.length)) {\r\n\t\t\tvalue += mask[value.length];\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tif (value) {\r\n\t\tconst emptyValue = formatValue(maskOptions, '');\r\n\t\treturn insertString(maskOptions, emptyValue, value, 0);\r\n\t}\r\n\r\n\tfor (let i = 0; i < mask.length; i++) {\r\n\t\tif (isPermanentCharacter(maskOptions, i)) {\r\n\t\t\tvalue += mask[i];\r\n\t\t} else {\r\n\t\t\tvalue += maskChar;\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nexport function clearRange(maskOptions, value, start, len) {\r\n\tconst end = start + len;\r\n\tconst { maskChar, mask, prefix } = maskOptions;\r\n\tconst arrayValue = value.split('');\r\n\r\n\tif (!maskChar) {\r\n\t\t// remove any permanent chars after clear range, they will be added back by formatValue\r\n\t\tfor (let i = end; i < arrayValue.length; i++) {\r\n\t\t\tif (isPermanentCharacter(maskOptions, i)) {\r\n\t\t\t\tarrayValue[i] = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstart = Math.max(prefix.length, start);\r\n\t\tarrayValue.splice(start, end - start);\r\n\t\tvalue = arrayValue.join('');\r\n\r\n\t\treturn formatValue(maskOptions, value);\r\n\t}\r\n\r\n\treturn arrayValue\r\n\t\t.map((character, i) => {\r\n\t\t\tif (i < start || i >= end) {\r\n\t\t\t\treturn character;\r\n\t\t\t}\r\n\t\t\tif (isPermanentCharacter(maskOptions, i)) {\r\n\t\t\t\treturn mask[i];\r\n\t\t\t}\r\n\t\t\treturn maskChar;\r\n\t\t})\r\n\t\t.join('');\r\n}\r\n\r\nexport function insertString(maskOptions, value, insertStr, insertPosition) {\r\n\tconst { mask, maskChar, prefix } = maskOptions;\r\n\tconst arrayInsertStr = insertStr.split('');\r\n\tconst isInputFilled = isFilled(maskOptions, value);\r\n\r\n\tconst isUsablePosition = (pos, character) => {\r\n\t\treturn !isPermanentCharacter(maskOptions, pos) || character === mask[pos];\r\n\t};\r\n\tconst isUsableCharacter = (character, pos) => {\r\n\t\treturn !maskChar || !isPermanentCharacter(maskOptions, pos) || character !== maskChar;\r\n\t};\r\n\r\n\tif (!maskChar && insertPosition > value.length) {\r\n\t\tvalue += mask.slice(value.length, insertPosition);\r\n\t}\r\n\r\n\tarrayInsertStr.every((insertCharacter) => {\r\n\t\twhile (!isUsablePosition(insertPosition, insertCharacter)) {\r\n\t\t\tif (insertPosition >= value.length) {\r\n\t\t\t\tvalue += mask[insertPosition];\r\n\t\t\t}\r\n\r\n\t\t\tif (!isUsableCharacter(insertCharacter, insertPosition)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tinsertPosition++;\r\n\r\n\t\t\t// stop iteration if maximum value length reached\r\n\t\t\tif (insertPosition >= mask.length) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst isAllowed =\r\n\t\t\tisAllowedCharacter(maskOptions, insertPosition, insertCharacter) || insertCharacter === maskChar;\r\n\t\tif (!isAllowed) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (insertPosition < value.length) {\r\n\t\t\tif (maskChar || isInputFilled || insertPosition < prefix.length) {\r\n\t\t\t\tvalue = value.slice(0, insertPosition) + insertCharacter + value.slice(insertPosition + 1);\r\n\t\t\t} else {\r\n\t\t\t\tvalue = value.slice(0, insertPosition) + insertCharacter + value.slice(insertPosition);\r\n\t\t\t\tvalue = formatValue(maskOptions, value);\r\n\t\t\t}\r\n\t\t} else if (!maskChar) {\r\n\t\t\tvalue += insertCharacter;\r\n\t\t}\r\n\r\n\t\tinsertPosition++;\r\n\r\n\t\t// stop iteration if maximum value length reached\r\n\t\treturn insertPosition < mask.length;\r\n\t});\r\n\r\n\treturn value;\r\n}\r\n\r\nexport function getInsertStringLength(maskOptions, value, insertStr, insertPosition) {\r\n\tconst { mask, maskChar } = maskOptions;\r\n\tconst arrayInsertStr = insertStr.split('');\r\n\tconst initialInsertPosition = insertPosition;\r\n\r\n\tconst isUsablePosition = (pos, character) => {\r\n\t\treturn !isPermanentCharacter(maskOptions, pos) || character === mask[pos];\r\n\t};\r\n\r\n\tarrayInsertStr.every((insertCharacter) => {\r\n\t\twhile (!isUsablePosition(insertPosition, insertCharacter)) {\r\n\t\t\tinsertPosition++;\r\n\r\n\t\t\t// stop iteration if maximum value length reached\r\n\t\t\tif (insertPosition >= mask.length) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst isAllowed =\r\n\t\t\tisAllowedCharacter(maskOptions, insertPosition, insertCharacter) || insertCharacter === maskChar;\r\n\r\n\t\tif (isAllowed) {\r\n\t\t\tinsertPosition++;\r\n\t\t}\r\n\r\n\t\t// stop iteration if maximum value length reached\r\n\t\treturn insertPosition < mask.length;\r\n\t});\r\n\r\n\treturn insertPosition - initialInsertPosition;\r\n}\r\n\r\nexport function getLeftEditablePosition(maskOptions, pos) {\r\n\tfor (let i = pos; i >= 0; --i) {\r\n\t\tif (!isPermanentCharacter(maskOptions, i)) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nexport function getRightEditablePosition(maskOptions, pos) {\r\n\tconst { mask } = maskOptions;\r\n\tfor (let i = pos; i < mask.length; ++i) {\r\n\t\tif (!isPermanentCharacter(maskOptions, i)) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nexport function getStringValue(value) {\r\n\treturn !value && value !== 0 ? '' : value + '';\r\n}\r\n","function getRequestAnimationFrame() {\r\n\treturn window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\r\n}\r\n\r\nfunction getCancelAnimationFrame() {\r\n\treturn (\r\n\t\twindow.cancelAnimationFrame ||\r\n\t\twindow.webkitCancelRequestAnimationFrame ||\r\n\t\twindow.webkitCancelAnimationFrame ||\r\n\t\twindow.mozCancelAnimationFrame\r\n\t);\r\n}\r\n\r\nexport function defer(fn) {\r\n\tconst hasCancelAnimationFrame = !!getCancelAnimationFrame();\r\n\tlet deferFn;\r\n\r\n\tif (hasCancelAnimationFrame) {\r\n\t\tdeferFn = getRequestAnimationFrame();\r\n\t} else {\r\n\t\tdeferFn = () => setTimeout(fn, 1000 / 60);\r\n\t}\r\n\r\n\treturn deferFn(fn);\r\n}\r\n\r\nexport function cancelDefer(deferId) {\r\n\tconst cancelFn = getCancelAnimationFrame() || clearTimeout;\r\n\r\n\tcancelFn(deferId);\r\n}\r\n","export function isDOMElement(element) {\r\n\treturn typeof HTMLElement === 'object'\r\n\t\t? element instanceof HTMLElement // DOM2\r\n\t\t: element.nodeType === 1 && typeof element.nodeName === 'string';\r\n}\r\n\r\nexport function isFunction(value) {\r\n\treturn typeof value === 'function';\r\n}\r\n","export function setInputSelection(input, start, end) {\r\n\tif ('selectionStart' in input && 'selectionEnd' in input) {\r\n\t\tinput.selectionStart = start;\r\n\t\tinput.selectionEnd = end;\r\n\t} else {\r\n\t\tconst range = input.createTextRange();\r\n\t\trange.collapse(true);\r\n\t\trange.moveStart('character', start);\r\n\t\trange.moveEnd('character', end - start);\r\n\t\trange.select();\r\n\t}\r\n}\r\n\r\nexport function getInputSelection(input) {\r\n\tlet start = 0;\r\n\tlet end = 0;\r\n\r\n\tif ('selectionStart' in input && 'selectionEnd' in input) {\r\n\t\tstart = input.selectionStart;\r\n\t\tend = input.selectionEnd;\r\n\t} else {\r\n\t\tconst range = document.selection.createRange();\r\n\t\tif (range.parentElement() === input) {\r\n\t\t\tstart = -range.moveStart('character', -input.value.length);\r\n\t\t\tend = -range.moveEnd('character', -input.value.length);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tstart,\r\n\t\tend,\r\n\t\tlength: end - start,\r\n\t};\r\n}\r\n","import React from 'react';\r\nimport parseMask from './parseMask';\r\nimport processChange from './processChange';\r\nimport { cancelDefer, defer } from './utils/defer';\r\nimport { isWindowsPhoneBrowser } from './utils/environment';\r\nimport { isFunction } from './utils/helpers';\r\nimport { getInputSelection, setInputSelection } from './utils/selection';\r\nimport {\r\n\tformatValue,\r\n\tgetFilledLength,\r\n\tgetRightEditablePosition,\r\n\tgetStringValue,\r\n\tisEmpty,\r\n\tisFilled,\r\n} from './utils/string';\r\n\r\nexport class InputMask extends React.Component {\r\n\tfocused = false;\r\n\tmounted = false;\r\n\tpreviousSelection = null;\r\n\tselectionDeferId = null;\r\n\tsaveSelectionLoopDeferId = null;\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tconst { mask, maskChar, formatChars, alwaysShowMask, beforeMaskedValueChange } = props;\r\n\t\tlet { defaultValue, value } = props;\r\n\r\n\t\tthis.maskOptions = parseMask(mask, maskChar, formatChars);\r\n\r\n\t\tif (defaultValue == null) {\r\n\t\t\tdefaultValue = '';\r\n\t\t}\r\n\t\tif (value == null) {\r\n\t\t\tvalue = defaultValue;\r\n\t\t}\r\n\r\n\t\tlet newValue = getStringValue(value);\r\n\r\n\t\tif (this.maskOptions.mask && (alwaysShowMask || newValue)) {\r\n\t\t\tnewValue = formatValue(this.maskOptions, newValue);\r\n\r\n\t\t\tif (isFunction(beforeMaskedValueChange)) {\r\n\t\t\t\tlet oldValue = props.value;\r\n\t\t\t\tif (props.value == null) {\r\n\t\t\t\t\toldValue = defaultValue;\r\n\t\t\t\t}\r\n\t\t\t\toldValue = getStringValue(oldValue);\r\n\r\n\t\t\t\tconst modifiedValue = beforeMaskedValueChange(\r\n\t\t\t\t\t{ value: newValue, selection: null },\r\n\t\t\t\t\t{ value: oldValue, selection: null },\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.getBeforeMaskedValueChangeConfig(),\r\n\t\t\t\t);\r\n\r\n\t\t\t\tnewValue = modifiedValue.value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.value = newValue;\r\n\t\tthis.localInputRef = React.createRef();\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.mounted = true;\r\n\r\n\t\t// workaround for react-test-renderer\r\n\t\t// https://github.com/sanniassin/react-input-mask/issues/147\r\n\t\tif (!this.getInputDOMNode()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isWindowsPhoneBrowser = isWindowsPhoneBrowser();\r\n\r\n\t\tif (this.maskOptions.mask && this.getInputValue() !== this.value) {\r\n\t\t\tthis.setInputValue(this.value);\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidUpdate() {\r\n\t\tconst { previousSelection } = this;\r\n\t\tconst { beforeMaskedValueChange, alwaysShowMask, mask, maskChar, formatChars } = this.props;\r\n\t\tconst previousMaskOptions = this.maskOptions;\r\n\t\tconst showEmpty = alwaysShowMask || this.isFocused();\r\n\t\tconst hasValue = this.props.value != null;\r\n\t\tlet newValue = hasValue ? getStringValue(this.props.value) : this.value;\r\n\t\tlet cursorPosition = previousSelection ? previousSelection.start : null;\r\n\r\n\t\tthis.maskOptions = parseMask(mask, maskChar, formatChars);\r\n\r\n\t\tif (!this.maskOptions.mask) {\r\n\t\t\tif (previousMaskOptions.mask) {\r\n\t\t\t\tthis.stopSaveSelectionLoop();\r\n\r\n\t\t\t\t// render depends on this.maskOptions and this.value,\r\n\t\t\t\t// call forceUpdate to keep it in sync\r\n\t\t\t\tthis.forceUpdate();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t} else if (!previousMaskOptions.mask && this.isFocused()) {\r\n\t\t\tthis.runSaveSelectionLoop();\r\n\t\t}\r\n\r\n\t\tconst isMaskChanged = this.maskOptions.mask && this.maskOptions.mask !== previousMaskOptions.mask;\r\n\r\n\t\tif (!previousMaskOptions.mask && !hasValue) {\r\n\t\t\tnewValue = this.getInputValue();\r\n\t\t}\r\n\r\n\t\tif (isMaskChanged || (this.maskOptions.mask && (newValue || showEmpty))) {\r\n\t\t\tnewValue = formatValue(this.maskOptions, newValue);\r\n\t\t}\r\n\r\n\t\tif (isMaskChanged) {\r\n\t\t\tconst filledLength = getFilledLength(this.maskOptions, newValue);\r\n\t\t\tif (cursorPosition === null || filledLength < cursorPosition) {\r\n\t\t\t\tif (isFilled(this.maskOptions, newValue)) {\r\n\t\t\t\t\tcursorPosition = filledLength;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcursorPosition = getRightEditablePosition(this.maskOptions, filledLength);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.maskOptions.mask &&\r\n\t\t\tisEmpty(this.maskOptions, newValue) &&\r\n\t\t\t!showEmpty &&\r\n\t\t\t(!hasValue || !this.props.value)\r\n\t\t) {\r\n\t\t\tnewValue = '';\r\n\t\t}\r\n\r\n\t\tlet newSelection = { start: cursorPosition, end: cursorPosition };\r\n\r\n\t\tif (isFunction(beforeMaskedValueChange)) {\r\n\t\t\tconst modifiedValue = beforeMaskedValueChange(\r\n\t\t\t\t{ value: newValue, selection: newSelection },\r\n\t\t\t\t{ value: this.value, selection: this.previousSelection },\r\n\t\t\t\tnull,\r\n\t\t\t\tthis.getBeforeMaskedValueChangeConfig(),\r\n\t\t\t);\r\n\t\t\tnewValue = modifiedValue.value;\r\n\t\t\tnewSelection = modifiedValue.selection;\r\n\t\t}\r\n\r\n\t\tthis.value = newValue;\r\n\t\tconst isValueChanged = this.getInputValue() !== this.value;\r\n\r\n\t\t// render depends on this.maskOptions and this.value,\r\n\t\t// call forceUpdate to keep it in sync\r\n\t\tif (isValueChanged) {\r\n\t\t\tthis.setInputValue(this.value);\r\n\t\t\tthis.forceUpdate();\r\n\t\t} else if (isMaskChanged) {\r\n\t\t\tthis.forceUpdate();\r\n\t\t}\r\n\r\n\t\tlet isSelectionChanged = false;\r\n\t\tif (newSelection.start != null && newSelection.end != null) {\r\n\t\t\tisSelectionChanged =\r\n\t\t\t\t!previousSelection ||\r\n\t\t\t\tpreviousSelection.start !== newSelection.start ||\r\n\t\t\t\tpreviousSelection.end !== newSelection.end;\r\n\t\t}\r\n\r\n\t\tif (isSelectionChanged || isValueChanged) {\r\n\t\t\tthis.setSelection(newSelection.start, newSelection.end);\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tthis.mounted = false;\r\n\t\tif (this.selectionDeferId !== null) {\r\n\t\t\tcancelDefer(this.selectionDeferId);\r\n\t\t}\r\n\t\tthis.stopSaveSelectionLoop();\r\n\t}\r\n\r\n\tsaveSelectionLoop = () => {\r\n\t\tthis.previousSelection = this.getSelection();\r\n\t\tthis.saveSelectionLoopDeferId = defer(this.saveSelectionLoop);\r\n\t};\r\n\r\n\trunSaveSelectionLoop = () => {\r\n\t\tif (this.saveSelectionLoopDeferId === null) {\r\n\t\t\tthis.saveSelectionLoop();\r\n\t\t}\r\n\t};\r\n\r\n\tstopSaveSelectionLoop = () => {\r\n\t\tif (this.saveSelectionLoopDeferId !== null) {\r\n\t\t\tcancelDefer(this.saveSelectionLoopDeferId);\r\n\t\t\tthis.saveSelectionLoopDeferId = null;\r\n\t\t\tthis.previousSelection = null;\r\n\t\t}\r\n\t};\r\n\r\n\tget inputRef() {\r\n\t\tif (typeof this.props.inputRef !== 'undefined') {\r\n\t\t\treturn this.props.inputRef;\r\n\t\t}\r\n\r\n\t\treturn this.localInputRef;\r\n\t}\r\n\r\n\tgetInputDOMNode = () => {\r\n\t\tif (!this.mounted) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet input = this.inputRef.current;\r\n\r\n\t\tif (input === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst isDOMNode = typeof window !== 'undefined' && input instanceof window.Element;\r\n\r\n\t\t// workaround for react-test-renderer\r\n\t\t// https://github.com/sanniassin/react-input-mask/issues/147\r\n\t\tif (input && !isDOMNode) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t// if (input.nodeName !== 'INPUT') {\r\n\t\t// \tinput = input.querySelector('input');\r\n\t\t// }\r\n\r\n\t\tif (!input) {\r\n\t\t\tthrow new Error('react-input-mask: inputComponent does not contain input node');\r\n\t\t}\r\n\r\n\t\treturn input;\r\n\t};\r\n\r\n\tgetInputValue = () => {\r\n\t\tconst input = this.getInputDOMNode();\r\n\t\tif (!input) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn input.value;\r\n\t};\r\n\r\n\tsetInputValue = (value) => {\r\n\t\tconst input = this.getInputDOMNode();\r\n\t\tif (!input) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.value = value;\r\n\t\tinput.value = value;\r\n\t};\r\n\r\n\tsetCursorToEnd = () => {\r\n\t\tconst filledLength = getFilledLength(this.maskOptions, this.value);\r\n\t\tconst pos = getRightEditablePosition(this.maskOptions, filledLength);\r\n\t\tif (pos !== null) {\r\n\t\t\tthis.setCursorPosition(pos);\r\n\t\t}\r\n\t};\r\n\r\n\tsetSelection = (start, end, options = {}) => {\r\n\t\tconst input = this.getInputDOMNode();\r\n\t\tconst isFocused = this.isFocused();\r\n\t\t// don't change selection on unfocused input\r\n\t\t// because Safari sets focus on selection change (#154)\r\n\t\tif (!input || !isFocused) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst { deferred } = options;\r\n\r\n\t\tif (!deferred) {\r\n\t\t\tsetInputSelection(input, start, end);\r\n\t\t}\r\n\r\n\t\tif (this.selectionDeferId !== null) {\r\n\t\t\tcancelDefer(this.selectionDeferId);\r\n\t\t}\r\n\r\n\t\t// deferred selection update is required for pre-Lollipop Android browser,\r\n\t\t// but for consistent behavior we do it for all browsers\r\n\t\tthis.selectionDeferId = defer(() => {\r\n\t\t\tthis.selectionDeferId = null;\r\n\t\t\tsetInputSelection(input, start, end);\r\n\t\t});\r\n\r\n\t\tthis.previousSelection = {\r\n\t\t\tstart,\r\n\t\t\tend,\r\n\t\t\tlength: Math.abs(end - start),\r\n\t\t};\r\n\t};\r\n\r\n\tgetSelection = () => {\r\n\t\tconst input = this.getInputDOMNode();\r\n\r\n\t\treturn getInputSelection(input);\r\n\t};\r\n\r\n\tgetCursorPosition = () => {\r\n\t\treturn this.getSelection().start;\r\n\t};\r\n\r\n\tsetCursorPosition = (pos) => {\r\n\t\tthis.setSelection(pos, pos);\r\n\t};\r\n\r\n\tisFocused = () => {\r\n\t\treturn this.focused;\r\n\t};\r\n\r\n\tgetBeforeMaskedValueChangeConfig = () => {\r\n\t\tconst { mask, maskChar, permanents, formatChars } = this.maskOptions;\r\n\t\tconst { alwaysShowMask } = this.props;\r\n\r\n\t\treturn {\r\n\t\t\tmask,\r\n\t\t\tmaskChar,\r\n\t\t\tpermanents,\r\n\t\t\talwaysShowMask: !!alwaysShowMask,\r\n\t\t\tformatChars,\r\n\t\t};\r\n\t};\r\n\r\n\tisInputAutofilled = (value, selection, previousValue, previousSelection) => {\r\n\t\tconst input = this.getInputDOMNode();\r\n\r\n\t\t// only check for positive match because it will be false negative\r\n\t\t// in case of autofill simulation in tests\r\n\t\t//\r\n\t\t// input.matches throws an exception if selector isn't supported\r\n\t\ttry {\r\n\t\t\tif (input.matches(':-webkit-autofill')) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t} catch (e) {}\r\n\r\n\t\t// if input isn't focused then change event must have been triggered\r\n\t\t// either by autofill or event simulation in tests\r\n\t\tif (!this.focused) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// if cursor has moved to the end while previousSelection forbids it\r\n\t\t// then it must be autofill\r\n\t\treturn previousSelection.end < previousValue.length && selection.end === value.length;\r\n\t};\r\n\r\n\tonChange = (event) => {\r\n\t\tconst { beforePasteState } = this;\r\n\t\tlet { previousSelection } = this;\r\n\t\tconst { beforeMaskedValueChange } = this.props;\r\n\t\tlet value = this.getInputValue();\r\n\t\tlet previousValue = this.value;\r\n\t\tlet selection = this.getSelection();\r\n\r\n\t\t// autofill replaces entire value, ignore old one\r\n\t\t// https://github.com/sanniassin/react-input-mask/issues/113\r\n\t\tif (this.isInputAutofilled(value, selection, previousValue, previousSelection)) {\r\n\t\t\tpreviousValue = formatValue(this.maskOptions, '');\r\n\t\t\tpreviousSelection = { start: 0, end: 0, length: 0 };\r\n\t\t}\r\n\r\n\t\t// set value and selection as if we haven't\r\n\t\t// cleared input in onPaste handler\r\n\t\tif (beforePasteState) {\r\n\t\t\tpreviousSelection = beforePasteState.selection;\r\n\t\t\tpreviousValue = beforePasteState.value;\r\n\t\t\tselection = {\r\n\t\t\t\tstart: previousSelection.start + value.length,\r\n\t\t\t\tend: previousSelection.start + value.length,\r\n\t\t\t\tlength: 0,\r\n\t\t\t};\r\n\t\t\tvalue =\r\n\t\t\t\tpreviousValue.slice(0, previousSelection.start) + value + previousValue.slice(previousSelection.end);\r\n\t\t\tthis.beforePasteState = null;\r\n\t\t}\r\n\r\n\t\tconst changedState = processChange(this.maskOptions, value, selection, previousValue, previousSelection);\r\n\t\tconst enteredString = changedState.enteredString;\r\n\t\tlet newSelection = changedState.selection;\r\n\t\tlet newValue = changedState.value;\r\n\r\n\t\tif (isFunction(beforeMaskedValueChange)) {\r\n\t\t\tconst modifiedValue = beforeMaskedValueChange(\r\n\t\t\t\t{ value: newValue, selection: newSelection },\r\n\t\t\t\t{ value: previousValue, selection: previousSelection },\r\n\t\t\t\tenteredString,\r\n\t\t\t\tthis.getBeforeMaskedValueChangeConfig(),\r\n\t\t\t);\r\n\t\t\tnewValue = modifiedValue.value;\r\n\t\t\tnewSelection = modifiedValue.selection;\r\n\t\t}\r\n\r\n\t\tthis.setInputValue(newValue);\r\n\r\n\t\tif (isFunction(this.props.onChange)) {\r\n\t\t\tthis.props.onChange(event);\r\n\t\t}\r\n\r\n\t\tif (this.isWindowsPhoneBrowser) {\r\n\t\t\tthis.setSelection(newSelection.start, newSelection.end, { deferred: true });\r\n\t\t} else {\r\n\t\t\tthis.setSelection(newSelection.start, newSelection.end);\r\n\t\t}\r\n\t};\r\n\r\n\tonFocus = (event) => {\r\n\t\tconst { beforeMaskedValueChange } = this.props;\r\n\t\tconst { mask, prefix } = this.maskOptions;\r\n\t\tthis.focused = true;\r\n\r\n\t\t// if autoFocus is set, onFocus triggers before componentDidMount\r\n\t\tthis.mounted = true;\r\n\r\n\t\tif (mask) {\r\n\t\t\tif (!this.value) {\r\n\t\t\t\tconst emptyValue = formatValue(this.maskOptions, prefix);\r\n\t\t\t\tlet newValue = formatValue(this.maskOptions, emptyValue);\r\n\t\t\t\tconst filledLength = getFilledLength(this.maskOptions, newValue);\r\n\t\t\t\tconst cursorPosition = getRightEditablePosition(this.maskOptions, filledLength);\r\n\t\t\t\tlet newSelection = { start: cursorPosition, end: cursorPosition };\r\n\r\n\t\t\t\tif (isFunction(beforeMaskedValueChange)) {\r\n\t\t\t\t\tconst modifiedValue = beforeMaskedValueChange(\r\n\t\t\t\t\t\t{ value: newValue, selection: newSelection },\r\n\t\t\t\t\t\t{ value: this.value, selection: null },\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tthis.getBeforeMaskedValueChangeConfig(),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tnewValue = modifiedValue.value;\r\n\t\t\t\t\tnewSelection = modifiedValue.selection;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst isInputValueChanged = newValue !== this.getInputValue();\r\n\r\n\t\t\t\tif (isInputValueChanged) {\r\n\t\t\t\t\tthis.setInputValue(newValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isInputValueChanged && isFunction(this.props.onChange)) {\r\n\t\t\t\t\tthis.props.onChange(event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setSelection(newSelection.start, newSelection.end);\r\n\t\t\t} else if (getFilledLength(this.maskOptions, this.value) < this.maskOptions.mask.length) {\r\n\t\t\t\tthis.setCursorToEnd();\r\n\t\t\t}\r\n\r\n\t\t\tthis.runSaveSelectionLoop();\r\n\t\t}\r\n\r\n\t\tif (isFunction(this.props.onFocus)) {\r\n\t\t\tthis.props.onFocus(event);\r\n\t\t}\r\n\t};\r\n\r\n\tonBlur = (event) => {\r\n\t\tconst { beforeMaskedValueChange } = this.props;\r\n\t\tconst { mask } = this.maskOptions;\r\n\r\n\t\tthis.stopSaveSelectionLoop();\r\n\t\tthis.focused = false;\r\n\r\n\t\tif (mask && !this.props.alwaysShowMask && isEmpty(this.maskOptions, this.value)) {\r\n\t\t\tlet newValue = '';\r\n\r\n\t\t\tif (isFunction(beforeMaskedValueChange)) {\r\n\t\t\t\tconst modifiedValue = beforeMaskedValueChange(\r\n\t\t\t\t\t{ value: newValue, selection: null },\r\n\t\t\t\t\t{ value: this.value, selection: this.previousSelection },\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.getBeforeMaskedValueChangeConfig(),\r\n\t\t\t\t);\r\n\t\t\t\tnewValue = modifiedValue.value;\r\n\t\t\t}\r\n\r\n\t\t\tconst isInputValueChanged = newValue !== this.getInputValue();\r\n\r\n\t\t\tif (isInputValueChanged) {\r\n\t\t\t\tthis.setInputValue(newValue);\r\n\t\t\t}\r\n\r\n\t\t\tif (isInputValueChanged && isFunction(this.props.onChange)) {\r\n\t\t\t\tthis.props.onChange(event);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isFunction(this.props.onBlur)) {\r\n\t\t\tthis.props.onBlur(event);\r\n\t\t}\r\n\t};\r\n\r\n\tonMouseDown = (event) => {\r\n\t\t// tiny unintentional mouse movements can break cursor\r\n\t\t// position on focus, so we have to restore it in that case\r\n\t\t//\r\n\t\t// https://github.com/sanniassin/react-input-mask/issues/108\r\n\t\tif (!this.focused && document.addEventListener) {\r\n\t\t\tthis.mouseDownX = event.clientX;\r\n\t\t\tthis.mouseDownY = event.clientY;\r\n\t\t\tthis.mouseDownTime = new Date().getTime();\r\n\r\n\t\t\tconst mouseUpHandler = (mouseUpEvent) => {\r\n\t\t\t\tdocument.removeEventListener('mouseup', mouseUpHandler);\r\n\r\n\t\t\t\tif (!this.focused) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst deltaX = Math.abs(mouseUpEvent.clientX - this.mouseDownX);\r\n\t\t\t\tconst deltaY = Math.abs(mouseUpEvent.clientY - this.mouseDownY);\r\n\t\t\t\tconst axisDelta = Math.max(deltaX, deltaY);\r\n\t\t\t\tconst timeDelta = new Date().getTime() - this.mouseDownTime;\r\n\r\n\t\t\t\tif ((axisDelta <= 10 && timeDelta <= 200) || (axisDelta <= 5 && timeDelta <= 300)) {\r\n\t\t\t\t\tthis.setCursorToEnd();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tdocument.addEventListener('mouseup', mouseUpHandler);\r\n\t\t}\r\n\r\n\t\tif (isFunction(this.props.onMouseDown)) {\r\n\t\t\tthis.props.onMouseDown(event);\r\n\t\t}\r\n\t};\r\n\r\n\tonPaste = (event) => {\r\n\t\tif (isFunction(this.props.onPaste)) {\r\n\t\t\tthis.props.onPaste(event);\r\n\t\t}\r\n\r\n\t\t// event.clipboardData might not work in Android browser\r\n\t\t// cleaning input to get raw text inside onChange handler\r\n\t\tif (!event.defaultPrevented) {\r\n\t\t\tthis.beforePasteState = {\r\n\t\t\t\tvalue: this.getInputValue(),\r\n\t\t\t\tselection: this.getSelection(),\r\n\t\t\t};\r\n\t\t\tthis.setInputValue('');\r\n\t\t}\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { children, ...restProps } = this.props;\r\n\t\tlet inputElement;\r\n\r\n\t\tif (restProps.maxLength) {\r\n\t\t\t// parse mask to test against actual mask prop as this.maskOptions\r\n\t\t\t// will be updated later in componentDidUpdate\r\n\t\t\tconsole.warn(\r\n\t\t\t\t\"react-input-mask: maxLength property shouldn't be passed to the masked input. It breaks masking and unnecessary because length is limited by the mask length.\",\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (children) {\r\n\t\t\tif (!isFunction(children)) {\r\n\t\t\t\tthrow new Error(\"react-input-mask: children must be a function'\");\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof this.props.inputRef === 'undefined') {\r\n\t\t\t\tthrow new Error('react-input-mask: Please, provide inputRef');\r\n\t\t\t}\r\n\r\n\t\t\tconst controlledProps = [\r\n\t\t\t\t'onChange',\r\n\t\t\t\t'onPaste',\r\n\t\t\t\t'onMouseDown',\r\n\t\t\t\t'onFocus',\r\n\t\t\t\t'onBlur',\r\n\t\t\t\t'value',\r\n\t\t\t\t'disabled',\r\n\t\t\t\t'readOnly',\r\n\t\t\t];\r\n\t\t\tconst childrenProps = { ...restProps };\r\n\t\t\tcontrolledProps.forEach((propId) => delete childrenProps[propId]);\r\n\r\n\t\t\tinputElement = children(childrenProps);\r\n\r\n\t\t\tconst conflictProps = controlledProps.filter(\r\n\t\t\t\t(propId) => inputElement.props[propId] != null && inputElement.props[propId] !== restProps[propId],\r\n\t\t\t);\r\n\r\n\t\t\tif (conflictProps.length > 0) {\r\n\t\t\t\t// eslint-disable-next-line max-len\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`react-input-mask: the following props should be passed to the react-input-masks component and should not be altered in childrens function: ${conflictProps.join(\r\n\t\t\t\t\t\t', ',\r\n\t\t\t\t\t)}`,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tinputElement = (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst changedProps = {\r\n\t\t\tonFocus: this.onFocus,\r\n\t\t\tonBlur: this.onBlur,\r\n\t\t};\r\n\r\n\t\tif (this.maskOptions.mask) {\r\n\t\t\tif (!restProps.disabled && !restProps.readOnly) {\r\n\t\t\t\tchangedProps.onChange = this.onChange;\r\n\t\t\t\tchangedProps.onPaste = this.onPaste;\r\n\t\t\t\tchangedProps.onMouseDown = this.onMouseDown;\r\n\t\t\t}\r\n\r\n\t\t\tif (restProps.value != null) {\r\n\t\t\t\tchangedProps.value = this.value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinputElement = React.cloneElement(inputElement, changedProps);\r\n\r\n\t\treturn inputElement;\r\n\t}\r\n}\r\n","export function isAndroidBrowser() {\r\n\tconst windows = new RegExp('windows', 'i');\r\n\tconst firefox = new RegExp('firefox', 'i');\r\n\tconst android = new RegExp('android', 'i');\r\n\tconst ua = navigator.userAgent;\r\n\treturn !windows.test(ua) && !firefox.test(ua) && android.test(ua);\r\n}\r\n\r\nexport function isWindowsPhoneBrowser() {\r\n\tconst windows = new RegExp('windows', 'i');\r\n\tconst phone = new RegExp('phone', 'i');\r\n\tconst ua = navigator.userAgent;\r\n\treturn windows.test(ua) && phone.test(ua);\r\n}\r\n\r\nexport function isAndroidFirefox() {\r\n\tconst windows = new RegExp('windows', 'i');\r\n\tconst firefox = new RegExp('firefox', 'i');\r\n\tconst android = new RegExp('android', 'i');\r\n\tconst ua = navigator.userAgent;\r\n\treturn !windows.test(ua) && firefox.test(ua) && android.test(ua);\r\n}\r\n\r\nexport function isIOS() {\r\n\tconst windows = new RegExp('windows', 'i');\r\n\tconst ios = new RegExp('(ipod|iphone|ipad)', 'i');\r\n\tconst ua = navigator.userAgent;\r\n\treturn !windows.test(ua) && ios.test(ua);\r\n}\r\n","import {\r\n\tclearRange,\r\n\tformatValue,\r\n\tgetInsertStringLength,\r\n\tinsertString,\r\n\tgetLeftEditablePosition,\r\n\tgetRightEditablePosition,\r\n} from './utils/string';\r\n\r\nexport default function processChange(maskOptions, value, selection, previousValue, previousSelection) {\r\n\tconst { mask, prefix, lastEditablePosition } = maskOptions;\r\n\tlet newValue = value;\r\n\tlet enteredString = '';\r\n\tlet formattedEnteredStringLength = 0;\r\n\tlet removedLength = 0;\r\n\tlet cursorPosition = Math.min(previousSelection.start, selection.start);\r\n\r\n\tif (selection.end > previousSelection.start) {\r\n\t\tenteredString = newValue.slice(previousSelection.start, selection.end);\r\n\t\tformattedEnteredStringLength = getInsertStringLength(maskOptions, previousValue, enteredString, cursorPosition);\r\n\t\tif (!formattedEnteredStringLength) {\r\n\t\t\tremovedLength = 0;\r\n\t\t} else {\r\n\t\t\tremovedLength = previousSelection.length;\r\n\t\t}\r\n\t} else if (newValue.length < previousValue.length) {\r\n\t\tremovedLength = previousValue.length - newValue.length;\r\n\t}\r\n\r\n\tnewValue = previousValue;\r\n\r\n\tif (removedLength) {\r\n\t\tif (removedLength === 1 && !previousSelection.length) {\r\n\t\t\tconst deleteFromRight = previousSelection.start === selection.start;\r\n\t\t\tcursorPosition = deleteFromRight\r\n\t\t\t\t? getRightEditablePosition(maskOptions, selection.start)\r\n\t\t\t\t: getLeftEditablePosition(maskOptions, selection.start);\r\n\t\t}\r\n\t\tnewValue = clearRange(maskOptions, newValue, cursorPosition, removedLength);\r\n\t}\r\n\r\n\tnewValue = insertString(maskOptions, newValue, enteredString, cursorPosition);\r\n\r\n\tcursorPosition = cursorPosition + formattedEnteredStringLength;\r\n\tif (cursorPosition >= mask.length) {\r\n\t\tcursorPosition = mask.length;\r\n\t} else if (cursorPosition < prefix.length && !formattedEnteredStringLength) {\r\n\t\tcursorPosition = prefix.length;\r\n\t} else if (\r\n\t\tcursorPosition >= prefix.length &&\r\n\t\tcursorPosition < lastEditablePosition &&\r\n\t\tformattedEnteredStringLength\r\n\t) {\r\n\t\tcursorPosition = getRightEditablePosition(maskOptions, cursorPosition);\r\n\t}\r\n\r\n\tnewValue = formatValue(maskOptions, newValue);\r\n\r\n\tif (!enteredString) {\r\n\t\tenteredString = null;\r\n\t}\r\n\r\n\treturn {\r\n\t\tvalue: newValue,\r\n\t\tenteredString,\r\n\t\tselection: { start: cursorPosition, end: cursorPosition },\r\n\t};\r\n}\r\n","(function (window, $, undefined) {\r\n\t(function () {\r\n\t\tvar VERSION = '2.2.3',\r\n\t\t\tpluginName = 'datepicker',\r\n\t\t\tautoInitSelector = '.datepicker-here',\r\n\t\t\t$body,\r\n\t\t\t$datepickersContainer,\r\n\t\t\tcontainerBuilt = false,\r\n\t\t\tbaseTemplate =\r\n\t\t\t\t'' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
',\r\n\t\t\tdefaults = {\r\n\t\t\t\tclasses: '',\r\n\t\t\t\tinline: false,\r\n\t\t\t\tlanguage: 'ru',\r\n\t\t\t\tstartDate: new Date(),\r\n\t\t\t\tfirstDay: '',\r\n\t\t\t\tweekends: [6, 0],\r\n\t\t\t\tdateFormat: '',\r\n\t\t\t\taltField: '',\r\n\t\t\t\taltFieldDateFormat: '@',\r\n\t\t\t\ttoggleSelected: true,\r\n\t\t\t\tkeyboardNav: true,\r\n\r\n\t\t\t\tposition: 'bottom left',\r\n\t\t\t\toffset: 12,\r\n\r\n\t\t\t\tview: 'days',\r\n\t\t\t\tminView: 'days',\r\n\r\n\t\t\t\tshowOtherMonths: true,\r\n\t\t\t\tselectOtherMonths: true,\r\n\t\t\t\tmoveToOtherMonthsOnSelect: true,\r\n\r\n\t\t\t\tshowOtherYears: true,\r\n\t\t\t\tselectOtherYears: true,\r\n\t\t\t\tmoveToOtherYearsOnSelect: true,\r\n\r\n\t\t\t\tminDate: '',\r\n\t\t\t\tmaxDate: '',\r\n\t\t\t\tdisableNavWhenOutOfRange: true,\r\n\r\n\t\t\t\tmultipleDates: false, // Boolean or Number\r\n\t\t\t\tmultipleDatesSeparator: ',',\r\n\t\t\t\trange: false,\r\n\r\n\t\t\t\ttodayButton: false,\r\n\t\t\t\tclearButton: false,\r\n\r\n\t\t\t\tshowEvent: 'focus',\r\n\t\t\t\tautoClose: false,\r\n\r\n\t\t\t\t// navigation\r\n\t\t\t\tmonthsField: 'monthsShort',\r\n\t\t\t\tprevHtml: '',\r\n\t\t\t\tnextHtml: '',\r\n\t\t\t\tnavTitles: {\r\n\t\t\t\t\tdays: 'MM, yyyy',\r\n\t\t\t\t\tmonths: 'yyyy',\r\n\t\t\t\t\tyears: 'yyyy1 - yyyy2',\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// timepicker\r\n\t\t\t\ttimepicker: false,\r\n\t\t\t\tonlyTimepicker: false,\r\n\t\t\t\tdateTimeSeparator: ' ',\r\n\t\t\t\ttimeFormat: '',\r\n\t\t\t\tminHours: 0,\r\n\t\t\t\tmaxHours: 24,\r\n\t\t\t\tminMinutes: 0,\r\n\t\t\t\tmaxMinutes: 59,\r\n\t\t\t\thoursStep: 1,\r\n\t\t\t\tminutesStep: 1,\r\n\r\n\t\t\t\t// events\r\n\t\t\t\tonSelect: '',\r\n\t\t\t\tonShow: '',\r\n\t\t\t\tonHide: '',\r\n\t\t\t\tonChangeMonth: '',\r\n\t\t\t\tonChangeYear: '',\r\n\t\t\t\tonChangeDecade: '',\r\n\t\t\t\tonChangeView: '',\r\n\t\t\t\tonRenderCell: '',\r\n\t\t\t},\r\n\t\t\thotKeys = {\r\n\t\t\t\tctrlRight: [17, 39],\r\n\t\t\t\tctrlUp: [17, 38],\r\n\t\t\t\tctrlLeft: [17, 37],\r\n\t\t\t\tctrlDown: [17, 40],\r\n\t\t\t\tshiftRight: [16, 39],\r\n\t\t\t\tshiftUp: [16, 38],\r\n\t\t\t\tshiftLeft: [16, 37],\r\n\t\t\t\tshiftDown: [16, 40],\r\n\t\t\t\taltUp: [18, 38],\r\n\t\t\t\taltRight: [18, 39],\r\n\t\t\t\taltLeft: [18, 37],\r\n\t\t\t\taltDown: [18, 40],\r\n\t\t\t\tctrlShiftUp: [16, 17, 38],\r\n\t\t\t},\r\n\t\t\tdatepicker;\r\n\r\n\t\tvar Datepicker = function (el, options) {\r\n\t\t\tthis.el = el;\r\n\t\t\tthis.$el = $(el);\r\n\r\n\t\t\tthis.opts = $.extend(true, {}, defaults, options, this.$el.data());\r\n\r\n\t\t\tif ($body == undefined) {\r\n\t\t\t\t$body = $('body');\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.opts.startDate) {\r\n\t\t\t\tthis.opts.startDate = new Date();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.el.nodeName == 'INPUT') {\r\n\t\t\t\tthis.elIsInput = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.opts.altField) {\r\n\t\t\t\tthis.$altField = typeof this.opts.altField == 'string' ? $(this.opts.altField) : this.opts.altField;\r\n\t\t\t}\r\n\r\n\t\t\tthis.inited = false;\r\n\t\t\tthis.visible = false;\r\n\t\t\tthis.silent = false; // Need to prevent unnecessary rendering\r\n\r\n\t\t\tthis.currentDate = this.opts.startDate;\r\n\t\t\tthis.currentView = this.opts.view;\r\n\t\t\tthis._createShortCuts();\r\n\t\t\tthis.selectedDates = [];\r\n\t\t\tthis.views = {};\r\n\t\t\tthis.keys = [];\r\n\t\t\tthis.minRange = '';\r\n\t\t\tthis.maxRange = '';\r\n\t\t\tthis._prevOnSelectValue = '';\r\n\r\n\t\t\tthis.init();\r\n\t\t};\r\n\r\n\t\tdatepicker = Datepicker;\r\n\r\n\t\tdatepicker.prototype = {\r\n\t\t\tVERSION: VERSION,\r\n\t\t\tviewIndexes: ['days', 'months', 'years'],\r\n\r\n\t\t\tinit: function () {\r\n\t\t\t\tif (!containerBuilt && !this.opts.inline && this.elIsInput) {\r\n\t\t\t\t\tthis._buildDatepickersContainer();\r\n\t\t\t\t}\r\n\t\t\t\tthis._buildBaseHtml();\r\n\t\t\t\tthis._defineLocale(this.opts.language);\r\n\t\t\t\tthis._syncWithMinMaxDates();\r\n\r\n\t\t\t\tif (this.elIsInput) {\r\n\t\t\t\t\tif (!this.opts.inline) {\r\n\t\t\t\t\t\t// Set extra classes for proper transitions\r\n\t\t\t\t\t\tthis._setPositionClasses(this.opts.position);\r\n\t\t\t\t\t\tthis._bindEvents();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.opts.keyboardNav && !this.opts.onlyTimepicker) {\r\n\t\t\t\t\t\tthis._bindKeyboardEvents();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.$datepicker.on('mousedown', this._onMouseDownDatepicker.bind(this));\r\n\t\t\t\t\tthis.$datepicker.on('mouseup', this._onMouseUpDatepicker.bind(this));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.classes) {\r\n\t\t\t\t\tthis.$datepicker.addClass(this.opts.classes);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.timepicker) {\r\n\t\t\t\t\tthis.timepicker = new $.fn.datepicker.Timepicker(this, this.opts);\r\n\t\t\t\t\tthis._bindTimepickerEvents();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.onlyTimepicker) {\r\n\t\t\t\t\tthis.$datepicker.addClass('-only-timepicker-');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.views[this.currentView] = new $.fn.datepicker.Body(this, this.currentView, this.opts);\r\n\t\t\t\tthis.views[this.currentView].show();\r\n\t\t\t\tthis.nav = new $.fn.datepicker.Navigation(this, this.opts);\r\n\t\t\t\tthis.view = this.currentView;\r\n\r\n\t\t\t\tthis.$el.on('clickCell.adp', this._onClickCell.bind(this));\r\n\t\t\t\tthis.$datepicker.on('mouseenter', '.datepicker--cell', this._onMouseEnterCell.bind(this));\r\n\t\t\t\tthis.$datepicker.on('mouseleave', '.datepicker--cell', this._onMouseLeaveCell.bind(this));\r\n\r\n\t\t\t\tthis.inited = true;\r\n\t\t\t},\r\n\r\n\t\t\t_createShortCuts: function () {\r\n\t\t\t\tthis.minDate = this.opts.minDate ? this.opts.minDate : new Date(-8639999913600000);\r\n\t\t\t\tthis.maxDate = this.opts.maxDate ? this.opts.maxDate : new Date(8639999913600000);\r\n\t\t\t},\r\n\r\n\t\t\t_bindEvents: function () {\r\n\t\t\t\tthis.$el.on(this.opts.showEvent + '.adp', this._onShowEvent.bind(this));\r\n\t\t\t\tthis.$el.on('mouseup.adp', this._onMouseUpEl.bind(this));\r\n\t\t\t\tthis.$el.on('blur.adp', this._onBlur.bind(this));\r\n\t\t\t\tthis.$el.on('keyup.adp', this._onKeyUpGeneral.bind(this));\r\n\t\t\t\t$(window).on('resize.adp', this._onResize.bind(this));\r\n\t\t\t\t$('body').on('mouseup.adp', this._onMouseUpBody.bind(this));\r\n\t\t\t},\r\n\r\n\t\t\t_bindKeyboardEvents: function () {\r\n\t\t\t\tthis.$el.on('keydown.adp', this._onKeyDown.bind(this));\r\n\t\t\t\tthis.$el.on('keyup.adp', this._onKeyUp.bind(this));\r\n\t\t\t\tthis.$el.on('hotKey.adp', this._onHotKey.bind(this));\r\n\t\t\t},\r\n\r\n\t\t\t_bindTimepickerEvents: function () {\r\n\t\t\t\tthis.$el.on('timeChange.adp', this._onTimeChange.bind(this));\r\n\t\t\t},\r\n\r\n\t\t\tisWeekend: function (day) {\r\n\t\t\t\treturn this.opts.weekends.indexOf(day) !== -1;\r\n\t\t\t},\r\n\r\n\t\t\t_defineLocale: function (lang) {\r\n\t\t\t\tif (typeof lang == 'string') {\r\n\t\t\t\t\tthis.loc = $.fn.datepicker.language[lang];\r\n\t\t\t\t\tif (!this.loc) {\r\n\t\t\t\t\t\tconsole.warn(\r\n\t\t\t\t\t\t\t'Can\\'t find language \"' + lang + '\" in Datepicker.language, will use \"ru\" instead',\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tthis.loc = $.extend(true, {}, $.fn.datepicker.language.ru);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.loc = $.extend(true, {}, $.fn.datepicker.language.ru, $.fn.datepicker.language[lang]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.loc = $.extend(true, {}, $.fn.datepicker.language.ru, lang);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.dateFormat) {\r\n\t\t\t\t\tthis.loc.dateFormat = this.opts.dateFormat;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.timeFormat) {\r\n\t\t\t\t\tthis.loc.timeFormat = this.opts.timeFormat;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.firstDay !== '') {\r\n\t\t\t\t\tthis.loc.firstDay = this.opts.firstDay;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.timepicker) {\r\n\t\t\t\t\tthis.loc.dateFormat = [this.loc.dateFormat, this.loc.timeFormat].join(this.opts.dateTimeSeparator);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.onlyTimepicker) {\r\n\t\t\t\t\tthis.loc.dateFormat = this.loc.timeFormat;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar boundary = this._getWordBoundaryRegExp;\r\n\t\t\t\tif (this.loc.timeFormat.match(boundary('aa')) || this.loc.timeFormat.match(boundary('AA'))) {\r\n\t\t\t\t\tthis.ampm = true;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_buildDatepickersContainer: function () {\r\n\t\t\t\tcontainerBuilt = true;\r\n\t\t\t\t$body.append('
');\r\n\t\t\t\t$datepickersContainer = $('#datepickers-container');\r\n\t\t\t},\r\n\r\n\t\t\t_buildBaseHtml: function () {\r\n\t\t\t\tvar $appendTarget,\r\n\t\t\t\t\t$inline = $('
');\r\n\r\n\t\t\t\tif (this.el.nodeName == 'INPUT') {\r\n\t\t\t\t\tif (!this.opts.inline) {\r\n\t\t\t\t\t\t$appendTarget = $datepickersContainer;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$appendTarget = $inline.insertAfter(this.$el);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$appendTarget = $inline.appendTo(this.$el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.$datepicker = $(baseTemplate).appendTo($appendTarget);\r\n\t\t\t\tthis.$content = $('.datepicker--content', this.$datepicker);\r\n\t\t\t\tthis.$nav = $('.datepicker--nav', this.$datepicker);\r\n\t\t\t},\r\n\r\n\t\t\t_triggerOnChange: function () {\r\n\t\t\t\tif (!this.selectedDates.length) {\r\n\t\t\t\t\t// Prevent from triggering multiple onSelect callback with same argument (empty string) in IE10-11\r\n\t\t\t\t\tif (this._prevOnSelectValue === '') return;\r\n\t\t\t\t\tthis._prevOnSelectValue = '';\r\n\t\t\t\t\treturn this.opts.onSelect('', '', this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar selectedDates = this.selectedDates,\r\n\t\t\t\t\tparsedSelected = datepicker.getParsedDate(selectedDates[0]),\r\n\t\t\t\t\tformattedDates,\r\n\t\t\t\t\t_this = this,\r\n\t\t\t\t\tdates = new Date(\r\n\t\t\t\t\t\tparsedSelected.year,\r\n\t\t\t\t\t\tparsedSelected.month,\r\n\t\t\t\t\t\tparsedSelected.date,\r\n\t\t\t\t\t\tparsedSelected.hours,\r\n\t\t\t\t\t\tparsedSelected.minutes,\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\tformattedDates = selectedDates\r\n\t\t\t\t\t.map(function (date) {\r\n\t\t\t\t\t\treturn _this.formatDate(_this.loc.dateFormat, date);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.join(this.opts.multipleDatesSeparator);\r\n\r\n\t\t\t\t// Create new dates array, to separate it from original selectedDates\r\n\t\t\t\tif (this.opts.multipleDates || this.opts.range) {\r\n\t\t\t\t\tdates = selectedDates.map(function (date) {\r\n\t\t\t\t\t\tvar parsedDate = datepicker.getParsedDate(date);\r\n\t\t\t\t\t\treturn new Date(\r\n\t\t\t\t\t\t\tparsedDate.year,\r\n\t\t\t\t\t\t\tparsedDate.month,\r\n\t\t\t\t\t\t\tparsedDate.date,\r\n\t\t\t\t\t\t\tparsedDate.hours,\r\n\t\t\t\t\t\t\tparsedDate.minutes,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._prevOnSelectValue = formattedDates;\r\n\t\t\t\tthis.opts.onSelect(formattedDates, dates, this);\r\n\t\t\t},\r\n\r\n\t\t\tnext: function () {\r\n\t\t\t\tvar d = this.parsedDate,\r\n\t\t\t\t\to = this.opts;\r\n\t\t\t\tswitch (this.view) {\r\n\t\t\t\t\tcase 'days':\r\n\t\t\t\t\t\tthis.date = new Date(d.year, d.month + 1, 1);\r\n\t\t\t\t\t\tif (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'months':\r\n\t\t\t\t\t\tthis.date = new Date(d.year + 1, d.month, 1);\r\n\t\t\t\t\t\tif (o.onChangeYear) o.onChangeYear(this.parsedDate.year);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'years':\r\n\t\t\t\t\t\tthis.date = new Date(d.year + 10, 0, 1);\r\n\t\t\t\t\t\tif (o.onChangeDecade) o.onChangeDecade(this.curDecade);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tprev: function () {\r\n\t\t\t\tvar d = this.parsedDate,\r\n\t\t\t\t\to = this.opts;\r\n\t\t\t\tswitch (this.view) {\r\n\t\t\t\t\tcase 'days':\r\n\t\t\t\t\t\tthis.date = new Date(d.year, d.month - 1, 1);\r\n\t\t\t\t\t\tif (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'months':\r\n\t\t\t\t\t\tthis.date = new Date(d.year - 1, d.month, 1);\r\n\t\t\t\t\t\tif (o.onChangeYear) o.onChangeYear(this.parsedDate.year);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'years':\r\n\t\t\t\t\t\tthis.date = new Date(d.year - 10, 0, 1);\r\n\t\t\t\t\t\tif (o.onChangeDecade) o.onChangeDecade(this.curDecade);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tformatDate: function (string, date) {\r\n\t\t\t\tdate = date || this.date;\r\n\t\t\t\tvar result = string,\r\n\t\t\t\t\tboundary = this._getWordBoundaryRegExp,\r\n\t\t\t\t\tlocale = this.loc,\r\n\t\t\t\t\tleadingZero = datepicker.getLeadingZeroNum,\r\n\t\t\t\t\tdecade = datepicker.getDecade(date),\r\n\t\t\t\t\td = datepicker.getParsedDate(date),\r\n\t\t\t\t\tfullHours = d.fullHours,\r\n\t\t\t\t\thours = d.hours,\r\n\t\t\t\t\tampm = string.match(boundary('aa')) || string.match(boundary('AA')),\r\n\t\t\t\t\tdayPeriod = 'am',\r\n\t\t\t\t\treplacer = this._replacer,\r\n\t\t\t\t\tvalidHours;\r\n\r\n\t\t\t\tif (this.opts.timepicker && this.timepicker && ampm) {\r\n\t\t\t\t\tvalidHours = this.timepicker._getValidHoursFromDate(date, ampm);\r\n\t\t\t\t\tfullHours = leadingZero(validHours.hours);\r\n\t\t\t\t\thours = validHours.hours;\r\n\t\t\t\t\tdayPeriod = validHours.dayPeriod;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tswitch (true) {\r\n\t\t\t\t\tcase /@/.test(result):\r\n\t\t\t\t\t\tresult = result.replace(/@/, date.getTime());\r\n\t\t\t\t\tcase /aa/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('aa'), dayPeriod);\r\n\t\t\t\t\tcase /AA/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('AA'), dayPeriod.toUpperCase());\r\n\t\t\t\t\tcase /dd/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('dd'), d.fullDate);\r\n\t\t\t\t\tcase /d/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('d'), d.date);\r\n\t\t\t\t\tcase /DD/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('DD'), locale.days[d.day]);\r\n\t\t\t\t\tcase /D/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('D'), locale.daysShort[d.day]);\r\n\t\t\t\t\tcase /mm/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('mm'), d.fullMonth);\r\n\t\t\t\t\tcase /m/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('m'), d.month + 1);\r\n\t\t\t\t\tcase /MM/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('MM'), this.loc.months[d.month]);\r\n\t\t\t\t\tcase /M/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('M'), locale.monthsShort[d.month]);\r\n\t\t\t\t\tcase /ii/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('ii'), d.fullMinutes);\r\n\t\t\t\t\tcase /i/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('i'), d.minutes);\r\n\t\t\t\t\tcase /hh/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('hh'), fullHours);\r\n\t\t\t\t\tcase /h/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('h'), hours);\r\n\t\t\t\t\tcase /yyyy/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('yyyy'), d.year);\r\n\t\t\t\t\tcase /yyyy1/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('yyyy1'), decade[0]);\r\n\t\t\t\t\tcase /yyyy2/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('yyyy2'), decade[1]);\r\n\t\t\t\t\tcase /yy/.test(result):\r\n\t\t\t\t\t\tresult = replacer(result, boundary('yy'), d.year.toString().slice(-2));\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t},\r\n\r\n\t\t\t_replacer: function (str, reg, data) {\r\n\t\t\t\treturn str.replace(reg, function (match, p1, p2, p3) {\r\n\t\t\t\t\treturn p1 + data + p3;\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\t_getWordBoundaryRegExp: function (sign) {\r\n\t\t\t\tvar symbols = '\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;';\r\n\r\n\t\t\t\treturn new RegExp('(^|>|' + symbols + ')(' + sign + ')($|<|' + symbols + ')', 'g');\r\n\t\t\t},\r\n\r\n\t\t\tselectDate: function (date) {\r\n\t\t\t\tvar _this = this,\r\n\t\t\t\t\topts = _this.opts,\r\n\t\t\t\t\td = _this.parsedDate,\r\n\t\t\t\t\tselectedDates = _this.selectedDates,\r\n\t\t\t\t\tlen = selectedDates.length,\r\n\t\t\t\t\tnewDate = '';\r\n\r\n\t\t\t\tif (Array.isArray(date)) {\r\n\t\t\t\t\tdate.forEach(function (d) {\r\n\t\t\t\t\t\t_this.selectDate(d);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!(date instanceof Date)) return;\r\n\r\n\t\t\t\tthis.lastSelectedDate = date;\r\n\r\n\t\t\t\t// Set new time values from Date\r\n\t\t\t\tif (this.timepicker) {\r\n\t\t\t\t\tthis.timepicker._setTime(date);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// On this step timepicker will set valid values in it's instance\r\n\t\t\t\t_this._trigger('selectDate', date);\r\n\r\n\t\t\t\t// Set correct time values after timepicker's validation\r\n\t\t\t\t// Prevent from setting hours or minutes which values are lesser then `min` value or\r\n\t\t\t\t// greater then `max` value\r\n\t\t\t\tif (this.timepicker) {\r\n\t\t\t\t\tdate.setHours(this.timepicker.hours);\r\n\t\t\t\t\tdate.setMinutes(this.timepicker.minutes);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_this.view == 'days') {\r\n\t\t\t\t\tif (date.getMonth() != d.month && opts.moveToOtherMonthsOnSelect) {\r\n\t\t\t\t\t\tnewDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_this.view == 'years') {\r\n\t\t\t\t\tif (date.getFullYear() != d.year && opts.moveToOtherYearsOnSelect) {\r\n\t\t\t\t\t\tnewDate = new Date(date.getFullYear(), 0, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newDate) {\r\n\t\t\t\t\t_this.silent = true;\r\n\t\t\t\t\t_this.date = newDate;\r\n\t\t\t\t\t_this.silent = false;\r\n\t\t\t\t\t_this.nav._render();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.multipleDates && !opts.range) {\r\n\t\t\t\t\t// Set priority to range functionality\r\n\t\t\t\t\tif (len === opts.multipleDates) return;\r\n\t\t\t\t\tif (!_this._isSelected(date)) {\r\n\t\t\t\t\t\t_this.selectedDates.push(date);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (opts.range) {\r\n\t\t\t\t\tif (len == 2) {\r\n\t\t\t\t\t\t_this.selectedDates = [date];\r\n\t\t\t\t\t\t_this.minRange = date;\r\n\t\t\t\t\t\t_this.maxRange = '';\r\n\t\t\t\t\t} else if (len == 1) {\r\n\t\t\t\t\t\t_this.selectedDates.push(date);\r\n\t\t\t\t\t\tif (!_this.maxRange) {\r\n\t\t\t\t\t\t\t_this.maxRange = date;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t_this.minRange = date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Swap dates if they were selected via dp.selectDate() and second date was smaller then first\r\n\t\t\t\t\t\tif (datepicker.bigger(_this.maxRange, _this.minRange)) {\r\n\t\t\t\t\t\t\t_this.maxRange = _this.minRange;\r\n\t\t\t\t\t\t\t_this.minRange = date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t_this.selectedDates = [_this.minRange, _this.maxRange];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_this.selectedDates = [date];\r\n\t\t\t\t\t\t_this.minRange = date;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_this.selectedDates = [date];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_this._setInputValue();\r\n\r\n\t\t\t\tif (opts.onSelect) {\r\n\t\t\t\t\t_this._triggerOnChange();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.autoClose && !this.timepickerIsActive) {\r\n\t\t\t\t\tif (!opts.multipleDates && !opts.range) {\r\n\t\t\t\t\t\t_this.hide();\r\n\t\t\t\t\t} else if (opts.range && _this.selectedDates.length == 2) {\r\n\t\t\t\t\t\t_this.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_this.views[this.currentView]._render();\r\n\t\t\t},\r\n\r\n\t\t\tremoveDate: function (date) {\r\n\t\t\t\tvar selected = this.selectedDates,\r\n\t\t\t\t\t_this = this;\r\n\r\n\t\t\t\tif (!(date instanceof Date)) return;\r\n\r\n\t\t\t\treturn selected.some(function (curDate, i) {\r\n\t\t\t\t\tif (datepicker.isSame(curDate, date)) {\r\n\t\t\t\t\t\tselected.splice(i, 1);\r\n\r\n\t\t\t\t\t\tif (!_this.selectedDates.length) {\r\n\t\t\t\t\t\t\t_this.minRange = '';\r\n\t\t\t\t\t\t\t_this.maxRange = '';\r\n\t\t\t\t\t\t\t_this.lastSelectedDate = '';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t_this.lastSelectedDate = _this.selectedDates[_this.selectedDates.length - 1];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t_this.views[_this.currentView]._render();\r\n\t\t\t\t\t\t_this._setInputValue();\r\n\r\n\t\t\t\t\t\tif (_this.opts.onSelect) {\r\n\t\t\t\t\t\t\t_this._triggerOnChange();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\ttoday: function () {\r\n\t\t\t\tthis.silent = true;\r\n\t\t\t\tthis.view = this.opts.minView;\r\n\t\t\t\tthis.silent = false;\r\n\t\t\t\tthis.date = new Date();\r\n\r\n\t\t\t\tif (this.opts.todayButton instanceof Date) {\r\n\t\t\t\t\tthis.selectDate(this.opts.todayButton);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tclear: function () {\r\n\t\t\t\tthis.selectedDates = [];\r\n\t\t\t\tthis.minRange = '';\r\n\t\t\t\tthis.maxRange = '';\r\n\t\t\t\tthis.views[this.currentView]._render();\r\n\t\t\t\tthis._setInputValue();\r\n\t\t\t\tif (this.opts.onSelect) {\r\n\t\t\t\t\tthis._triggerOnChange();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Updates datepicker options\r\n\t\t\t * @param {String|Object} param - parameter's name to update. If object then it will extend current options\r\n\t\t\t * @param {String|Number|Object} [value] - new param value\r\n\t\t\t */\r\n\t\t\tupdate: function (param, value) {\r\n\t\t\t\tvar len = arguments.length,\r\n\t\t\t\t\tlastSelectedDate = this.lastSelectedDate;\r\n\r\n\t\t\t\tif (len == 2) {\r\n\t\t\t\t\tthis.opts[param] = value;\r\n\t\t\t\t} else if (len == 1 && typeof param == 'object') {\r\n\t\t\t\t\tthis.opts = $.extend(true, this.opts, param);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._createShortCuts();\r\n\t\t\t\tthis._syncWithMinMaxDates();\r\n\t\t\t\tthis._defineLocale(this.opts.language);\r\n\t\t\t\tthis.nav._addButtonsIfNeed();\r\n\t\t\t\tif (!this.opts.onlyTimepicker) this.nav._render();\r\n\t\t\t\tthis.views[this.currentView]._render();\r\n\r\n\t\t\t\tif (this.elIsInput && !this.opts.inline) {\r\n\t\t\t\t\tthis._setPositionClasses(this.opts.position);\r\n\t\t\t\t\tif (this.visible) {\r\n\t\t\t\t\t\tthis.setPosition(this.opts.position);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.classes) {\r\n\t\t\t\t\tthis.$datepicker.addClass(this.opts.classes);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.onlyTimepicker) {\r\n\t\t\t\t\tthis.$datepicker.addClass('-only-timepicker-');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.opts.timepicker) {\r\n\t\t\t\t\tif (lastSelectedDate) this.timepicker._handleDate(lastSelectedDate);\r\n\t\t\t\t\tthis.timepicker._updateRanges();\r\n\t\t\t\t\tthis.timepicker._updateCurrentTime();\r\n\t\t\t\t\t// Change hours and minutes if it's values have been changed through min/max hours/minutes\r\n\t\t\t\t\tif (lastSelectedDate) {\r\n\t\t\t\t\t\tlastSelectedDate.setHours(this.timepicker.hours);\r\n\t\t\t\t\t\tlastSelectedDate.setMinutes(this.timepicker.minutes);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._setInputValue();\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t_syncWithMinMaxDates: function () {\r\n\t\t\t\tvar curTime = this.date.getTime();\r\n\t\t\t\tthis.silent = true;\r\n\t\t\t\tif (this.minTime > curTime) {\r\n\t\t\t\t\tthis.date = this.minDate;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.maxTime < curTime) {\r\n\t\t\t\t\tthis.date = this.maxDate;\r\n\t\t\t\t}\r\n\t\t\t\tthis.silent = false;\r\n\t\t\t},\r\n\r\n\t\t\t_isSelected: function (checkDate, cellType) {\r\n\t\t\t\tvar res = false;\r\n\t\t\t\tthis.selectedDates.some(function (date) {\r\n\t\t\t\t\tif (datepicker.isSame(date, checkDate, cellType)) {\r\n\t\t\t\t\t\tres = date;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\treturn res;\r\n\t\t\t},\r\n\r\n\t\t\t_setInputValue: function () {\r\n\t\t\t\tvar _this = this,\r\n\t\t\t\t\topts = _this.opts,\r\n\t\t\t\t\tformat = _this.loc.dateFormat,\r\n\t\t\t\t\taltFormat = opts.altFieldDateFormat,\r\n\t\t\t\t\tvalue = _this.selectedDates.map(function (date) {\r\n\t\t\t\t\t\treturn _this.formatDate(format, date);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\taltValues;\r\n\r\n\t\t\t\tif (opts.altField && _this.$altField.length) {\r\n\t\t\t\t\taltValues = this.selectedDates.map(function (date) {\r\n\t\t\t\t\t\treturn _this.formatDate(altFormat, date);\r\n\t\t\t\t\t});\r\n\t\t\t\t\taltValues = altValues.join(this.opts.multipleDatesSeparator);\r\n\t\t\t\t\tthis.$altField.val(altValues);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvalue = value.join(this.opts.multipleDatesSeparator);\r\n\r\n\t\t\t\tthis.$el.val(value);\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Check if date is between minDate and maxDate\r\n\t\t\t * @param date {object} - date object\r\n\t\t\t * @param type {string} - cell type\r\n\t\t\t * @returns {boolean}\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\t_isInRange: function (date, type) {\r\n\t\t\t\tvar time = date.getTime(),\r\n\t\t\t\t\td = datepicker.getParsedDate(date),\r\n\t\t\t\t\tmin = datepicker.getParsedDate(this.minDate),\r\n\t\t\t\t\tmax = datepicker.getParsedDate(this.maxDate),\r\n\t\t\t\t\tdMinTime = new Date(d.year, d.month, min.date).getTime(),\r\n\t\t\t\t\tdMaxTime = new Date(d.year, d.month, max.date).getTime(),\r\n\t\t\t\t\ttypes = {\r\n\t\t\t\t\t\tday: time >= this.minTime && time <= this.maxTime,\r\n\t\t\t\t\t\tmonth: dMinTime >= this.minTime && dMaxTime <= this.maxTime,\r\n\t\t\t\t\t\tyear: d.year >= min.year && d.year <= max.year,\r\n\t\t\t\t\t};\r\n\t\t\t\treturn type ? types[type] : types.day;\r\n\t\t\t},\r\n\r\n\t\t\t_getDimensions: function ($el) {\r\n\t\t\t\tvar offset = $el.offset();\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\twidth: $el.outerWidth(),\r\n\t\t\t\t\theight: $el.outerHeight(),\r\n\t\t\t\t\tleft: offset.left,\r\n\t\t\t\t\ttop: offset.top,\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\t_getDateFromCell: function (cell) {\r\n\t\t\t\tvar curDate = this.parsedDate,\r\n\t\t\t\t\tyear = cell.data('year') || curDate.year,\r\n\t\t\t\t\tmonth = cell.data('month') == undefined ? curDate.month : cell.data('month'),\r\n\t\t\t\t\tdate = cell.data('date') || 1;\r\n\r\n\t\t\t\treturn new Date(year, month, date);\r\n\t\t\t},\r\n\r\n\t\t\t_setPositionClasses: function (pos) {\r\n\t\t\t\tpos = pos.split(' ');\r\n\t\t\t\tvar main = pos[0],\r\n\t\t\t\t\tsec = pos[1],\r\n\t\t\t\t\tclasses = 'datepicker -' + main + '-' + sec + '- -from-' + main + '-';\r\n\r\n\t\t\t\tif (this.visible) classes += ' active';\r\n\r\n\t\t\t\tthis.$datepicker.removeAttr('class').addClass(classes);\r\n\t\t\t},\r\n\r\n\t\t\tsetPosition: function (position) {\r\n\t\t\t\tposition = position || this.opts.position;\r\n\r\n\t\t\t\tvar dims = this._getDimensions(this.$el),\r\n\t\t\t\t\tselfDims = this._getDimensions(this.$datepicker),\r\n\t\t\t\t\tpos = position.split(' '),\r\n\t\t\t\t\ttop,\r\n\t\t\t\t\tleft,\r\n\t\t\t\t\toffset = this.opts.offset,\r\n\t\t\t\t\tmain = pos[0],\r\n\t\t\t\t\tsecondary = pos[1];\r\n\r\n\t\t\t\tswitch (main) {\r\n\t\t\t\t\tcase 'top':\r\n\t\t\t\t\t\ttop = dims.top - selfDims.height - offset;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'right':\r\n\t\t\t\t\t\tleft = dims.left + dims.width + offset;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'bottom':\r\n\t\t\t\t\t\ttop = dims.top + dims.height + offset;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'left':\r\n\t\t\t\t\t\tleft = dims.left - selfDims.width - offset;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tswitch (secondary) {\r\n\t\t\t\t\tcase 'top':\r\n\t\t\t\t\t\ttop = dims.top;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'right':\r\n\t\t\t\t\t\tleft = dims.left + dims.width - selfDims.width;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'bottom':\r\n\t\t\t\t\t\ttop = dims.top + dims.height - selfDims.height;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'left':\r\n\t\t\t\t\t\tleft = dims.left;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'center':\r\n\t\t\t\t\t\tif (/left|right/.test(main)) {\r\n\t\t\t\t\t\t\ttop = dims.top + dims.height / 2 - selfDims.height / 2;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tleft = dims.left + dims.width / 2 - selfDims.width / 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.$datepicker.css({\r\n\t\t\t\t\tleft: left,\r\n\t\t\t\t\ttop: top,\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\tshow: function () {\r\n\t\t\t\tvar onShow = this.opts.onShow;\r\n\r\n\t\t\t\tthis.setPosition(this.opts.position);\r\n\t\t\t\tthis.$datepicker.addClass('active');\r\n\t\t\t\tthis.visible = true;\r\n\r\n\t\t\t\tif (onShow) {\r\n\t\t\t\t\tthis._bindVisionEvents(onShow);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\thide: function () {\r\n\t\t\t\tvar onHide = this.opts.onHide;\r\n\r\n\t\t\t\tthis.$datepicker.removeClass('active').css({\r\n\t\t\t\t\tleft: '-100000px',\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.focused = '';\r\n\t\t\t\tthis.keys = [];\r\n\r\n\t\t\t\tthis.inFocus = false;\r\n\t\t\t\tthis.visible = false;\r\n\t\t\t\tthis.$el.blur();\r\n\r\n\t\t\t\tif (onHide) {\r\n\t\t\t\t\tthis._bindVisionEvents(onHide);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tdown: function (date) {\r\n\t\t\t\tthis._changeView(date, 'down');\r\n\t\t\t},\r\n\r\n\t\t\tup: function (date) {\r\n\t\t\t\tthis._changeView(date, 'up');\r\n\t\t\t},\r\n\r\n\t\t\t_bindVisionEvents: function (event) {\r\n\t\t\t\tthis.$datepicker.off('transitionend.dp');\r\n\t\t\t\tevent(this, false);\r\n\t\t\t\tthis.$datepicker.one('transitionend.dp', event.bind(this, this, true));\r\n\t\t\t},\r\n\r\n\t\t\t_changeView: function (date, dir) {\r\n\t\t\t\tdate = date || this.focused || this.date;\r\n\r\n\t\t\t\tvar nextView = dir == 'up' ? this.viewIndex + 1 : this.viewIndex - 1;\r\n\t\t\t\tif (nextView > 2) nextView = 2;\r\n\t\t\t\tif (nextView < 0) nextView = 0;\r\n\r\n\t\t\t\tthis.silent = true;\r\n\t\t\t\tthis.date = new Date(date.getFullYear(), date.getMonth(), 1);\r\n\t\t\t\tthis.silent = false;\r\n\t\t\t\tthis.view = this.viewIndexes[nextView];\r\n\t\t\t},\r\n\r\n\t\t\t_handleHotKey: function (key) {\r\n\t\t\t\tvar date = datepicker.getParsedDate(this._getFocusedDate()),\r\n\t\t\t\t\tfocusedParsed,\r\n\t\t\t\t\to = this.opts,\r\n\t\t\t\t\tnewDate,\r\n\t\t\t\t\ttotalDaysInNextMonth,\r\n\t\t\t\t\tmonthChanged = false,\r\n\t\t\t\t\tyearChanged = false,\r\n\t\t\t\t\tdecadeChanged = false,\r\n\t\t\t\t\ty = date.year,\r\n\t\t\t\t\tm = date.month,\r\n\t\t\t\t\td = date.date;\r\n\r\n\t\t\t\tswitch (key) {\r\n\t\t\t\t\tcase 'ctrlRight':\r\n\t\t\t\t\tcase 'ctrlUp':\r\n\t\t\t\t\t\tm += 1;\r\n\t\t\t\t\t\tmonthChanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'ctrlLeft':\r\n\t\t\t\t\tcase 'ctrlDown':\r\n\t\t\t\t\t\tm -= 1;\r\n\t\t\t\t\t\tmonthChanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'shiftRight':\r\n\t\t\t\t\tcase 'shiftUp':\r\n\t\t\t\t\t\tyearChanged = true;\r\n\t\t\t\t\t\ty += 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'shiftLeft':\r\n\t\t\t\t\tcase 'shiftDown':\r\n\t\t\t\t\t\tyearChanged = true;\r\n\t\t\t\t\t\ty -= 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'altRight':\r\n\t\t\t\t\tcase 'altUp':\r\n\t\t\t\t\t\tdecadeChanged = true;\r\n\t\t\t\t\t\ty += 10;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'altLeft':\r\n\t\t\t\t\tcase 'altDown':\r\n\t\t\t\t\t\tdecadeChanged = true;\r\n\t\t\t\t\t\ty -= 10;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'ctrlShiftUp':\r\n\t\t\t\t\t\tthis.up();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttotalDaysInNextMonth = datepicker.getDaysCount(new Date(y, m));\r\n\t\t\t\tnewDate = new Date(y, m, d);\r\n\r\n\t\t\t\t// If next month has less days than current, set date to total days in that month\r\n\t\t\t\tif (totalDaysInNextMonth < d) d = totalDaysInNextMonth;\r\n\r\n\t\t\t\t// Check if newDate is in valid range\r\n\t\t\t\tif (newDate.getTime() < this.minTime) {\r\n\t\t\t\t\tnewDate = this.minDate;\r\n\t\t\t\t} else if (newDate.getTime() > this.maxTime) {\r\n\t\t\t\t\tnewDate = this.maxDate;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.focused = newDate;\r\n\r\n\t\t\t\tfocusedParsed = datepicker.getParsedDate(newDate);\r\n\t\t\t\tif (monthChanged && o.onChangeMonth) {\r\n\t\t\t\t\to.onChangeMonth(focusedParsed.month, focusedParsed.year);\r\n\t\t\t\t}\r\n\t\t\t\tif (yearChanged && o.onChangeYear) {\r\n\t\t\t\t\to.onChangeYear(focusedParsed.year);\r\n\t\t\t\t}\r\n\t\t\t\tif (decadeChanged && o.onChangeDecade) {\r\n\t\t\t\t\to.onChangeDecade(this.curDecade);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_registerKey: function (key) {\r\n\t\t\t\tvar exists = this.keys.some(function (curKey) {\r\n\t\t\t\t\treturn curKey == key;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!exists) {\r\n\t\t\t\t\tthis.keys.push(key);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_unRegisterKey: function (key) {\r\n\t\t\t\tvar index = this.keys.indexOf(key);\r\n\r\n\t\t\t\tthis.keys.splice(index, 1);\r\n\t\t\t},\r\n\r\n\t\t\t_isHotKeyPressed: function () {\r\n\t\t\t\tvar currentHotKey,\r\n\t\t\t\t\tfound = false,\r\n\t\t\t\t\t_this = this,\r\n\t\t\t\t\tpressedKeys = this.keys.sort();\r\n\r\n\t\t\t\tfor (var hotKey in hotKeys) {\r\n\t\t\t\t\tcurrentHotKey = hotKeys[hotKey];\r\n\t\t\t\t\tif (pressedKeys.length != currentHotKey.length) continue;\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tcurrentHotKey.every(function (key, i) {\r\n\t\t\t\t\t\t\treturn key == pressedKeys[i];\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\t_this._trigger('hotKey', hotKey);\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn found;\r\n\t\t\t},\r\n\r\n\t\t\t_trigger: function (event, args) {\r\n\t\t\t\tthis.$el.trigger(event, args);\r\n\t\t\t},\r\n\r\n\t\t\t_focusNextCell: function (keyCode, type) {\r\n\t\t\t\ttype = type || this.cellType;\r\n\r\n\t\t\t\tvar date = datepicker.getParsedDate(this._getFocusedDate()),\r\n\t\t\t\t\ty = date.year,\r\n\t\t\t\t\tm = date.month,\r\n\t\t\t\t\td = date.date;\r\n\r\n\t\t\t\tif (this._isHotKeyPressed()) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tswitch (keyCode) {\r\n\t\t\t\t\tcase 37: // left\r\n\t\t\t\t\t\ttype == 'day' ? (d -= 1) : '';\r\n\t\t\t\t\t\ttype == 'month' ? (m -= 1) : '';\r\n\t\t\t\t\t\ttype == 'year' ? (y -= 1) : '';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 38: // up\r\n\t\t\t\t\t\ttype == 'day' ? (d -= 7) : '';\r\n\t\t\t\t\t\ttype == 'month' ? (m -= 3) : '';\r\n\t\t\t\t\t\ttype == 'year' ? (y -= 4) : '';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 39: // right\r\n\t\t\t\t\t\ttype == 'day' ? (d += 1) : '';\r\n\t\t\t\t\t\ttype == 'month' ? (m += 1) : '';\r\n\t\t\t\t\t\ttype == 'year' ? (y += 1) : '';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 40: // down\r\n\t\t\t\t\t\ttype == 'day' ? (d += 7) : '';\r\n\t\t\t\t\t\ttype == 'month' ? (m += 3) : '';\r\n\t\t\t\t\t\ttype == 'year' ? (y += 4) : '';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(y, m, d);\r\n\t\t\t\tif (nd.getTime() < this.minTime) {\r\n\t\t\t\t\tnd = this.minDate;\r\n\t\t\t\t} else if (nd.getTime() > this.maxTime) {\r\n\t\t\t\t\tnd = this.maxDate;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.focused = nd;\r\n\t\t\t},\r\n\r\n\t\t\t_getFocusedDate: function () {\r\n\t\t\t\tvar focused = this.focused || this.selectedDates[this.selectedDates.length - 1],\r\n\t\t\t\t\td = this.parsedDate;\r\n\r\n\t\t\t\tif (!focused) {\r\n\t\t\t\t\tswitch (this.view) {\r\n\t\t\t\t\t\tcase 'days':\r\n\t\t\t\t\t\t\tfocused = new Date(d.year, d.month, new Date().getDate());\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'months':\r\n\t\t\t\t\t\t\tfocused = new Date(d.year, d.month, 1);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'years':\r\n\t\t\t\t\t\t\tfocused = new Date(d.year, 0, 1);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn focused;\r\n\t\t\t},\r\n\r\n\t\t\t_getCell: function (date, type) {\r\n\t\t\t\ttype = type || this.cellType;\r\n\r\n\t\t\t\tvar d = datepicker.getParsedDate(date),\r\n\t\t\t\t\tselector = '.datepicker--cell[data-year=\"' + d.year + '\"]',\r\n\t\t\t\t\t$cell;\r\n\r\n\t\t\t\tswitch (type) {\r\n\t\t\t\t\tcase 'month':\r\n\t\t\t\t\t\tselector = '[data-month=\"' + d.month + '\"]';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'day':\r\n\t\t\t\t\t\tselector += '[data-month=\"' + d.month + '\"][data-date=\"' + d.date + '\"]';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t$cell = this.views[this.currentView].$el.find(selector);\r\n\r\n\t\t\t\treturn $cell.length ? $cell : $('');\r\n\t\t\t},\r\n\r\n\t\t\tdestroy: function () {\r\n\t\t\t\tvar _this = this;\r\n\t\t\t\t_this.$el.off('.adp').data('datepicker', '');\r\n\r\n\t\t\t\t_this.selectedDates = [];\r\n\t\t\t\t_this.focused = '';\r\n\t\t\t\t_this.views = {};\r\n\t\t\t\t_this.keys = [];\r\n\t\t\t\t_this.minRange = '';\r\n\t\t\t\t_this.maxRange = '';\r\n\r\n\t\t\t\tif (_this.opts.inline || !_this.elIsInput) {\r\n\t\t\t\t\t_this.$datepicker.closest('.datepicker-inline').remove();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_this.$datepicker.remove();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_handleAlreadySelectedDates: function (alreadySelected, selectedDate) {\r\n\t\t\t\tif (this.opts.range) {\r\n\t\t\t\t\tif (!this.opts.toggleSelected) {\r\n\t\t\t\t\t\t// Add possibility to select same date when range is true\r\n\t\t\t\t\t\tif (this.selectedDates.length != 2) {\r\n\t\t\t\t\t\t\tthis._trigger('clickCell', selectedDate);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.removeDate(selectedDate);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (this.opts.toggleSelected) {\r\n\t\t\t\t\tthis.removeDate(selectedDate);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Change last selected date to be able to change time when clicking on this cell\r\n\t\t\t\tif (!this.opts.toggleSelected) {\r\n\t\t\t\t\tthis.lastSelectedDate = alreadySelected;\r\n\t\t\t\t\tif (this.opts.timepicker) {\r\n\t\t\t\t\t\tthis.timepicker._setTime(alreadySelected);\r\n\t\t\t\t\t\tthis.timepicker.update();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onShowEvent: function (e) {\r\n\t\t\t\tif (!this.visible) {\r\n\t\t\t\t\tthis.show();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onBlur: function () {\r\n\t\t\t\tif (!this.inFocus && this.visible) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseDownDatepicker: function (e) {\r\n\t\t\t\tthis.inFocus = true;\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseUpDatepicker: function (e) {\r\n\t\t\t\tthis.inFocus = false;\r\n\t\t\t\te.originalEvent.inFocus = true;\r\n\t\t\t\tif (!e.originalEvent.timepickerFocus) this.$el.focus();\r\n\t\t\t},\r\n\r\n\t\t\t_onKeyUpGeneral: function (e) {\r\n\t\t\t\tvar val = this.$el.val();\r\n\r\n\t\t\t\tif (!val) {\r\n\t\t\t\t\tthis.clear();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onResize: function () {\r\n\t\t\t\tif (this.visible) {\r\n\t\t\t\t\tthis.setPosition();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseUpBody: function (e) {\r\n\t\t\t\tif (e.originalEvent.inFocus) return;\r\n\r\n\t\t\t\tif (this.visible && !this.inFocus) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseUpEl: function (e) {\r\n\t\t\t\te.originalEvent.inFocus = true;\r\n\t\t\t\tsetTimeout(this._onKeyUpGeneral.bind(this), 4);\r\n\t\t\t},\r\n\r\n\t\t\t_onKeyDown: function (e) {\r\n\t\t\t\tvar code = e.which;\r\n\t\t\t\tthis._registerKey(code);\r\n\r\n\t\t\t\t// Arrows\r\n\t\t\t\tif (code >= 37 && code <= 40) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tthis._focusNextCell(code);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Enter\r\n\t\t\t\tif (code == 13) {\r\n\t\t\t\t\tif (this.focused) {\r\n\t\t\t\t\t\tif (this._getCell(this.focused).hasClass('-disabled-')) return;\r\n\t\t\t\t\t\tif (this.view != this.opts.minView) {\r\n\t\t\t\t\t\t\tthis.down();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar alreadySelected = this._isSelected(this.focused, this.cellType);\r\n\r\n\t\t\t\t\t\t\tif (!alreadySelected) {\r\n\t\t\t\t\t\t\t\tif (this.timepicker) {\r\n\t\t\t\t\t\t\t\t\tthis.focused.setHours(this.timepicker.hours);\r\n\t\t\t\t\t\t\t\t\tthis.focused.setMinutes(this.timepicker.minutes);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthis.selectDate(this.focused);\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis._handleAlreadySelectedDates(alreadySelected, this.focused);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Esc\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onKeyUp: function (e) {\r\n\t\t\t\tvar code = e.which;\r\n\t\t\t\tthis._unRegisterKey(code);\r\n\t\t\t},\r\n\r\n\t\t\t_onHotKey: function (e, hotKey) {\r\n\t\t\t\tthis._handleHotKey(hotKey);\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseEnterCell: function (e) {\r\n\t\t\t\tvar $cell = $(e.target).closest('.datepicker--cell'),\r\n\t\t\t\t\tdate = this._getDateFromCell($cell);\r\n\r\n\t\t\t\t// Prevent from unnecessary rendering and setting new currentDate\r\n\t\t\t\tthis.silent = true;\r\n\r\n\t\t\t\tif (this.focused) {\r\n\t\t\t\t\tthis.focused = '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$cell.addClass('-focus-');\r\n\r\n\t\t\t\tthis.focused = date;\r\n\t\t\t\tthis.silent = false;\r\n\r\n\t\t\t\tif (this.opts.range && this.selectedDates.length == 1) {\r\n\t\t\t\t\tthis.minRange = this.selectedDates[0];\r\n\t\t\t\t\tthis.maxRange = '';\r\n\t\t\t\t\tif (datepicker.less(this.minRange, this.focused)) {\r\n\t\t\t\t\t\tthis.maxRange = this.minRange;\r\n\t\t\t\t\t\tthis.minRange = '';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.views[this.currentView]._update();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseLeaveCell: function (e) {\r\n\t\t\t\tvar $cell = $(e.target).closest('.datepicker--cell');\r\n\r\n\t\t\t\t$cell.removeClass('-focus-');\r\n\r\n\t\t\t\tthis.silent = true;\r\n\t\t\t\tthis.focused = '';\r\n\t\t\t\tthis.silent = false;\r\n\t\t\t},\r\n\r\n\t\t\t_onTimeChange: function (e, h, m) {\r\n\t\t\t\tvar date = new Date(),\r\n\t\t\t\t\tselectedDates = this.selectedDates,\r\n\t\t\t\t\tselected = false;\r\n\r\n\t\t\t\tif (selectedDates.length) {\r\n\t\t\t\t\tselected = true;\r\n\t\t\t\t\tdate = this.lastSelectedDate;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdate.setHours(h);\r\n\t\t\t\tdate.setMinutes(m);\r\n\r\n\t\t\t\tif (!selected && !this._getCell(date).hasClass('-disabled-')) {\r\n\t\t\t\t\tthis.selectDate(date);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._setInputValue();\r\n\t\t\t\t\tif (this.opts.onSelect) {\r\n\t\t\t\t\t\tthis._triggerOnChange();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_onClickCell: function (e, date) {\r\n\t\t\t\tif (this.timepicker) {\r\n\t\t\t\t\tdate.setHours(this.timepicker.hours);\r\n\t\t\t\t\tdate.setMinutes(this.timepicker.minutes);\r\n\t\t\t\t}\r\n\t\t\t\tthis.selectDate(date);\r\n\t\t\t},\r\n\r\n\t\t\tset focused(val) {\r\n\t\t\t\tif (!val && this.focused) {\r\n\t\t\t\t\tvar $cell = this._getCell(this.focused);\r\n\r\n\t\t\t\t\tif ($cell.length) {\r\n\t\t\t\t\t\t$cell.removeClass('-focus-');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis._focused = val;\r\n\t\t\t\tif (this.opts.range && this.selectedDates.length == 1) {\r\n\t\t\t\t\tthis.minRange = this.selectedDates[0];\r\n\t\t\t\t\tthis.maxRange = '';\r\n\t\t\t\t\tif (datepicker.less(this.minRange, this._focused)) {\r\n\t\t\t\t\t\tthis.maxRange = this.minRange;\r\n\t\t\t\t\t\tthis.minRange = '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (this.silent) return;\r\n\t\t\t\tthis.date = val;\r\n\t\t\t},\r\n\r\n\t\t\tget focused() {\r\n\t\t\t\treturn this._focused;\r\n\t\t\t},\r\n\r\n\t\t\tget parsedDate() {\r\n\t\t\t\treturn datepicker.getParsedDate(this.date);\r\n\t\t\t},\r\n\r\n\t\t\tset date(val) {\r\n\t\t\t\tif (!(val instanceof Date)) return;\r\n\r\n\t\t\t\tthis.currentDate = val;\r\n\r\n\t\t\t\tif (this.inited && !this.silent) {\r\n\t\t\t\t\tthis.views[this.view]._render();\r\n\t\t\t\t\tthis.nav._render();\r\n\t\t\t\t\tif (this.visible && this.elIsInput) {\r\n\t\t\t\t\t\tthis.setPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t},\r\n\r\n\t\t\tget date() {\r\n\t\t\t\treturn this.currentDate;\r\n\t\t\t},\r\n\r\n\t\t\tset view(val) {\r\n\t\t\t\tthis.viewIndex = this.viewIndexes.indexOf(val);\r\n\r\n\t\t\t\tif (this.viewIndex < 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.prevView = this.currentView;\r\n\t\t\t\tthis.currentView = val;\r\n\r\n\t\t\t\tif (this.inited) {\r\n\t\t\t\t\tif (!this.views[val]) {\r\n\t\t\t\t\t\tthis.views[val] = new $.fn.datepicker.Body(this, val, this.opts);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.views[val]._render();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.views[this.prevView].hide();\r\n\t\t\t\t\tthis.views[val].show();\r\n\t\t\t\t\tthis.nav._render();\r\n\r\n\t\t\t\t\tif (this.opts.onChangeView) {\r\n\t\t\t\t\t\tthis.opts.onChangeView(val);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.elIsInput && this.visible) this.setPosition();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn val;\r\n\t\t\t},\r\n\r\n\t\t\tget view() {\r\n\t\t\t\treturn this.currentView;\r\n\t\t\t},\r\n\r\n\t\t\tget cellType() {\r\n\t\t\t\treturn this.view.substring(0, this.view.length - 1);\r\n\t\t\t},\r\n\r\n\t\t\tget minTime() {\r\n\t\t\t\tvar min = datepicker.getParsedDate(this.minDate);\r\n\t\t\t\treturn new Date(min.year, min.month, min.date).getTime();\r\n\t\t\t},\r\n\r\n\t\t\tget maxTime() {\r\n\t\t\t\tvar max = datepicker.getParsedDate(this.maxDate);\r\n\t\t\t\treturn new Date(max.year, max.month, max.date).getTime();\r\n\t\t\t},\r\n\r\n\t\t\tget curDecade() {\r\n\t\t\t\treturn datepicker.getDecade(this.date);\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\t// Utils\r\n\t\t// -------------------------------------------------\r\n\r\n\t\tdatepicker.getDaysCount = function (date) {\r\n\t\t\treturn new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\r\n\t\t};\r\n\r\n\t\tdatepicker.getParsedDate = function (date) {\r\n\t\t\treturn {\r\n\t\t\t\tyear: date.getFullYear(),\r\n\t\t\t\tmonth: date.getMonth(),\r\n\t\t\t\tfullMonth: date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1, // One based\r\n\t\t\t\tdate: date.getDate(),\r\n\t\t\t\tfullDate: date.getDate() < 10 ? '0' + date.getDate() : date.getDate(),\r\n\t\t\t\tday: date.getDay(),\r\n\t\t\t\thours: date.getHours(),\r\n\t\t\t\tfullHours: date.getHours() < 10 ? '0' + date.getHours() : date.getHours(),\r\n\t\t\t\tminutes: date.getMinutes(),\r\n\t\t\t\tfullMinutes: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(),\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tdatepicker.getDecade = function (date) {\r\n\t\t\tvar firstYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\r\n\t\t\treturn [firstYear, firstYear + 9];\r\n\t\t};\r\n\r\n\t\tdatepicker.template = function (str, data) {\r\n\t\t\treturn str.replace(/#\\{([\\w]+)\\}/g, function (source, match) {\r\n\t\t\t\tif (data[match] || data[match] === 0) {\r\n\t\t\t\t\treturn data[match];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tdatepicker.isSame = function (date1, date2, type) {\r\n\t\t\tif (!date1 || !date2) return false;\r\n\t\t\tvar d1 = datepicker.getParsedDate(date1),\r\n\t\t\t\td2 = datepicker.getParsedDate(date2),\r\n\t\t\t\t_type = type ? type : 'day',\r\n\t\t\t\tconditions = {\r\n\t\t\t\t\tday: d1.date == d2.date && d1.month == d2.month && d1.year == d2.year,\r\n\t\t\t\t\tmonth: d1.month == d2.month && d1.year == d2.year,\r\n\t\t\t\t\tyear: d1.year == d2.year,\r\n\t\t\t\t};\r\n\r\n\t\t\treturn conditions[_type];\r\n\t\t};\r\n\r\n\t\tdatepicker.less = function (dateCompareTo, date, type) {\r\n\t\t\tif (!dateCompareTo || !date) return false;\r\n\t\t\treturn date.getTime() < dateCompareTo.getTime();\r\n\t\t};\r\n\r\n\t\tdatepicker.bigger = function (dateCompareTo, date, type) {\r\n\t\t\tif (!dateCompareTo || !date) return false;\r\n\t\t\treturn date.getTime() > dateCompareTo.getTime();\r\n\t\t};\r\n\r\n\t\tdatepicker.getLeadingZeroNum = function (num) {\r\n\t\t\treturn parseInt(num) < 10 ? '0' + num : num;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Returns copy of date with hours and minutes equals to 0\r\n\t\t * @param date {Date}\r\n\t\t */\r\n\t\tdatepicker.resetTime = function (date) {\r\n\t\t\tif (typeof date != 'object') return;\r\n\t\t\tdate = datepicker.getParsedDate(date);\r\n\t\t\treturn new Date(date.year, date.month, date.date);\r\n\t\t};\r\n\r\n\t\t$.fn.datepicker = function (options) {\r\n\t\t\treturn this.each(function () {\r\n\t\t\t\tif (!$.data(this, pluginName)) {\r\n\t\t\t\t\t$.data(this, pluginName, new Datepicker(this, options));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar _this = $.data(this, pluginName);\r\n\r\n\t\t\t\t\t_this.opts = $.extend(true, _this.opts, options);\r\n\t\t\t\t\t_this.update();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t$.fn.datepicker.Constructor = Datepicker;\r\n\r\n\t\t$.fn.datepicker.language = {\r\n\t\t\tru: {\r\n\t\t\t\tdays: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\r\n\t\t\t\tdaysShort: ['Вос', 'Пон', 'Вто', 'Сре', 'Чет', 'Пят', 'Суб'],\r\n\t\t\t\tdaysMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],\r\n\t\t\t\tmonths: [\r\n\t\t\t\t\t'Январь',\r\n\t\t\t\t\t'Февраль',\r\n\t\t\t\t\t'Март',\r\n\t\t\t\t\t'Апрель',\r\n\t\t\t\t\t'Май',\r\n\t\t\t\t\t'Июнь',\r\n\t\t\t\t\t'Июль',\r\n\t\t\t\t\t'Август',\r\n\t\t\t\t\t'Сентябрь',\r\n\t\t\t\t\t'Октябрь',\r\n\t\t\t\t\t'Ноябрь',\r\n\t\t\t\t\t'Декабрь',\r\n\t\t\t\t],\r\n\t\t\t\tmonthsShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\r\n\t\t\t\ttoday: 'Сегодня',\r\n\t\t\t\tclear: 'Очистить',\r\n\t\t\t\tdateFormat: 'dd.mm.yyyy',\r\n\t\t\t\ttimeFormat: 'hh:ii',\r\n\t\t\t\tfirstDay: 1,\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\t$(function () {\r\n\t\t\t$(autoInitSelector).datepicker();\r\n\t\t});\r\n\t})();\r\n\r\n\t(function () {\r\n\t\tvar templates = {\r\n\t\t\t\tdays:\r\n\t\t\t\t\t'' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
',\r\n\t\t\t\tmonths:\r\n\t\t\t\t\t'' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
',\r\n\t\t\t\tyears:\r\n\t\t\t\t\t'' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
',\r\n\t\t\t},\r\n\t\t\tdatepicker = $.fn.datepicker,\r\n\t\t\tdp = datepicker.Constructor;\r\n\r\n\t\tdatepicker.Body = function (d, type, opts) {\r\n\t\t\tthis.d = d;\r\n\t\t\tthis.type = type;\r\n\t\t\tthis.opts = opts;\r\n\t\t\tthis.$el = $('');\r\n\r\n\t\t\tif (this.opts.onlyTimepicker) return;\r\n\t\t\tthis.init();\r\n\t\t};\r\n\r\n\t\tdatepicker.Body.prototype = {\r\n\t\t\tinit: function () {\r\n\t\t\t\tthis._buildBaseHtml();\r\n\t\t\t\tthis._render();\r\n\r\n\t\t\t\tthis._bindEvents();\r\n\t\t\t},\r\n\r\n\t\t\t_bindEvents: function () {\r\n\t\t\t\tthis.$el.on('click', '.datepicker--cell', $.proxy(this._onClickCell, this));\r\n\t\t\t},\r\n\r\n\t\t\t_buildBaseHtml: function () {\r\n\t\t\t\tthis.$el = $(templates[this.type]).appendTo(this.d.$content);\r\n\t\t\t\tthis.$names = $('.datepicker--days-names', this.$el);\r\n\t\t\t\tthis.$cells = $('.datepicker--cells', this.$el);\r\n\t\t\t},\r\n\r\n\t\t\t_getDayNamesHtml: function (firstDay, curDay, html, i) {\r\n\t\t\t\tcurDay = curDay != undefined ? curDay : firstDay;\r\n\t\t\t\thtml = html ? html : '';\r\n\t\t\t\ti = i != undefined ? i : 0;\r\n\r\n\t\t\t\tif (i > 7) return html;\r\n\t\t\t\tif (curDay == 7) return this._getDayNamesHtml(firstDay, 0, html, ++i);\r\n\r\n\t\t\t\thtml +=\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tthis.d.loc.daysMin[curDay] +\r\n\t\t\t\t\t'
';\r\n\r\n\t\t\t\treturn this._getDayNamesHtml(firstDay, ++curDay, html, ++i);\r\n\t\t\t},\r\n\r\n\t\t\t_getCellContents: function (date, type) {\r\n\t\t\t\tvar classes = 'datepicker--cell datepicker--cell-' + type,\r\n\t\t\t\t\tcurrentDate = new Date(),\r\n\t\t\t\t\tparent = this.d,\r\n\t\t\t\t\tminRange = dp.resetTime(parent.minRange),\r\n\t\t\t\t\tmaxRange = dp.resetTime(parent.maxRange),\r\n\t\t\t\t\topts = parent.opts,\r\n\t\t\t\t\td = dp.getParsedDate(date),\r\n\t\t\t\t\trender = {},\r\n\t\t\t\t\thtml = d.date;\r\n\r\n\t\t\t\tswitch (type) {\r\n\t\t\t\t\tcase 'day':\r\n\t\t\t\t\t\tif (parent.isWeekend(d.day)) classes += ' -weekend-';\r\n\t\t\t\t\t\tif (d.month != this.d.parsedDate.month) {\r\n\t\t\t\t\t\t\tclasses += ' -other-month-';\r\n\t\t\t\t\t\t\tif (!opts.selectOtherMonths) {\r\n\t\t\t\t\t\t\t\tclasses += ' -disabled-';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (!opts.showOtherMonths) html = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'month':\r\n\t\t\t\t\t\thtml = parent.loc[parent.opts.monthsField][d.month];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'year':\r\n\t\t\t\t\t\tvar decade = parent.curDecade;\r\n\t\t\t\t\t\thtml = d.year;\r\n\t\t\t\t\t\tif (d.year < decade[0] || d.year > decade[1]) {\r\n\t\t\t\t\t\t\tclasses += ' -other-decade-';\r\n\t\t\t\t\t\t\tif (!opts.selectOtherYears) {\r\n\t\t\t\t\t\t\t\tclasses += ' -disabled-';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (!opts.showOtherYears) html = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.onRenderCell) {\r\n\t\t\t\t\trender = opts.onRenderCell(date, type) || {};\r\n\t\t\t\t\thtml = render.html ? render.html : html;\r\n\t\t\t\t\tclasses += render.classes ? ' ' + render.classes : '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.range) {\r\n\t\t\t\t\tif (dp.isSame(minRange, date, type)) classes += ' -range-from-';\r\n\t\t\t\t\tif (dp.isSame(maxRange, date, type)) classes += ' -range-to-';\r\n\r\n\t\t\t\t\tif (parent.selectedDates.length == 1 && parent.focused) {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t(dp.bigger(minRange, date) && dp.less(parent.focused, date)) ||\r\n\t\t\t\t\t\t\t(dp.less(maxRange, date) && dp.bigger(parent.focused, date))\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tclasses += ' -in-range-';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (dp.less(maxRange, date) && dp.isSame(parent.focused, date)) {\r\n\t\t\t\t\t\t\tclasses += ' -range-from-';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (dp.bigger(minRange, date) && dp.isSame(parent.focused, date)) {\r\n\t\t\t\t\t\t\tclasses += ' -range-to-';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (parent.selectedDates.length == 2) {\r\n\t\t\t\t\t\tif (dp.bigger(minRange, date) && dp.less(maxRange, date)) {\r\n\t\t\t\t\t\t\tclasses += ' -in-range-';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (dp.isSame(currentDate, date, type)) classes += ' -current-';\r\n\t\t\t\tif (parent.focused && dp.isSame(date, parent.focused, type)) classes += ' -focus-';\r\n\t\t\t\tif (parent._isSelected(date, type)) classes += ' -selected-';\r\n\t\t\t\tif (!parent._isInRange(date, type) || render.disabled) classes += ' -disabled-';\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\thtml: html,\r\n\t\t\t\t\tclasses: classes,\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Calculates days number to render. Generates days html and returns it.\r\n\t\t\t * @param {object} date - Date object\r\n\t\t\t * @returns {string}\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\t_getDaysHtml: function (date) {\r\n\t\t\t\tvar totalMonthDays = dp.getDaysCount(date),\r\n\t\t\t\t\tfirstMonthDay = new Date(date.getFullYear(), date.getMonth(), 1).getDay(),\r\n\t\t\t\t\tlastMonthDay = new Date(date.getFullYear(), date.getMonth(), totalMonthDays).getDay(),\r\n\t\t\t\t\tdaysFromPevMonth = firstMonthDay - this.d.loc.firstDay,\r\n\t\t\t\t\tdaysFromNextMonth = 6 - lastMonthDay + this.d.loc.firstDay;\r\n\r\n\t\t\t\tdaysFromPevMonth = daysFromPevMonth < 0 ? daysFromPevMonth + 7 : daysFromPevMonth;\r\n\t\t\t\tdaysFromNextMonth = daysFromNextMonth > 6 ? daysFromNextMonth - 7 : daysFromNextMonth;\r\n\r\n\t\t\t\tvar startDayIndex = -daysFromPevMonth + 1,\r\n\t\t\t\t\tm,\r\n\t\t\t\t\ty,\r\n\t\t\t\t\thtml = '';\r\n\r\n\t\t\t\tfor (var i = startDayIndex, max = totalMonthDays + daysFromNextMonth; i <= max; i++) {\r\n\t\t\t\t\ty = date.getFullYear();\r\n\t\t\t\t\tm = date.getMonth();\r\n\r\n\t\t\t\t\thtml += this._getDayHtml(new Date(y, m, i));\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn html;\r\n\t\t\t},\r\n\r\n\t\t\t_getDayHtml: function (date) {\r\n\t\t\t\tvar content = this._getCellContents(date, 'day');\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tcontent.html +\r\n\t\t\t\t\t'
'\r\n\t\t\t\t);\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Generates months html\r\n\t\t\t * @param {object} date - date instance\r\n\t\t\t * @returns {string}\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\t_getMonthsHtml: function (date) {\r\n\t\t\t\tvar html = '',\r\n\t\t\t\t\td = dp.getParsedDate(date),\r\n\t\t\t\t\ti = 0;\r\n\r\n\t\t\t\twhile (i < 12) {\r\n\t\t\t\t\thtml += this._getMonthHtml(new Date(d.year, i));\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn html;\r\n\t\t\t},\r\n\r\n\t\t\t_getMonthHtml: function (date) {\r\n\t\t\t\tvar content = this._getCellContents(date, 'month');\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tcontent.html +\r\n\t\t\t\t\t'
'\r\n\t\t\t\t);\r\n\t\t\t},\r\n\r\n\t\t\t_getYearsHtml: function (date) {\r\n\t\t\t\tvar d = dp.getParsedDate(date),\r\n\t\t\t\t\tdecade = dp.getDecade(date),\r\n\t\t\t\t\tfirstYear = decade[0] - 1,\r\n\t\t\t\t\thtml = '',\r\n\t\t\t\t\ti = firstYear;\r\n\r\n\t\t\t\tfor (i; i <= decade[1] + 1; i++) {\r\n\t\t\t\t\thtml += this._getYearHtml(new Date(i, 0));\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn html;\r\n\t\t\t},\r\n\r\n\t\t\t_getYearHtml: function (date) {\r\n\t\t\t\tvar content = this._getCellContents(date, 'year');\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\tcontent.html +\r\n\t\t\t\t\t'
'\r\n\t\t\t\t);\r\n\t\t\t},\r\n\r\n\t\t\t_renderTypes: {\r\n\t\t\t\tdays: function () {\r\n\t\t\t\t\tvar dayNames = this._getDayNamesHtml(this.d.loc.firstDay),\r\n\t\t\t\t\t\tdays = this._getDaysHtml(this.d.currentDate);\r\n\r\n\t\t\t\t\tthis.$cells.html(days);\r\n\t\t\t\t\tthis.$names.html(dayNames);\r\n\t\t\t\t},\r\n\t\t\t\tmonths: function () {\r\n\t\t\t\t\tvar html = this._getMonthsHtml(this.d.currentDate);\r\n\r\n\t\t\t\t\tthis.$cells.html(html);\r\n\t\t\t\t},\r\n\t\t\t\tyears: function () {\r\n\t\t\t\t\tvar html = this._getYearsHtml(this.d.currentDate);\r\n\r\n\t\t\t\t\tthis.$cells.html(html);\r\n\t\t\t\t},\r\n\t\t\t},\r\n\r\n\t\t\t_render: function () {\r\n\t\t\t\tif (this.opts.onlyTimepicker) return;\r\n\t\t\t\tthis._renderTypes[this.type].bind(this)();\r\n\t\t\t},\r\n\r\n\t\t\t_update: function () {\r\n\t\t\t\tvar $cells = $('.datepicker--cell', this.$cells),\r\n\t\t\t\t\t_this = this,\r\n\t\t\t\t\tclasses,\r\n\t\t\t\t\t$cell,\r\n\t\t\t\t\tdate;\r\n\t\t\t\t$cells.each(function (cell, i) {\r\n\t\t\t\t\t$cell = $(this);\r\n\t\t\t\t\tdate = _this.d._getDateFromCell($(this));\r\n\t\t\t\t\tclasses = _this._getCellContents(date, _this.d.cellType);\r\n\t\t\t\t\t$cell.attr('class', classes.classes);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\tshow: function () {\r\n\t\t\t\tif (this.opts.onlyTimepicker) return;\r\n\t\t\t\tthis.$el.addClass('active');\r\n\t\t\t\tthis.acitve = true;\r\n\t\t\t},\r\n\r\n\t\t\thide: function () {\r\n\t\t\t\tthis.$el.removeClass('active');\r\n\t\t\t\tthis.active = false;\r\n\t\t\t},\r\n\r\n\t\t\t// Events\r\n\t\t\t// -------------------------------------------------\r\n\r\n\t\t\t_handleClick: function (el) {\r\n\t\t\t\tvar date = el.data('date') || 1,\r\n\t\t\t\t\tmonth = el.data('month') || 0,\r\n\t\t\t\t\tyear = el.data('year') || this.d.parsedDate.year,\r\n\t\t\t\t\tdp = this.d;\r\n\t\t\t\t// Change view if min view does not reach yet\r\n\t\t\t\tif (dp.view != this.opts.minView) {\r\n\t\t\t\t\tdp.down(new Date(year, month, date));\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t// Select date if min view is reached\r\n\t\t\t\tvar selectedDate = new Date(year, month, date),\r\n\t\t\t\t\talreadySelected = this.d._isSelected(selectedDate, this.d.cellType);\r\n\r\n\t\t\t\tif (!alreadySelected) {\r\n\t\t\t\t\tdp._trigger('clickCell', selectedDate);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdp._handleAlreadySelectedDates.bind(dp, alreadySelected, selectedDate)();\r\n\t\t\t},\r\n\r\n\t\t\t_onClickCell: function (e) {\r\n\t\t\t\tvar $el = $(e.target).closest('.datepicker--cell');\r\n\r\n\t\t\t\tif ($el.hasClass('-disabled-')) return;\r\n\r\n\t\t\t\tthis._handleClick.bind(this)($el);\r\n\t\t\t},\r\n\t\t};\r\n\t})();\r\n\r\n\t(function () {\r\n\t\tvar template =\r\n\t\t\t\t'' +\r\n\t\t\t\t'
#{prevHtml}
' +\r\n\t\t\t\t'
#{title}
' +\r\n\t\t\t\t'
#{nextHtml}
',\r\n\t\t\tbuttonsContainerTemplate = '
',\r\n\t\t\tbutton = '#{label}',\r\n\t\t\tdatepicker = $.fn.datepicker,\r\n\t\t\tdp = datepicker.Constructor;\r\n\r\n\t\tdatepicker.Navigation = function (d, opts) {\r\n\t\t\tthis.d = d;\r\n\t\t\tthis.opts = opts;\r\n\r\n\t\t\tthis.$buttonsContainer = '';\r\n\r\n\t\t\tthis.init();\r\n\t\t};\r\n\r\n\t\tdatepicker.Navigation.prototype = {\r\n\t\t\tinit: function () {\r\n\t\t\t\tthis._buildBaseHtml();\r\n\t\t\t\tthis._bindEvents();\r\n\t\t\t},\r\n\r\n\t\t\t_bindEvents: function () {\r\n\t\t\t\tthis.d.$nav.on('click', '.datepicker--nav-action', $.proxy(this._onClickNavButton, this));\r\n\t\t\t\tthis.d.$nav.on('click', '.datepicker--nav-title', $.proxy(this._onClickNavTitle, this));\r\n\t\t\t\tthis.d.$datepicker.on('click', '.datepicker--button', $.proxy(this._onClickNavButton, this));\r\n\t\t\t},\r\n\r\n\t\t\t_buildBaseHtml: function () {\r\n\t\t\t\tif (!this.opts.onlyTimepicker) {\r\n\t\t\t\t\tthis._render();\r\n\t\t\t\t}\r\n\t\t\t\tthis._addButtonsIfNeed();\r\n\t\t\t},\r\n\r\n\t\t\t_addButtonsIfNeed: function () {\r\n\t\t\t\tif (this.opts.todayButton) {\r\n\t\t\t\t\tthis._addButton('today');\r\n\t\t\t\t}\r\n\t\t\t\tif (this.opts.clearButton) {\r\n\t\t\t\t\tthis._addButton('clear');\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_render: function () {\r\n\t\t\t\tvar title = this._getTitle(this.d.currentDate),\r\n\t\t\t\t\thtml = dp.template(template, $.extend({ title: title }, this.opts));\r\n\t\t\t\tthis.d.$nav.html(html);\r\n\t\t\t\tif (this.d.view == 'years') {\r\n\t\t\t\t\t$('.datepicker--nav-title', this.d.$nav).addClass('-disabled-');\r\n\t\t\t\t}\r\n\t\t\t\tthis.setNavStatus();\r\n\t\t\t},\r\n\r\n\t\t\t_getTitle: function (date) {\r\n\t\t\t\treturn this.d.formatDate(this.opts.navTitles[this.d.view], date);\r\n\t\t\t},\r\n\r\n\t\t\t_addButton: function (type) {\r\n\t\t\t\tif (!this.$buttonsContainer.length) {\r\n\t\t\t\t\tthis._addButtonsContainer();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar data = {\r\n\t\t\t\t\t\taction: type,\r\n\t\t\t\t\t\tlabel: this.d.loc[type],\r\n\t\t\t\t\t},\r\n\t\t\t\t\thtml = dp.template(button, data);\r\n\r\n\t\t\t\tif ($('[data-action=' + type + ']', this.$buttonsContainer).length) return;\r\n\t\t\t\tthis.$buttonsContainer.append(html);\r\n\t\t\t},\r\n\r\n\t\t\t_addButtonsContainer: function () {\r\n\t\t\t\tthis.d.$datepicker.append(buttonsContainerTemplate);\r\n\t\t\t\tthis.$buttonsContainer = $('.datepicker--buttons', this.d.$datepicker);\r\n\t\t\t},\r\n\r\n\t\t\tsetNavStatus: function () {\r\n\t\t\t\tif (!(this.opts.minDate || this.opts.maxDate) || !this.opts.disableNavWhenOutOfRange) return;\r\n\r\n\t\t\t\tvar date = this.d.parsedDate,\r\n\t\t\t\t\tm = date.month,\r\n\t\t\t\t\ty = date.year,\r\n\t\t\t\t\td = date.date;\r\n\r\n\t\t\t\tswitch (this.d.view) {\r\n\t\t\t\t\tcase 'days':\r\n\t\t\t\t\t\tif (!this.d._isInRange(new Date(y, m - 1, 1), 'month')) {\r\n\t\t\t\t\t\t\tthis._disableNav('prev');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!this.d._isInRange(new Date(y, m + 1, 1), 'month')) {\r\n\t\t\t\t\t\t\tthis._disableNav('next');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'months':\r\n\t\t\t\t\t\tif (!this.d._isInRange(new Date(y - 1, m, d), 'year')) {\r\n\t\t\t\t\t\t\tthis._disableNav('prev');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!this.d._isInRange(new Date(y + 1, m, d), 'year')) {\r\n\t\t\t\t\t\t\tthis._disableNav('next');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'years':\r\n\t\t\t\t\t\tvar decade = dp.getDecade(this.d.date);\r\n\t\t\t\t\t\tif (!this.d._isInRange(new Date(decade[0] - 1, 0, 1), 'year')) {\r\n\t\t\t\t\t\t\tthis._disableNav('prev');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!this.d._isInRange(new Date(decade[1] + 1, 0, 1), 'year')) {\r\n\t\t\t\t\t\t\tthis._disableNav('next');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_disableNav: function (nav) {\r\n\t\t\t\t$('[data-action=\"' + nav + '\"]', this.d.$nav).addClass('-disabled-');\r\n\t\t\t},\r\n\r\n\t\t\t_activateNav: function (nav) {\r\n\t\t\t\t$('[data-action=\"' + nav + '\"]', this.d.$nav).removeClass('-disabled-');\r\n\t\t\t},\r\n\r\n\t\t\t_onClickNavButton: function (e) {\r\n\t\t\t\tvar $el = $(e.target).closest('[data-action]'),\r\n\t\t\t\t\taction = $el.data('action');\r\n\r\n\t\t\t\tthis.d[action]();\r\n\t\t\t},\r\n\r\n\t\t\t_onClickNavTitle: function (e) {\r\n\t\t\t\tif ($(e.target).hasClass('-disabled-')) return;\r\n\r\n\t\t\t\tif (this.d.view == 'days') {\r\n\t\t\t\t\treturn (this.d.view = 'months');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.d.view = 'years';\r\n\t\t\t},\r\n\t\t};\r\n\t})();\r\n\r\n\t(function () {\r\n\t\tvar template =\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t' #{hourVisible}' +\r\n\t\t\t\t' :' +\r\n\t\t\t\t' #{minValue}' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t' ' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t' ' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
' +\r\n\t\t\t\t'
',\r\n\t\t\tdatepicker = $.fn.datepicker,\r\n\t\t\tdp = datepicker.Constructor;\r\n\r\n\t\tdatepicker.Timepicker = function (inst, opts) {\r\n\t\t\tthis.d = inst;\r\n\t\t\tthis.opts = opts;\r\n\r\n\t\t\tthis.init();\r\n\t\t};\r\n\r\n\t\tdatepicker.Timepicker.prototype = {\r\n\t\t\tinit: function () {\r\n\t\t\t\tvar input = 'input';\r\n\t\t\t\tthis._setTime(this.d.date);\r\n\t\t\t\tthis._buildHTML();\r\n\r\n\t\t\t\tif (navigator.userAgent.match(/trident/gi)) {\r\n\t\t\t\t\tinput = 'change';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.d.$el.on('selectDate', this._onSelectDate.bind(this));\r\n\t\t\t\tthis.$ranges.on(input, this._onChangeRange.bind(this));\r\n\t\t\t\tthis.$ranges.on('mouseup', this._onMouseUpRange.bind(this));\r\n\t\t\t\tthis.$ranges.on('mousemove focus ', this._onMouseEnterRange.bind(this));\r\n\t\t\t\tthis.$ranges.on('mouseout blur', this._onMouseOutRange.bind(this));\r\n\t\t\t},\r\n\r\n\t\t\t_setTime: function (date) {\r\n\t\t\t\tvar _date = dp.getParsedDate(date);\r\n\r\n\t\t\t\tthis._handleDate(date);\r\n\t\t\t\tthis.hours = _date.hours < this.minHours ? this.minHours : _date.hours;\r\n\t\t\t\tthis.minutes = _date.minutes < this.minMinutes ? this.minMinutes : _date.minutes;\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Sets minHours and minMinutes from date (usually it's a minDate)\r\n\t\t\t * Also changes minMinutes if current hours are bigger then @date hours\r\n\t\t\t * @param date {Date}\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\t_setMinTimeFromDate: function (date) {\r\n\t\t\t\tthis.minHours = date.getHours();\r\n\t\t\t\tthis.minMinutes = date.getMinutes();\r\n\r\n\t\t\t\t// If, for example, min hours are 10, and current hours are 12,\r\n\t\t\t\t// update minMinutes to default value, to be able to choose whole range of values\r\n\t\t\t\tif (this.d.lastSelectedDate) {\r\n\t\t\t\t\tif (this.d.lastSelectedDate.getHours() > date.getHours()) {\r\n\t\t\t\t\t\tthis.minMinutes = this.opts.minMinutes;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_setMaxTimeFromDate: function (date) {\r\n\t\t\t\tthis.maxHours = date.getHours();\r\n\t\t\t\tthis.maxMinutes = date.getMinutes();\r\n\r\n\t\t\t\tif (this.d.lastSelectedDate) {\r\n\t\t\t\t\tif (this.d.lastSelectedDate.getHours() < date.getHours()) {\r\n\t\t\t\t\t\tthis.maxMinutes = this.opts.maxMinutes;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_setDefaultMinMaxTime: function () {\r\n\t\t\t\tvar maxHours = 23,\r\n\t\t\t\t\tmaxMinutes = 59,\r\n\t\t\t\t\topts = this.opts;\r\n\r\n\t\t\t\tthis.minHours = opts.minHours < 0 || opts.minHours > maxHours ? 0 : opts.minHours;\r\n\t\t\t\tthis.minMinutes = opts.minMinutes < 0 || opts.minMinutes > maxMinutes ? 0 : opts.minMinutes;\r\n\t\t\t\tthis.maxHours = opts.maxHours < 0 || opts.maxHours > maxHours ? maxHours : opts.maxHours;\r\n\t\t\t\tthis.maxMinutes = opts.maxMinutes < 0 || opts.maxMinutes > maxMinutes ? maxMinutes : opts.maxMinutes;\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Looks for min/max hours/minutes and if current values\r\n\t\t\t * are out of range sets valid values.\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\t_validateHoursMinutes: function (date) {\r\n\t\t\t\tif (this.hours < this.minHours) {\r\n\t\t\t\t\tthis.hours = this.minHours;\r\n\t\t\t\t} else if (this.hours > this.maxHours) {\r\n\t\t\t\t\tthis.hours = this.maxHours;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.minutes < this.minMinutes) {\r\n\t\t\t\t\tthis.minutes = this.minMinutes;\r\n\t\t\t\t} else if (this.minutes > this.maxMinutes) {\r\n\t\t\t\t\tthis.minutes = this.maxMinutes;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_buildHTML: function () {\r\n\t\t\t\tvar lz = dp.getLeadingZeroNum,\r\n\t\t\t\t\tdata = {\r\n\t\t\t\t\t\thourMin: this.minHours,\r\n\t\t\t\t\t\thourMax: lz(this.maxHours),\r\n\t\t\t\t\t\thourStep: this.opts.hoursStep,\r\n\t\t\t\t\t\thourValue: this.hours,\r\n\t\t\t\t\t\thourVisible: lz(this.displayHours),\r\n\t\t\t\t\t\tminMin: this.minMinutes,\r\n\t\t\t\t\t\tminMax: lz(this.maxMinutes),\r\n\t\t\t\t\t\tminStep: this.opts.minutesStep,\r\n\t\t\t\t\t\tminValue: lz(this.minutes),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_template = dp.template(template, data);\r\n\r\n\t\t\t\tthis.$timepicker = $(_template).appendTo(this.d.$datepicker);\r\n\t\t\t\tthis.$ranges = $('[type=\"range\"]', this.$timepicker);\r\n\t\t\t\tthis.$hours = $('[name=\"hours\"]', this.$timepicker);\r\n\t\t\t\tthis.$minutes = $('[name=\"minutes\"]', this.$timepicker);\r\n\t\t\t\tthis.$hoursText = $('.datepicker--time-current-hours', this.$timepicker);\r\n\t\t\t\tthis.$minutesText = $('.datepicker--time-current-minutes', this.$timepicker);\r\n\r\n\t\t\t\tif (this.d.ampm) {\r\n\t\t\t\t\tthis.$ampm = $('')\r\n\t\t\t\t\t\t.appendTo($('.datepicker--time-current', this.$timepicker))\r\n\t\t\t\t\t\t.html(this.dayPeriod);\r\n\r\n\t\t\t\t\tthis.$timepicker.addClass('-am-pm-');\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_updateCurrentTime: function () {\r\n\t\t\t\tvar h = dp.getLeadingZeroNum(this.displayHours),\r\n\t\t\t\t\tm = dp.getLeadingZeroNum(this.minutes);\r\n\r\n\t\t\t\tthis.$hoursText.html(h);\r\n\t\t\t\tthis.$minutesText.html(m);\r\n\r\n\t\t\t\tif (this.d.ampm) {\r\n\t\t\t\t\tthis.$ampm.html(this.dayPeriod);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t_updateRanges: function () {\r\n\t\t\t\tthis.$hours\r\n\t\t\t\t\t.attr({\r\n\t\t\t\t\t\tmin: this.minHours,\r\n\t\t\t\t\t\tmax: this.maxHours,\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.val(this.hours);\r\n\r\n\t\t\t\tthis.$minutes\r\n\t\t\t\t\t.attr({\r\n\t\t\t\t\t\tmin: this.minMinutes,\r\n\t\t\t\t\t\tmax: this.maxMinutes,\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.val(this.minutes);\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Sets minHours, minMinutes etc. from date. If date is not passed, than sets\r\n\t\t\t * values from options\r\n\t\t\t * @param [date] {object} - Date object, to get values from\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\t_handleDate: function (date) {\r\n\t\t\t\tthis._setDefaultMinMaxTime();\r\n\t\t\t\tif (date) {\r\n\t\t\t\t\tif (dp.isSame(date, this.d.opts.minDate)) {\r\n\t\t\t\t\t\tthis._setMinTimeFromDate(this.d.opts.minDate);\r\n\t\t\t\t\t} else if (dp.isSame(date, this.d.opts.maxDate)) {\r\n\t\t\t\t\t\tthis._setMaxTimeFromDate(this.d.opts.maxDate);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._validateHoursMinutes(date);\r\n\t\t\t},\r\n\r\n\t\t\tupdate: function () {\r\n\t\t\t\tthis._updateRanges();\r\n\t\t\t\tthis._updateCurrentTime();\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Calculates valid hour value to display in text input and datepicker's body.\r\n\t\t\t * @param date {Date|Number} - date or hours\r\n\t\t\t * @param [ampm] {Boolean} - 12 hours mode\r\n\t\t\t * @returns {{hours: *, dayPeriod: string}}\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\t_getValidHoursFromDate: function (date, ampm) {\r\n\t\t\t\tvar d = date,\r\n\t\t\t\t\thours = date;\r\n\r\n\t\t\t\tif (date instanceof Date) {\r\n\t\t\t\t\td = dp.getParsedDate(date);\r\n\t\t\t\t\thours = d.hours;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar _ampm = ampm || this.d.ampm,\r\n\t\t\t\t\tdayPeriod = 'am';\r\n\r\n\t\t\t\tif (_ampm) {\r\n\t\t\t\t\tswitch (true) {\r\n\t\t\t\t\t\tcase hours == 0:\r\n\t\t\t\t\t\t\thours = 12;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase hours == 12:\r\n\t\t\t\t\t\t\tdayPeriod = 'pm';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase hours > 11:\r\n\t\t\t\t\t\t\thours = hours - 12;\r\n\t\t\t\t\t\t\tdayPeriod = 'pm';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\thours: hours,\r\n\t\t\t\t\tdayPeriod: dayPeriod,\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tset hours(val) {\r\n\t\t\t\tthis._hours = val;\r\n\r\n\t\t\t\tvar displayHours = this._getValidHoursFromDate(val);\r\n\r\n\t\t\t\tthis.displayHours = displayHours.hours;\r\n\t\t\t\tthis.dayPeriod = displayHours.dayPeriod;\r\n\t\t\t},\r\n\r\n\t\t\tget hours() {\r\n\t\t\t\treturn this._hours;\r\n\t\t\t},\r\n\r\n\t\t\t// Events\r\n\t\t\t// -------------------------------------------------\r\n\r\n\t\t\t_onChangeRange: function (e) {\r\n\t\t\t\tvar $target = $(e.target),\r\n\t\t\t\t\tname = $target.attr('name');\r\n\r\n\t\t\t\tthis.d.timepickerIsActive = true;\r\n\r\n\t\t\t\tthis[name] = $target.val();\r\n\t\t\t\tthis._updateCurrentTime();\r\n\t\t\t\tthis.d._trigger('timeChange', [this.hours, this.minutes]);\r\n\r\n\t\t\t\tthis._handleDate(this.d.lastSelectedDate);\r\n\t\t\t\tthis.update();\r\n\t\t\t},\r\n\r\n\t\t\t_onSelectDate: function (e, data) {\r\n\t\t\t\tthis._handleDate(data);\r\n\t\t\t\tthis.update();\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseEnterRange: function (e) {\r\n\t\t\t\tvar name = $(e.target).attr('name');\r\n\t\t\t\t$('.datepicker--time-current-' + name, this.$timepicker).addClass('-focus-');\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseOutRange: function (e) {\r\n\t\t\t\tvar name = $(e.target).attr('name');\r\n\t\t\t\tif (this.d.inFocus) return; // Prevent removing focus when mouse out of range slider\r\n\t\t\t\t$('.datepicker--time-current-' + name, this.$timepicker).removeClass('-focus-');\r\n\t\t\t},\r\n\r\n\t\t\t_onMouseUpRange: function (e) {\r\n\t\t\t\tthis.d.timepickerIsActive = false;\r\n\t\t\t},\r\n\t\t};\r\n\t})();\r\n})(window, jQuery);\r\n","/* eslint-disable */\r\n$.fn.datepicker.language['de'] = {\r\n\tdays: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],\r\n\tdaysShort: ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'],\r\n\tdaysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\r\n\tmonths: [\r\n\t\t'Januar',\r\n\t\t'Februar',\r\n\t\t'März',\r\n\t\t'April',\r\n\t\t'Mai',\r\n\t\t'Juni',\r\n\t\t'Juli',\r\n\t\t'August',\r\n\t\t'September',\r\n\t\t'Oktober',\r\n\t\t'November',\r\n\t\t'Dezember',\r\n\t],\r\n\tmonthsShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\r\n\ttoday: 'Heute',\r\n\tclear: 'Aufräumen',\r\n\tdateFormat: 'dd.mm.yyyy',\r\n\ttimeFormat: 'hh:ii',\r\n\tfirstDay: 1,\r\n};\r\n","/* eslint-disable */\r\n$.fn.datepicker.language['en'] = {\r\n\tdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n\tdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n\tdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\r\n\tmonths: [\r\n\t\t'January',\r\n\t\t'February',\r\n\t\t'March',\r\n\t\t'April',\r\n\t\t'May',\r\n\t\t'June',\r\n\t\t'July',\r\n\t\t'August',\r\n\t\t'September',\r\n\t\t'October',\r\n\t\t'November',\r\n\t\t'December',\r\n\t],\r\n\tmonthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n\ttoday: 'Today',\r\n\tclear: 'Clear',\r\n\tdateFormat: 'mm/dd/yyyy',\r\n\ttimeFormat: 'hh:ii aa',\r\n\tfirstDay: 0,\r\n};\r\n","/* eslint-disable */\r\n$.fn.datepicker.language['hr'] = {\r\n\tdays: ['Nedjelja', 'Ponedjeljak', 'Utorak', 'Srijeda', 'Četvrtak', 'Petak', 'Subota'],\r\n\tdaysShort: ['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub'],\r\n\tdaysMin: ['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub'],\r\n\tmonths: [\r\n\t\t'Siječanj',\r\n\t\t'Veljača',\r\n\t\t'Ožujak',\r\n\t\t'Travanj',\r\n\t\t'Svibanj',\r\n\t\t'Lipanj',\r\n\t\t'Srpanj',\r\n\t\t'Kolovoz',\r\n\t\t'Rujan',\r\n\t\t'Listopad',\r\n\t\t'Studeni',\r\n\t\t'Prosinac',\r\n\t],\r\n\tmonthsShort: ['sijec', 'velj', 'ozuj', 'trav', 'svib', 'lip', 'srp', 'kol', 'ruj', 'list', 'stud', 'pros'],\r\n\ttoday: 'Danas',\r\n\tclear: 'Očistiti',\r\n\tdateFormat: 'dd.mm.yyyy',\r\n\ttimeFormat: 'hh:ii',\r\n\tfirstDay: 1,\r\n};\r\n","/* eslint-disable */\r\n$.fn.datepicker.language['nl'] = {\r\n\tdays: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\r\n\tdaysShort: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\r\n\tdaysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\r\n\tmonths: [\r\n\t\t'Januari',\r\n\t\t'Februari',\r\n\t\t'Maart',\r\n\t\t'April',\r\n\t\t'Mei',\r\n\t\t'Juni',\r\n\t\t'Juli',\r\n\t\t'Augustus',\r\n\t\t'September',\r\n\t\t'Oktober',\r\n\t\t'November',\r\n\t\t'December',\r\n\t],\r\n\tmonthsShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\r\n\ttoday: 'Vandaag',\r\n\tclear: 'Legen',\r\n\tdateFormat: 'dd-MM-yy',\r\n\ttimeFormat: 'hh:ii',\r\n\tfirstDay: 0,\r\n};\r\n","/* eslint-disable */\r\n$.fn.datepicker.language['pl'] = {\r\n\tdays: ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'],\r\n\tdaysShort: ['Nie', 'Pon', 'Wto', 'Śro', 'Czw', 'Pią', 'Sob'],\r\n\tdaysMin: ['Nd', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'So'],\r\n\tmonths: [\r\n\t\t'Styczeń',\r\n\t\t'Luty',\r\n\t\t'Marzec',\r\n\t\t'Kwiecień',\r\n\t\t'Maj',\r\n\t\t'Czerwiec',\r\n\t\t'Lipiec',\r\n\t\t'Sierpień',\r\n\t\t'Wrzesień',\r\n\t\t'Październik',\r\n\t\t'Listopad',\r\n\t\t'Grudzień',\r\n\t],\r\n\tmonthsShort: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'],\r\n\ttoday: 'Dzisiaj',\r\n\tclear: 'Wyczyść',\r\n\tdateFormat: 'yyyy-mm-dd',\r\n\ttimeFormat: 'hh:ii:aa',\r\n\tfirstDay: 1,\r\n};\r\n","/* eslint-disable */\r\n$.fn.datepicker.language['sk'] = {\r\n\tdays: ['Nedeľa', 'Pondelok', 'Utorok', 'Streda', 'Štvrtok', 'Piatok', 'Sobota'],\r\n\tdaysShort: ['Ned', 'Pon', 'Uto', 'Str', 'Štv', 'Pia', 'Sob'],\r\n\tdaysMin: ['Ne', 'Po', 'Ut', 'St', 'Št', 'Pi', 'So'],\r\n\tmonths: [\r\n\t\t'Január',\r\n\t\t'Február',\r\n\t\t'Marec',\r\n\t\t'Apríl',\r\n\t\t'Máj',\r\n\t\t'Jún',\r\n\t\t'Júl',\r\n\t\t'August',\r\n\t\t'September',\r\n\t\t'Október',\r\n\t\t'November',\r\n\t\t'December',\r\n\t],\r\n\tmonthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Máj', 'Jún', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\r\n\ttoday: 'Dnes',\r\n\tclear: 'Vymazať',\r\n\tdateFormat: 'dd.mm.yyyy',\r\n\ttimeFormat: 'hh:ii',\r\n\tfirstDay: 1,\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"datePickerInput\":\"datePickerInput_TnGTjeI\",\"datePickerInput_invalid\":\"datePickerInput_invalid_IOc1VLF\",\"datePickerInput_small\":\"datePickerInput_small__K3qUFb\",\"datePickerInput_medium\":\"datePickerInput_medium_yJXdXkR\",\"datePickerInput_large\":\"datePickerInput_large_CwLnUza\",\"datePickerInput_disabled\":\"datePickerInput_disabled_VDlwjr1\",\"datePickerBtn\":\"datePickerBtn_aqWfS9H\",\"datePickerBtn_small\":\"datePickerBtn_small_vuzJi9m\",\"datePickerBtn_medium\":\"datePickerBtn_medium_g5EUU79\",\"datePickerBtn_large\":\"datePickerBtn_large__YfrGm4\",\"datePicker\":\"datePicker_oIklTMf\",\"datePicker_partiallyRequired\":\"datePicker_partiallyRequired_JPIqswN\",\"datePickerTooltip\":\"datePickerTooltip_Qdp_jBD\",\"datePickerBtn_disable\":\"datePickerBtn_disable_iI9AqkK\",\"btnIcon\":\"btnIcon_K915iDj\"};"],"names":["DatePickerInput","_ref","dateFormat","dataTestId","size","disabled","value","name","onChange","onBlur","onFocus","onKeyDown","invalid","inputRef","useRef","translate","useContext","TranslationContext","datePickerClasses","classNames","classes","datePickerInput","datePickerInput_disabled","datePickerInput_invalid","datePickerInput_small","datePickerInput_medium","datePickerInput_large","mask","replace","_jsx","InputMask","maskChar","children","className","placeholder","codes","ddMmYyyy","autoComplete","ref","DatePickerTooltip","handleSelectAirDatePicker","minDate","maxDate","airDatePickerRef","useEffect","translations","activeLanguage","store","getState","$airDatePicker","$","current","isValidDate","moment","toUpperCase","isValid","minDateMoment","maxDateMoment","airDatePickerOptions","language","firstDay","onSelect","formattedDate","_d","datepicker","click","e","stopPropagation","dd","mm","yyyy","toString","split","data","selectDate","Date","TooltipTip","datePickerTooltip","datePickerBox","DatePickerTooltipBtn","tooltipPosition","tooltipAlign","tooltipBtnGroupName","datePickerBtnClasses","datePickerBtn","datePickerBtn_disable","datePickerBtn_small","datePickerBtn_medium","datePickerBtn_large","TooltipBtn","tooltip","groupName","tabIndex","Calendar","btnIcon","EMPTY_FUNCTION","DatePicker","memo","style","prevValueRef","rootClasses","datePicker","prevValue","isNull","closeLastTooltipByName","setDatePickerInputValue","_jsxs","event","target","newValue","closeActiveTooltip","displayName","props","Svg","fillRule","clipRule","d","defaultFormatChars","a","formatChars","parsedMaskString","prefix","lastEditablePosition","permanents","undefined","isPermanent","forEach","character","push","length","isPermanentCharacter","maskOptions","pos","indexOf","isAllowedCharacter","charRule","RegExp","test","isEmpty","every","i","getFilledLength","slice","filledLength","isFilled","formatValue","insertString","insertStr","insertPosition","arrayInsertStr","isInputFilled","isUsableCharacter","insertCharacter","isUsablePosition","getRightEditablePosition","getStringValue","getCancelAnimationFrame","window","cancelAnimationFrame","webkitCancelRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","defer","fn","deferFn","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","setTimeout","cancelDefer","deferId","clearTimeout","isFunction","setInputSelection","input","start","end","selectionStart","selectionEnd","range","createTextRange","collapse","moveStart","moveEnd","select","React","focused","mounted","previousSelection","selectionDeferId","saveSelectionLoopDeferId","constructor","super","alwaysShowMask","beforeMaskedValueChange","defaultValue","this","parseMask","oldValue","selection","getBeforeMaskedValueChangeConfig","localInputRef","componentDidMount","getInputDOMNode","isWindowsPhoneBrowser","windows","phone","ua","navigator","userAgent","getInputValue","setInputValue","componentDidUpdate","previousMaskOptions","showEmpty","isFocused","hasValue","cursorPosition","stopSaveSelectionLoop","forceUpdate","runSaveSelectionLoop","isMaskChanged","newSelection","modifiedValue","isValueChanged","isSelectionChanged","setSelection","componentWillUnmount","saveSelectionLoop","getSelection","isDOMNode","Element","Error","setCursorToEnd","setCursorPosition","_this","options","arguments","deferred","Math","abs","document","createRange","parentElement","getInputSelection","getCursorPosition","isInputAutofilled","previousValue","matches","beforePasteState","changedState","enteredString","formattedEnteredStringLength","removedLength","min","initialInsertPosition","getInsertStringLength","getLeftEditablePosition","len","arrayValue","max","splice","join","map","clearRange","processChange","emptyValue","isInputValueChanged","onMouseDown","addEventListener","mouseDownX","clientX","mouseDownY","clientY","mouseDownTime","getTime","mouseUpHandler","mouseUpEvent","removeEventListener","deltaX","deltaY","axisDelta","timeDelta","onPaste","defaultPrevented","render","restProps","inputElement","maxLength","console","warn","controlledProps","childrenProps","propId","conflictProps","filter","changedProps","readOnly","$body","$datepickersContainer","pluginName","containerBuilt","defaults","hotKeys","Datepicker","inline","startDate","weekends","altField","altFieldDateFormat","toggleSelected","keyboardNav","position","offset","view","minView","showOtherMonths","selectOtherMonths","moveToOtherMonthsOnSelect","showOtherYears","selectOtherYears","moveToOtherYearsOnSelect","disableNavWhenOutOfRange","multipleDates","multipleDatesSeparator","todayButton","clearButton","showEvent","autoClose","monthsField","prevHtml","nextHtml","navTitles","days","months","years","timepicker","onlyTimepicker","dateTimeSeparator","timeFormat","minHours","maxHours","minMinutes","maxMinutes","hoursStep","minutesStep","onShow","onHide","onChangeMonth","onChangeYear","onChangeDecade","onChangeView","onRenderCell","ctrlRight","ctrlUp","ctrlLeft","ctrlDown","shiftRight","shiftUp","shiftLeft","shiftDown","altUp","altRight","altLeft","altDown","ctrlShiftUp","el","$el","opts","extend","nodeName","elIsInput","$altField","inited","visible","silent","currentDate","currentView","_createShortCuts","selectedDates","views","keys","minRange","maxRange","_prevOnSelectValue","init","prototype","VERSION","viewIndexes","_buildDatepickersContainer","_buildBaseHtml","_defineLocale","_syncWithMinMaxDates","_setPositionClasses","_bindEvents","_bindKeyboardEvents","$datepicker","on","_onMouseDownDatepicker","bind","_onMouseUpDatepicker","addClass","Timepicker","_bindTimepickerEvents","Body","show","nav","Navigation","_onClickCell","_onMouseEnterCell","_onMouseLeaveCell","_onShowEvent","_onMouseUpEl","_onBlur","_onKeyUpGeneral","_onResize","_onMouseUpBody","_onKeyDown","_onKeyUp","_onHotKey","_onTimeChange","isWeekend","day","lang","loc","ru","boundary","_getWordBoundaryRegExp","match","ampm","append","$appendTarget","$inline","insertAfter","appendTo","$content","$nav","_triggerOnChange","formattedDates","parsedSelected","getParsedDate","dates","year","month","date","hours","minutes","formatDate","parsedDate","next","o","curDecade","prev","string","validHours","result","locale","leadingZero","getLeadingZeroNum","decade","getDecade","fullHours","dayPeriod","replacer","_replacer","_getValidHoursFromDate","fullDate","daysShort","fullMonth","monthsShort","fullMinutes","str","reg","p1","p2","p3","sign","symbols","newDate","Array","isArray","lastSelectedDate","_setTime","_trigger","setHours","setMinutes","getMonth","getFullYear","_render","_isSelected","bigger","_setInputValue","timepickerIsActive","hide","removeDate","selected","some","curDate","isSame","today","clear","update","param","_addButtonsIfNeed","setPosition","_handleDate","_updateRanges","_updateCurrentTime","curTime","minTime","maxTime","checkDate","cellType","res","altValues","format","altFormat","val","_isInRange","type","time","dMinTime","dMaxTime","types","_getDimensions","width","outerWidth","height","outerHeight","left","top","_getDateFromCell","cell","main","removeAttr","dims","selfDims","secondary","css","_bindVisionEvents","removeClass","inFocus","blur","down","_changeView","up","off","one","dir","nextView","viewIndex","_handleHotKey","key","focusedParsed","totalDaysInNextMonth","_getFocusedDate","monthChanged","yearChanged","decadeChanged","y","m","getDaysCount","_registerKey","curKey","_unRegisterKey","index","_isHotKeyPressed","currentHotKey","found","pressedKeys","sort","hotKey","args","trigger","_focusNextCell","keyCode","nd","getDate","_getCell","$cell","selector","find","destroy","closest","remove","_handleAlreadySelectedDates","alreadySelected","selectedDate","originalEvent","timepickerFocus","focus","code","which","preventDefault","hasClass","less","_update","h","_focused","prevView","substring","getDay","getHours","getMinutes","firstYear","floor","template","source","date1","date2","d1","d2","_type","dateCompareTo","num","parseInt","resetTime","each","Constructor","daysMin","templates","dp","proxy","$names","$cells","_getDayNamesHtml","curDay","html","_getCellContents","parent","_getDaysHtml","totalMonthDays","firstMonthDay","lastMonthDay","daysFromPevMonth","daysFromNextMonth","_getDayHtml","content","_getMonthsHtml","_getMonthHtml","_getYearsHtml","_getYearHtml","_renderTypes","dayNames","attr","acitve","active","_handleClick","$buttonsContainer","_onClickNavButton","_onClickNavTitle","_addButton","title","_getTitle","setNavStatus","_addButtonsContainer","action","label","_disableNav","_activateNav","inst","_buildHTML","_onSelectDate","$ranges","_onChangeRange","_onMouseUpRange","_onMouseEnterRange","_onMouseOutRange","_date","_setMinTimeFromDate","_setMaxTimeFromDate","_setDefaultMinMaxTime","_validateHoursMinutes","lz","hourMin","hourMax","hourStep","hourValue","hourVisible","displayHours","minMin","minMax","minStep","minValue","_template","$timepicker","$hours","$minutes","$hoursText","$minutesText","$ampm","_hours","$target","jQuery"],"sourceRoot":""}