AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"datepicker.min.js","sources":["../src/datepicker.js"],"sourcesContent":["/*!\n * Datepicker2 for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker2)\n *\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n function UTCDate(){\n return new Date(Date.UTC.apply(Date, arguments));\n }\n function UTCToday(){\n var today = new Date();\n return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n }\n function isUTCEquals(date1, date2) {\n return (\n date1.getUTCFullYear() === date2.getUTCFullYear() &&\n date1.getUTCMonth() === date2.getUTCMonth() &&\n date1.getUTCDate() === da
te2.getUTCDate()\n );\n }\n function alias(method, deprecationMsg){\n return function(){\n if (deprecationMsg !== undefined) {\n $.fn.datepicker2.deprecated(deprecationMsg);\n }\n\n return this[method].apply(this, arguments);\n };\n }\n function isValidDate(d) {\n return d && !isNaN(d.getTime());\n }\n\n var DateArray = (function(){\n var extras = {\n get: function(i){\n return this.slice(i)[0];\n },\n contains: function(d){\n // Array.indexOf is not cross-browser;\n // $.inArray doesn't work with Dates\n var val = d && d.valueOf();\n for (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n return i;\n
return -1;\n },\n remove: function(i){\n this.splice(i,1);\n },\n replace: function(new_array){\n if (!new_array)\n return;\n if (!$.isArray(new_array))\n new_array = [new_array];\n this.clear();\n this.push.apply(this, new_array);\n },\n clear: function(){\n this.length = 0;\n },\n copy: function(){\n var a = new DateArray();\n a.replace(this);\n return a;\n }\n };\n\n return function(){\n var a = [];\n a.push.apply(a, arguments);\n $.extend(a, extras);\n return a;\n };\n })();\n\n\n // Picker object\n\n var Datepicker2 = function(element, options){\n $.data(element, 'datepicker2', this);\n\n this._events = [];\n this._secondaryEvents = [];
\n\n this._process_options(options);\n\n this.dates = new DateArray();\n this.viewDate = this.o.defaultViewDate;\n this.focusDate = null;\n\n this.element = $(element);\n this.isInput = this.element.is('input');\n this.inputField = this.isInput ? this.element : this.element.find('input');\n this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n if (this.component && this.component.length === 0)\n this.component = false;\n this.isInline = !this.component && this.element.is('div');\n\n this.picker = $(DPGlobal.template);\n\n // Checking templates and inserting\n if (this._check_template(this.o.templates.leftArrow)) {\n this.picker.find('.prev').html(this.o.templates.leftArrow);\n }\n\n if (this._check_template(this.o.templates.rightArrow)) {\n this.picker.find('.next').html
(this.o.templates.rightArrow);\n }\n\n this._buildEvents();\n this._attachEvents();\n\n if (this.isInline){\n this.picker.addClass('datepicker2-inline').appendTo(this.element);\n }\n else {\n this.picker.addClass('datepicker2-dropdown dropdown-menu');\n }\n\n if (this.o.rtl){\n this.picker.addClass('datepicker2-rtl');\n }\n\n if (this.o.calendarWeeks) {\n this.picker.find('.datepicker2-days .datepicker2-switch, thead .datepicker2-title, tfoot .today, tfoot .clear')\n .attr('colspan', function(i, val){\n return Number(val) + 1;\n });\n }\n\n this._process_options({\n startDate: this._o.startDate,\n endDate: this._o.endDate,\n daysOfWeekDisabled: this.o.daysOfWeekDisabled,\n daysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n datesDisabled: this.o.datesDisabled\n });\n\n
this._allow_update = false;\n this.setViewMode(this.o.startView);\n this._allow_update = true;\n\n this.fillDow();\n this.fillMonths();\n\n this.update();\n\n if (this.isInline){\n this.show();\n }\n };\n\n Datepicker2.prototype = {\n constructor: Datepicker2,\n\n _resolveViewName: function(view){\n $.each(DPGlobal.viewModes, function(i, viewMode){\n if (view === i || $.inArray(view, viewMode.names) !== -1){\n view = i;\n return false;\n }\n });\n\n return view;\n },\n\n _resolveDaysOfWeek: function(daysOfWeek){\n if (!$.isArray(daysOfWeek))\n daysOfWeek = daysOfWeek.split(/[,\\s]*/);\n return $.map(daysOfWeek, Number);\n },\n\n _check_template: function(tmp){\n try {\n // If empty\n if (tmp === undefined || tmp === \"\"
) {\n return false;\n }\n // If no html, everything ok\n if ((tmp.match(/[<>]/g) || []).length <= 0) {\n return true;\n }\n // Checking if html is fine\n var jDom = $(tmp);\n return jDom.length > 0;\n }\n catch (ex) {\n return false;\n }\n },\n\n _process_options: function(opts){\n // Store raw options for reference\n this._o = $.extend({}, this._o, opts);\n // Processed options\n var o = this.o = $.extend({}, this._o);\n\n // Check if \"de-DE\" style date is available, if not language should\n // fallback to 2 letter code eg \"de\"\n var lang = o.language;\n if (!dates[lang]){\n lang = lang.split('-')[0];\n if (!dates[lang])\n lang = defaults.language;\n }\n
o.language = lang;\n\n // Retrieve view index from any aliases\n o.startView = this._resolveViewName(o.startView);\n o.minViewMode = this._resolveViewName(o.minViewMode);\n o.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n // Check view is between min and max\n o.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n // true, false, or Number > 0\n if (o.multidate !== true){\n o.multidate = Number(o.multidate) || false;\n if (o.multidate !== false)\n o.multidate = Math.max(0, o.multidate);\n }\n o.multidateSeparator = String(o.multidateSeparator);\n\n o.weekStart %= 7;\n o.weekEnd = (o.weekStart + 6) % 7;\n\n var format = DPGlobal.parseFormat(o.format);\n if (o.startDate !== -Infinity){\n if (!!o.startDate){\n if (o.startDate
instanceof Date)\n o.startDate = this._local_to_utc(this._zero_time(o.startDate));\n else\n o.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n }\n else {\n o.startDate = -Infinity;\n }\n }\n if (o.endDate !== Infinity){\n if (!!o.endDate){\n if (o.endDate instanceof Date)\n o.endDate = this._local_to_utc(this._zero_time(o.endDate));\n else\n o.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n }\n else {\n o.endDate = Infinity;\n }\n }\n\n o.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n o.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n
o.datesDisabled = o.datesDisabled||[];\n if (!$.isArray(o.datesDisabled)) {\n o.datesDisabled = o.datesDisabled.split(',');\n }\n o.datesDisabled = $.map(o.datesDisabled, function(d){\n return DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n });\n\n var plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n _plc = o.orientation.toLowerCase();\n plc = $.grep(plc, function(word){\n return /^auto|left|right|top|bottom$/.test(word);\n });\n o.orientation = {x: 'auto', y: 'auto'};\n if (!_plc || _plc === 'auto')\n ; // no action\n else if (plc.length === 1){\n switch (plc[0]){\n case 'top':\n case 'bottom':\n o.orientation.y = plc[0];\n break;\n case 'left':\n case '
right':\n o.orientation.x = plc[0];\n break;\n }\n }\n else {\n _plc = $.grep(plc, function(word){\n return /^left|right$/.test(word);\n });\n o.orientation.x = _plc[0] || 'auto';\n\n _plc = $.grep(plc, function(word){\n return /^top|bottom$/.test(word);\n });\n o.orientation.y = _plc[0] || 'auto';\n }\n if (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n o.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n } else if (o.defaultViewDate) {\n var year = o.defaultViewDate.year || new Date().getFullYear();\n var month = o.defaultViewDate.month || 0;\n var day = o.defaultViewDate.day || 1;\n o.defaultViewDate = UTCDate(ye
ar, month, day);\n } else {\n o.defaultViewDate = UTCToday();\n }\n },\n _applyEvents: function(evs){\n for (var i=0, el, ch, ev; i < evs.length; i++){\n el = evs[i][0];\n if (evs[i].length === 2){\n ch = undefined;\n ev = evs[i][1];\n } else if (evs[i].length === 3){\n ch = evs[i][1];\n ev = evs[i][2];\n }\n el.on(ev, ch);\n }\n },\n _unapplyEvents: function(evs){\n for (var i=0, el, ev, ch; i < evs.length; i++){\n el = evs[i][0];\n if (evs[i].length === 2){\n ch = undefined;\n ev = evs[i][1];\n } else if (evs[i].length === 3){\n ch = evs[i][1];\n ev = evs[i][2];\n }\n el.off(ev, ch);\n }\n },\n
_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.
show, this)\n }]\n ];\n }\n else {\n this._events = [\n [this.element, {\n click: $.proxy(this.show, this),\n keydown: $.proxy(this.keydown, this)\n }]\n ];\n }\n this._events.push(\n // Component: listen for blur on element descendants\n [this.element, '*', {\n blur: $.proxy(function(e){\n this._focused_from = e.target;\n }, this)\n }],\n // Input: listen for blur on element\n [this.element, {\n blur: $.proxy(function(e){\n this._focused_from = e.target;\n }, this)\n }]\n );\n\n if (this.o.immediateUpdates) {\n // Trigger input updates immediately on changed year/month\n
this._events.push([this.element, {\n 'changeYear changeMonth': $.proxy(function(e){\n this.update(e.date);\n }, this)\n }]);\n }\n\n this._secondaryEvents = [\n [this.picker, {\n click: $.proxy(this.click, this)\n }],\n [this.picker, '.prev, .next', {\n click: $.proxy(this.navArrowsClick, this)\n }],\n [this.picker, '.day:not(.disabled)', {\n click: $.proxy(this.dayCellClick, this)\n }],\n [$(window), {\n resize: $.proxy(this.place, this)\n }],\n [$(document), {\n 'mousedown touchstart': $.proxy(function(e){\n // Clicked outside the datepicker2, hide it\n if (!(\n this.element.is(e.target) ||\n
this.element.find(e.target).length ||\n this.picker.is(e.target) ||\n this.picker.find(e.target).length ||\n this.isInline\n )){\n this.hide();\n }\n }, this)\n }]\n ];\n },\n _attachEvents: function(){\n this._detachEvents();\n this._applyEvents(this._events);\n },\n _detachEvents: function(){\n this._unapplyEvents(this._events);\n },\n _attachSecondaryEvents: function(){\n this._detachSecondaryEvents();\n this._applyEvents(this._secondaryEvents);\n },\n _detachSecondaryEvents: function(){\n this._unapplyEvents(this._secondaryEvents);\n },\n _trigger: function(event, altdate){\n var date = altdate || this.dates.get(-1),\n local_date =
this._utc_to_local(date);\n\n this.element.trigger({\n type: event,\n date: local_date,\n viewMode: this.viewMode,\n dates: $.map(this.dates, this._utc_to_local),\n format: $.proxy(function(ix, format){\n if (arguments.length === 0){\n ix = this.dates.length - 1;\n format = this.o.format;\n } else if (typeof ix === 'string'){\n format = ix;\n ix = this.dates.length - 1;\n }\n format = format || this.o.format;\n var date = this.dates.get(ix);\n return DPGlobal.formatDate(date, format, this.o.language);\n }, this)\n });\n },\n\n show: function(){\n if (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n
return;\n if (!this.isInline)\n this.picker.appendTo(this.o.container);\n this.place();\n this.picker.show();\n this._attachSecondaryEvents();\n this._trigger('show');\n if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n $(this.element).blur();\n }\n return this;\n },\n\n hide: function(){\n if (this.isInline || !this.picker.is(':visible'))\n return this;\n this.focusDate = null;\n this.picker.hide().detach();\n this._detachSecondaryEvents();\n this.setViewMode(this.o.startView);\n\n if (this.o.forceParse && this.inputField.val())\n this.setValue();\n this._trigger('hide');\n return this;\n },\n\n destroy: function(){\n this.hide();\n this._detachEvents();\n t
his._detachSecondaryEvents();\n this.picker.remove();\n delete this.element.data().datepicker2;\n if (!this.isInput){\n delete this.element.data().date;\n }\n return this;\n },\n\n paste: function(e){\n var dateString;\n if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n && $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n dateString = e.originalEvent.clipboardData.getData('text/plain');\n } else if (window.clipboardData) {\n dateString = window.clipboardData.getData('Text');\n } else {\n return;\n }\n this.setDate(dateString);\n this.update();\n e.preventDefault();\n },\n\n _utc_to_local: function(utc){\n if (!utc) {\n return utc;\n }\n\n var local = new Date(utc.getTime()
+ (utc.getTimezoneOffset() * 60000));\n\n if (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n local = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n }\n\n return local;\n },\n _local_to_utc: function(local){\n return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n },\n _zero_time: function(local){\n return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n },\n _zero_utc_time: function(utc){\n return utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n },\n\n getDates: function(){\n return $.map(this.dates, this._utc_to_local);\n },\n\n getUTCDates: function(){\n return $.map(this.dates, function(d){\n return new Date(d);\n });\n },\n\n getDate: function(){\n return this._utc_to_local
(this.getUTCDate());\n },\n\n getUTCDate: function(){\n var selected_date = this.dates.get(-1);\n if (selected_date !== undefined) {\n return new Date(selected_date);\n } else {\n return null;\n }\n },\n\n clearDates: function(){\n this.inputField.val('');\n this.update();\n this._trigger('changeDate');\n\n if (this.o.autoclose) {\n this.hide();\n }\n },\n\n setDates: function(){\n var args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n this.update.apply(this, args);\n this._trigger('changeDate');\n this.setValue();\n return this;\n },\n\n setUTCDates: function(){\n var args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n this.setDates.apply(this, $.map(args, this._utc_to_local));\n return this;\n },\n
\n setDate: alias('setDates'),\n setUTCDate: alias('setUTCDates'),\n remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n setValue: function(){\n var formatted = this.getFormattedDate();\n this.inputField.val(formatted);\n return this;\n },\n\n getFormattedDate: function(format){\n if (format === undefined)\n format = this.o.format;\n\n var lang = this.o.language;\n return $.map(this.dates, function(d){\n return DPGlobal.formatDate(d, format, lang);\n }).join(this.o.multidateSeparator);\n },\n\n getStartDate: function(){\n return this.o.startDate;\n },\n\n setStartDate: function(startDate){\n this._process_options({startDate: startDate});\n this.update();\n this.updateNavArrows();\n return this;\n },\n\n
getEndDate: function(){\n return this.o.endDate;\n },\n\n setEndDate: function(endDate){\n this._process_options({endDate: endDate});\n this.update();\n this.updateNavArrows();\n return this;\n },\n\n setDaysOfWeekDisabled: function(daysOfWeekDisabled){\n this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n this.update();\n return this;\n },\n\n setDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n this._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n this.update();\n return this;\n },\n\n setDatesDisabled: function(datesDisabled){\n this._process_options({datesDisabled: datesDisabled});\n this.update();\n return this;\n },\n\n place: function(){\n if (this.isInline)\n return this;\n var calendarWidth = this
.picker.outerWidth(),\n calendarHeight = this.picker.outerHeight(),\n visualPadding = 10,\n container = $(this.o.container),\n windowWidth = container.width(),\n scrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n appendOffset = container.offset();\n\n var parentsZindex = [0];\n this.element.parents().each(function(){\n var itemZIndex = $(this).css('z-index');\n if (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n });\n var zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n var offset = this.component ? this.component.parent().offset() : this.element.offset();\n var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n var width = this.component ? this.component.outerWidt
h(true) : this.element.outerWidth(false);\n var left = offset.left - appendOffset.left;\n var top = offset.top - appendOffset.top;\n\n if (this.o.container !== 'body') {\n top += scrollTop;\n }\n\n this.picker.removeClass(\n 'datepicker2-orient-top datepicker2-orient-bottom '+\n 'datepicker2-orient-right datepicker2-orient-left'\n );\n\n if (this.o.orientation.x !== 'auto'){\n this.picker.addClass('datepicker2-orient-' + this.o.orientation.x);\n if (this.o.orientation.x === 'right')\n left -= calendarWidth - width;\n }\n // auto x orientation is best-placement: if it crosses a window\n // edge, fudge it sideways\n else {\n if (offset.left < 0) {\n // component is outside the window on the left side. Move it into visible range\n this.picker.addCl
ass('datepicker2-orient-left');\n left -= offset.left - visualPadding;\n } else if (left + calendarWidth > windowWidth) {\n // the calendar passes the widow right edge. Align it to component right side\n this.picker.addClass('datepicker2-orient-right');\n left += width - calendarWidth;\n } else {\n if (this.o.rtl) {\n // Default to right\n this.picker.addClass('datepicker2-orient-right');\n } else {\n // Default to left\n this.picker.addClass('datepicker2-orient-left');\n }\n }\n }\n\n // auto y orientation is best-situation: top or bottom, no fudging,\n // decision based on which shows more of the calendar\n var yorient = this.o.orientation.y,\n top_overflow;\n if (yorient
=== 'auto'){\n top_overflow = -scrollTop + top - calendarHeight;\n yorient = top_overflow < 0 ? 'bottom' : 'top';\n }\n\n this.picker.addClass('datepicker2-orient-' + yorient);\n if (yorient === 'top')\n top -= calendarHeight + parseInt(this.picker.css('padding-top'));\n else\n top += height;\n\n if (this.o.rtl) {\n var right = windowWidth - (left + width);\n this.picker.css({\n top: top,\n right: right,\n zIndex: zIndex\n });\n } else {\n this.picker.css({\n top: top,\n left: left,\n zIndex: zIndex\n });\n }\n return this;\n },\n\n _allow_update: true,\n update: function(){\n if (!this._allow_update)\n return this;\n\n
var oldDates = this.dates.copy(),\n dates = [],\n fromArgs = false;\n if (arguments.length){\n $.each(arguments, $.proxy(function(i, date){\n if (date instanceof Date)\n date = this._local_to_utc(date);\n dates.push(date);\n }, this));\n fromArgs = true;\n } else {\n dates = this.isInput\n ? this.element.val()\n : this.element.data('date') || this.inputField.val();\n if (dates && this.o.multidate)\n dates = dates.split(this.o.multidateSeparator);\n else\n dates = [dates];\n delete this.element.data().date;\n }\n\n dates = $.map(dates, $.proxy(function(date){\n return DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n }, this));\n
dates = $.grep(dates, $.proxy(function(date){\n return (\n !this.dateWithinRange(date) ||\n !date\n );\n }, this), true);\n this.dates.replace(dates);\n\n if (this.o.updateViewDate) {\n if (this.dates.length)\n this.viewDate = new Date(this.dates.get(-1));\n else if (this.viewDate < this.o.startDate)\n this.viewDate = new Date(this.o.startDate);\n else if (this.viewDate > this.o.endDate)\n this.viewDate = new Date(this.o.endDate);\n else\n this.viewDate = this.o.defaultViewDate;\n }\n\n if (fromArgs){\n // setting date by clicking\n this.setValue();\n this.element.change();\n }\n else if (this.dates.length){\n // setting date by typing\n if (String(oldDates
) !== String(this.dates) && fromArgs) {\n this._trigger('changeDate');\n this.element.change();\n }\n }\n if (!this.dates.length && oldDates.length) {\n this._trigger('clearDate');\n this.element.change();\n }\n\n this.fill();\n return this;\n },\n\n fillDow: function(){\n if (this.o.showWeekDays) {\n var dowCnt = this.o.weekStart,\n html = '<tr>';\n if (this.o.calendarWeeks){\n html += '<th class=\"cw\"> </th>';\n }\n while (dowCnt < this.o.weekStart + 7){\n html += '<th class=\"dow';\n if ($.inArray(dowCnt, this.o.daysOfWeekDisabled) !== -1)\n html += ' disabled';\n html += '\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n }\n
html += '</tr>';\n this.picker.find('.datepicker2-days thead').append(html);\n }\n },\n\n fillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n var html = '';\n var focused;\n for (var i = 0; i < 12; i++){\n focused = localDate && localDate.getMonth() === i ? ' focused' : '';\n html += '<span class=\"month' + focused + '\">' + dates[this.o.language].monthsShort[i] + '</span>';\n }\n this.picker.find('.datepicker2-months td').html(html);\n },\n\n setRange: function(range){\n if (!range || !range.length)\n delete this.range;\n else\n this.range = $.map(range, function(d){\n return d.valueOf();\n });\n this.fill();\n },\n\n getClassNames: function(date){\n var cls = [],\n year = this.viewDate.getUTCFull
Year(),\n month = this.viewDate.getUTCMonth(),\n today = UTCToday();\n if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n cls.push('old');\n } else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n cls.push('new');\n }\n if (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n cls.push('focused');\n // Compare internal UTC date with UTC today, not local today\n if (this.o.todayHighlight && isUTCEquals(date, today)) {\n cls.push('today');\n }\n if (this.dates.contains(date) !== -1)\n cls.push('active');\n if (!this.dateWithinRange(date)){\n cls.push('disabled');\n }\n if (this.dateIsDisabled(date)){\n cls.push('disabled', 'disabled-date');\n
}\n if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n cls.push('highlighted');\n }\n\n if (this.range){\n if (date > this.range[0] && date < this.range[this.range.length-1]){\n cls.push('range');\n }\n if ($.inArray(date.valueOf(), this.range) !== -1){\n cls.push('selected');\n }\n if (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n }\n return cls;\n },\n\n _fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n var html = '';\n var step = factor / 10;\n var view = this.picker.find(selector);\n var startVal = Math.f
loor(year / factor) * factor;\n var endVal = startVal + step * 9;\n var focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n var selected = $.map(this.dates, function(d){\n return Math.floor(d.getUTCFullYear() / step) * step;\n });\n\n var classes, tooltip, before;\n for (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n classes = [cssClass];\n tooltip = null;\n\n if (currVal === startVal - step) {\n classes.push('old');\n } else if (currVal === endVal + step) {\n classes.push('new');\n }\n if ($.inArray(currVal, selected) !== -1) {\n classes.push('active');\n }\n if (currVal < startYear || currVal > endYear) {\n classes.push('disabled');\n }\n if (currVal === fo
cusedVal) {\n classes.push('focused');\n }\n\n if (beforeFn !== $.noop) {\n before = beforeFn(new Date(currVal, 0, 1));\n if (before === undefined) {\n before = {};\n } else if (typeof before === 'boolean') {\n before = {enabled: before};\n } else if (typeof before === 'string') {\n before = {classes: before};\n }\n if (before.enabled === false) {\n classes.push('disabled');\n }\n if (before.classes) {\n classes = classes.concat(before.classes.split(/\\s+/));\n }\n if (before.tooltip) {\n tooltip = before.tooltip;\n }\n }\n\n html += '<span class=\"' + classes.join(' ') + '\"' + (tooltip ?
' title=\"' + tooltip + '\"' : '') + '>' + currVal + '</span>';\n }\n\n view.find('.datepicker2-switch').text(startVal + '-' + endVal);\n view.find('td').html(html);\n },\n\n fill: function(){\n var d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n todaytxt = dates[this.o.language].today || dates['en'].today || '',\n cleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat
|| dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n tooltip,\n before;\n if (isNaN(year) || isNaN(month))\n return;\n this.picker.find('.datepicker2-days .datepicker2-switch')\n .text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n this.picker.find('tfoot .today')\n .text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n this.picker.find('tfoot .clear')\n .text(cleartxt)\n .css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n this.picker.find('thead .datepicker2-title')\n .text(this.o.title)\n .css('display', typeof this.o.title === 'string' && t
his.o.title !== '' ? 'table-cell' : 'none');\n this.updateNavArrows();\n this.fillMonths();\n var prevMonth = UTCDate(year, month, 0),\n day = prevMonth.getUTCDate();\n prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n var nextMonth = new Date(prevMonth);\n if (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n nextMonth = nextMonth.valueOf();\n var html = [];\n var weekDay, clsName;\n while (prevMonth.valueOf() < nextMonth){\n weekDay = prevMonth.getUTCDay();\n if (weekDay === this.o.weekStart){\n html.push('<tr>');\n if (this.o.calendarWeeks){\n // ISO 8601: First week contains first thursday.\n // ISO also s
tates week starts on Monday, but we can be more abstract here.\n var\n // Start of current week: based on weekstart/current date\n ws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n // Thursday of this week\n th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n // First Thursday of year, year from thursday\n yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n // Calendar week: ms between thursdays, div ms per day, div 7 days\n calWeek = (th - yth) / 864e5 / 7 + 1;\n html.push('<td class=\"cw\">'+ calWeek +'</td>');\n }\n }\n clsName = this.getClassNames(prevMonth);\n clsName.push('day');\n\n
var content = prevMonth.getUTCDate();\n\n if (this.o.beforeShowDay !== $.noop){\n before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n if (before === undefined)\n before = {};\n else if (typeof before === 'boolean')\n before = {enabled: before};\n else if (typeof before === 'string')\n before = {classes: before};\n if (before.enabled === false)\n clsName.push('disabled');\n if (before.classes)\n clsName = clsName.concat(before.classes.split(/\\s+/));\n if (before.tooltip)\n tooltip = before.tooltip;\n if (before.content)\n content = before.content;\n }\n\n //Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n
//Fallback to unique function for older jquery versions\n if ($.isFunction($.uniqueSort)) {\n clsName = $.uniqueSort(clsName);\n } else {\n clsName = $.unique(clsName);\n }\n\n html.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + ' data-date=\"' + prevMonth.getTime().toString() + '\">' + content + '</td>');\n tooltip = null;\n if (weekDay === this.o.weekEnd){\n html.push('</tr>');\n }\n prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n }\n this.picker.find('.datepicker2-days tbody').html(html.join(''));\n\n var monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n var months = this.picker.find('.datepicker2-months')\n .find('.datepicker2-switch')\n .text(this.o.maxViewMode < 2
? monthsTitle : year)\n .end()\n .find('tbody span').removeClass('active');\n\n $.each(this.dates, function(i, d){\n if (d.getUTCFullYear() === year)\n months.eq(d.getUTCMonth()).addClass('active');\n });\n\n if (year < startYear || year > endYear){\n months.addClass('disabled');\n }\n if (year === startYear){\n months.slice(0, startMonth).addClass('disabled');\n }\n if (year === endYear){\n months.slice(endMonth+1).addClass('disabled');\n }\n\n if (this.o.beforeShowMonth !== $.noop){\n var that = this;\n $.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n if (before === undefined)\n before = {};\n else if (t
ypeof before === 'boolean')\n before = {enabled: before};\n else if (typeof before === 'string')\n before = {classes: before};\n if (before.enabled === false && !$(month).hasClass('disabled'))\n $(month).addClass('disabled');\n if (before.classes)\n $(month).addClass(before.classes);\n if (before.tooltip)\n $(month).prop('title', before.tooltip);\n });\n }\n\n // Generating decade/years picker\n this._fill_yearsView(\n '.datepicker2-years',\n 'year',\n 10,\n year,\n startYear,\n endYear,\n this.o.beforeShowYear\n );\n\n // Generating century/decades picker\n this._fill_yearsView(\n '.datepicker2-decades',\n '
decade',\n 100,\n year,\n startYear,\n endYear,\n this.o.beforeShowDecade\n );\n\n // Generating millennium/centuries picker\n this._fill_yearsView(\n '.datepicker2-centuries',\n 'century',\n 1000,\n year,\n startYear,\n endYear,\n this.o.beforeShowCentury\n );\n },\n\n updateNavArrows: function(){\n if (!this._allow_update)\n return;\n\n var d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n endYear = this.o.endDate !== Infinity ? this.o.endDate.
getUTCFullYear() : Infinity,\n endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n prevIsDisabled,\n nextIsDisabled,\n factor = 1;\n switch (this.viewMode){\n case 4:\n factor *= 10;\n /* falls through */\n case 3:\n factor *= 10;\n /* falls through */\n case 2:\n factor *= 10;\n /* falls through */\n case 1:\n prevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n nextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n break;\n case 0:\n prevIsDisabled = year <= startYear && month <= startMonth;\n nextIsDisabled = year >= endYear && month >= endMonth;\n break;\n }\n\n
this.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n this.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n },\n\n click: function(e){\n e.preventDefault();\n e.stopPropagation();\n\n var target, dir, day, year, month;\n target = $(e.target);\n\n // Clicked on the switch\n if (target.hasClass('datepicker2-switch') && this.viewMode !== this.o.maxViewMode){\n this.setViewMode(this.viewMode + 1);\n }\n\n // Clicked on today button\n if (target.hasClass('today') && !target.hasClass('day')){\n this.setViewMode(0);\n this._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n }\n\n // Clicked on clear button\n if (target.hasClass('clear')){\n this.clearDates();\n }\n\n if (!target.hasClass('disabled')){\n // Clicked on a
month, year, decade, century\n if (target.hasClass('month')\n || target.hasClass('year')\n || target.hasClass('decade')\n || target.hasClass('century')) {\n this.viewDate.setUTCDate(1);\n\n day = 1;\n if (this.viewMode === 1){\n month = target.parent().find('span').index(target);\n year = this.viewDate.getUTCFullYear();\n this.viewDate.setUTCMonth(month);\n } else {\n month = 0;\n year = Number(target.text());\n this.viewDate.setUTCFullYear(year);\n }\n\n this._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n if (this.viewMode === this.o.minViewMode){\n this._setDate(UTCDate(year, month, day));\n } else {\n
this.setViewMode(this.viewMode - 1);\n this.fill();\n }\n }\n }\n\n if (this.picker.is(':visible') && this._focused_from){\n this._focused_from.focus();\n }\n delete this._focused_from;\n },\n\n dayCellClick: function(e){\n var $target = $(e.currentTarget);\n var timestamp = $target.data('date');\n var date = new Date(timestamp);\n\n if (this.o.updateViewDate) {\n if (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n this._trigger('changeYear', this.viewDate);\n }\n\n if (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n this._trigger('changeMonth', this.viewDate);\n }\n }\n this._setDate(date);\n },\n\n // Clicked on prev or next\n navArrowsClick: function(e){
\n var $target = $(e.currentTarget);\n var dir = $target.hasClass('prev') ? -1 : 1;\n if (this.viewMode !== 0){\n dir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n }\n this.viewDate = this.moveMonth(this.viewDate, dir);\n this._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n this.fill();\n },\n\n _toggle_multidate: function(date){\n var ix = this.dates.contains(date);\n if (!date){\n this.dates.clear();\n }\n\n if (ix !== -1){\n if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n this.dates.remove(ix);\n }\n } else if (this.o.multidate === false) {\n this.dates.clear();\n this.dates.push(date);\n }\n else {\n this.dates.push(date);\n }\n\n if (typeof
this.o.multidate === 'number')\n while (this.dates.length > this.o.multidate)\n this.dates.remove(0);\n },\n\n _setDate: function(date, which){\n if (!which || which === 'date')\n this._toggle_multidate(date && new Date(date));\n if ((!which && this.o.updateViewDate) || which === 'view')\n this.viewDate = date && new Date(date);\n\n this.fill();\n this.setValue();\n if (!which || which !== 'view') {\n this._trigger('changeDate');\n }\n this.inputField.trigger('change');\n if (this.o.autoclose && (!which || which === 'date')){\n this.hide();\n }\n },\n\n moveDay: function(date, dir){\n var newDate = new Date(date);\n newDate.setUTCDate(date.getUTCDate() + dir);\n\n return newDate;\n },\n\n moveWeek: function(date, dir){\n return this.
moveDay(date, dir * 7);\n },\n\n moveMonth: function(date, dir){\n if (!isValidDate(date))\n return this.o.defaultViewDate;\n if (!dir)\n return date;\n var new_date = new Date(date.valueOf()),\n day = new_date.getUTCDate(),\n month = new_date.getUTCMonth(),\n mag = Math.abs(dir),\n new_month, test;\n dir = dir > 0 ? 1 : -1;\n if (mag === 1){\n test = dir === -1\n // If going back one month, make sure month is not current month\n // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n ? function(){\n return new_date.getUTCMonth() === month;\n }\n // If going forward one month, make sure month is as expected\n // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n : function(){\n
return new_date.getUTCMonth() !== new_month;\n };\n new_month = month + dir;\n new_date.setUTCMonth(new_month);\n // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n new_month = (new_month + 12) % 12;\n }\n else {\n // For magnitudes >1, move one month at a time...\n for (var i=0; i < mag; i++)\n // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n new_date = this.moveMonth(new_date, dir);\n // ...then reset the day, keeping it in the new month\n new_month = new_date.getUTCMonth();\n new_date.setUTCDate(day);\n test = function(){\n return new_month !== new_date.getUTCMonth();\n };\n }\n // Common date-resetting loop -- if date is beyond end of month, make it\n // end of month\n
while (test()){\n new_date.setUTCDate(--day);\n new_date.setUTCMonth(new_month);\n }\n return new_date;\n },\n\n moveYear: function(date, dir){\n return this.moveMonth(date, dir*12);\n },\n\n moveAvailableDate: function(date, dir, fn){\n do {\n date = this[fn](date, dir);\n\n if (!this.dateWithinRange(date))\n return false;\n\n fn = 'moveDay';\n }\n while (this.dateIsDisabled(date));\n\n return date;\n },\n\n weekOfDateIsDisabled: function(date){\n return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n },\n\n dateIsDisabled: function(date){\n return (\n this.weekOfDateIsDisabled(date) ||\n $.grep(this.o.datesDisabled, function(d){\n return isUTCEquals(date, d);\n }).length
> 0\n );\n },\n\n dateWithinRange: function(date){\n return date >= this.o.startDate && date <= this.o.endDate;\n },\n\n keydown: function(e){\n if (!this.picker.is(':visible')){\n if (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n this.show();\n e.stopPropagation();\n }\n return;\n }\n var dateChanged = false,\n dir, newViewDate,\n focusDate = this.focusDate || this.viewDate;\n switch (e.keyCode){\n case 27: // escape\n if (this.focusDate){\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.fill();\n }\n else\n this.hide();\n e.preventDefault();\n
e.stopPropagation();\n break;\n case 37: // left\n case 38: // up\n case 39: // right\n case 40: // down\n if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n break;\n dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n if (e.ctrlKey){\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n if (newViewDate)\n this._trigger('changeYear', this.viewDate);\n } else if (e.shiftKey){\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n if (newViewDate)\n this._trigger('changeMonth', this.viewDate);\n } else if (e.keyCode === 37
|| e.keyCode === 39){\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n } else if (!this.weekOfDateIsDisabled(focusDate)){\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n }\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n if (newViewDate){\n this.focusDate = this.viewDate = newViewDate;\n
this.setValue();\n this.fill();\n e.preventDefault();\n }\n break;\n case 13: // enter\n if (!this.o.forceParse)\n break;\n focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n if (this.o.keyboardNavigation) {\n this._toggle_multidate(focusDate);\n dateChanged = true;\n }\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.setValue();\n this.fill();\n if (this.picker.is(':visible')){\n e.preventDefault();\n e.stopPropagation();\n if (this.o.autoclose)\n this.hide();\n }\n
break;\n case 9: // tab\n this.focusDate = null;\n this.viewDate = this.dates.get(-1) || this.viewDate;\n this.fill();\n this.hide();\n break;\n }\n if (dateChanged){\n if (this.dates.length)\n this._trigger('changeDate');\n else\n this._trigger('clearDate');\n this.inputField.trigger('change');\n }\n },\n\n setViewMode: function(viewMode){\n this.viewMode = viewMode;\n this.picker\n .children('div')\n .hide()\n .filter('.datepicker2-' + DPGlobal.viewModes[this.viewMode].clsName)\n .show();\n this.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n }\n };\n\n var DateRangePicker = function(element, options){\n $.data(eleme
nt, 'datepicker2', this);\n this.element = $(element);\n this.inputs = $.map(options.inputs, function(i){\n return i.jquery ? i[0] : i;\n });\n delete options.inputs;\n\n this.keepEmptyValues = options.keepEmptyValues;\n delete options.keepEmptyValues;\n\n datepicker2Plugin.call($(this.inputs), options)\n .on('changeDate', $.proxy(this.dateUpdated, this));\n\n this.pickers = $.map(this.inputs, function(i){\n return $.data(i, 'datepicker2');\n });\n this.updateDates();\n };\n DateRangePicker.prototype = {\n updateDates: function(){\n this.dates = $.map(this.pickers, function(i){\n return i.getUTCDate();\n });\n this.updateRanges();\n },\n updateRanges: function(){\n var range = $.map(this.dates, function(d){\n return d.valueOf();\n });\n $.each(this.pickers, function(i, p){\n
p.setRange(range);\n });\n },\n clearDates: function(){\n $.each(this.pickers, function(i, p){\n p.clearDates();\n });\n },\n dateUpdated: function(e){\n // `this.updating` is a workaround for preventing infinite recursion\n // between `changeDate` triggering and `setUTCDate` calling. Until\n // there is a better mechanism.\n if (this.updating)\n return;\n this.updating = true;\n\n var dp = $.data(e.target, 'datepicker2');\n\n if (dp === undefined) {\n return;\n }\n\n var new_date = dp.getUTCDate(),\n keep_empty_values = this.keepEmptyValues,\n i = $.inArray(e.target, this.inputs),\n j = i - 1,\n k = i + 1,\n l = this.inputs.length;\n if (i === -1)\n return;\n\n $.each(this.pickers, function(
i, p){\n if (!p.getUTCDate() && (p === dp || !keep_empty_values))\n p.setUTCDate(new_date);\n });\n\n if (new_date < this.dates[j]){\n // Date being moved earlier/left\n while (j >= 0 && new_date < this.dates[j]){\n this.pickers[j--].setUTCDate(new_date);\n }\n } else if (new_date > this.dates[k]){\n // Date being moved later/right\n while (k < l && new_date > this.dates[k]){\n this.pickers[k++].setUTCDate(new_date);\n }\n }\n this.updateDates();\n\n delete this.updating;\n },\n destroy: function(){\n $.map(this.pickers, function(p){ p.destroy(); });\n $(this.inputs).off('changeDate', this.dateUpdated);\n delete this.element.data().datepicker2;\n },\n remove: alias('destroy', 'Method `remove` is deprecated and will be remove
d in version 2.0. Use `destroy` instead')\n };\n\n function opts_from_el(el, prefix){\n // Derive options from element data-attrs\n var data = $(el).data(),\n out = {}, inkey,\n replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n prefix = new RegExp('^' + prefix.toLowerCase());\n function re_lower(_,a){\n return a.toLowerCase();\n }\n for (var key in data)\n if (prefix.test(key)){\n inkey = key.replace(replace, re_lower);\n out[inkey] = data[key];\n }\n return out;\n }\n\n function opts_from_locale(lang){\n // Derive options from locale plugins\n var out = {};\n // Check if \"de-DE\" style date is available, if not language should\n // fallback to 2 letter code eg \"de\"\n if (!dates[lang]){\n lang = lang.split('-')[0];\n if (!dates[lang])\n return;\n }\n var d = dates
[lang];\n $.each(locale_opts, function(i,k){\n if (k in d)\n out[k] = d[k];\n });\n return out;\n }\n\n var old = $.fn.datepicker2;\n var datepicker2Plugin = function(option){\n var args = Array.apply(null, arguments);\n args.shift();\n var internal_return;\n this.each(function(){\n var $this = $(this),\n data = $this.data('datepicker2'),\n options = typeof option === 'object' && option;\n if (!data){\n var elopts = opts_from_el(this, 'date'),\n // Preliminary otions\n xopts = $.extend({}, defaults, elopts, options),\n locopts = opts_from_locale(xopts.language),\n // Options priority: js args, data-attrs, locales, defaults\n opts = $.extend({}, defaults, locopts, elopts, options);\n if ($this.hasClass('input-daterange') || opts.inputs){\n
$.extend(opts, {\n inputs: opts.inputs || $this.find('input').toArray()\n });\n data = new DateRangePicker(this, opts);\n }\n else {\n data = new Datepicker2(this, opts);\n }\n $this.data('datepicker2', data);\n }\n if (typeof option === 'string' && typeof data[option] === 'function'){\n internal_return = data[option].apply(data, args);\n }\n });\n\n if (\n internal_return === undefined ||\n internal_return instanceof Datepicker2 ||\n internal_return instanceof DateRangePicker\n )\n return this;\n\n if (this.length > 1)\n throw new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n else\n return internal_return;\n };\n $.fn.datepicker2 = datepicker2Plugin;\n\n var d
efaults = $.fn.datepicker2.defaults = {\n assumeNearbyYear: false,\n autoclose: false,\n beforeShowDay: $.noop,\n beforeShowMonth: $.noop,\n beforeShowYear: $.noop,\n beforeShowDecade: $.noop,\n beforeShowCentury: $.noop,\n calendarWeeks: false,\n clearBtn: false,\n toggleActive: false,\n daysOfWeekDisabled: [],\n daysOfWeekHighlighted: [],\n datesDisabled: [],\n endDate: Infinity,\n forceParse: true,\n format: 'mm/dd/yyyy',\n keepEmptyValues: false,\n keyboardNavigation: true,\n language: 'en',\n minViewMode: 0,\n maxViewMode: 4,\n multidate: false,\n multidateSeparator: ',',\n orientation: \"auto\",\n rtl: false,\n startDate: -Infinity,\n startView: 0,\n todayBtn: false,\n todayHighlight: false,\n updateViewDate: true,\n weekStart: 0,\n disableTouchKeyboard: false,\n enableOnRead
only: true,\n showOnFocus: true,\n zIndexOffset: 10,\n container: 'body',\n immediateUpdates: false,\n title: '',\n templates: {\n leftArrow: '«',\n rightArrow: '»'\n },\n showWeekDays: true\n };\n var locale_opts = $.fn.datepicker2.locale_opts = [\n 'format',\n 'rtl',\n 'weekStart'\n ];\n $.fn.datepicker2.Constructor = Datepicker2;\n var dates = $.fn.datepicker2.dates = {\n en: {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\",
\"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n today: \"Today\",\n clear: \"Clear\",\n titleFormat: \"MM yyyy\"\n }\n };\n\n var DPGlobal = {\n viewModes: [\n {\n names: ['days', 'month'],\n clsName: 'days',\n e: 'changeMonth'\n },\n {\n names: ['months', 'year'],\n clsName: 'months',\n e: 'changeYear',\n navStep: 1\n },\n {\n names: ['years', 'decade'],\n clsName: 'years',\n e: 'changeDecade',\n navStep: 10\n },\n {\n names: ['decades', 'century'],\n clsName: 'decades',\n e: 'changeCentury',\n navStep: 100\n },\n {\n names: ['centuries', 'millennium'],\n clsName: 'centur
ies',\n e: 'changeMillennium',\n navStep: 1000\n }\n ],\n validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n nonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n parseFormat: function(format){\n if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n // so it's a bad format delimiter, anyway\n var separators = format.replace(this.validParts, '\\0').split('\\0'),\n parts = format.match(this.validParts);\n if (!separators || !separators.length || !parts || parts.length === 0){\n throw new Error(\"Invalid date format.\");\n }\n return {separators: separators, parts: parts};\n },\n parseDate: function(date, format, language, assumeNearby){\n if (!date)\n retu
rn undefined;\n if (date instanceof Date)\n return date;\n if (typeof format === 'string')\n format = DPGlobal.parseFormat(format);\n if (format.toValue)\n return format.toValue(date, format, language);\n var fn_map = {\n d: 'moveDay',\n m: 'moveMonth',\n w: 'moveWeek',\n y: 'moveYear'\n },\n dateAliases = {\n yesterday: '-1d',\n today: '+0d',\n tomorrow: '+1d'\n },\n parts, part, dir, i, fn;\n if (date in dateAliases){\n date = dateAliases[date];\n }\n if (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n parts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n date = new Date();\n for (i=0; i < parts.length; i++){\n
part = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n dir = Number(part[1]);\n fn = fn_map[part[2].toLowerCase()];\n date = Datepicker2.prototype[fn](date, dir);\n }\n return Datepicker2.prototype._zero_utc_time(date);\n }\n\n parts = date && date.match(this.nonpunctuation) || [];\n\n function applyNearbyYear(year, threshold){\n if (threshold === true)\n threshold = 10;\n\n // if year is 2 digits or less, than the user most likely is trying to get a recent century\n if (year < 100){\n year += 2000;\n // if the new year is more than threshold years in advance, use last century\n if (year > ((new Date()).getFullYear()+threshold)){\n year -= 100;\n }\n }\n\n return year;\n }\n\n var pa
rsed = {},\n setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n setters_map = {\n yyyy: function(d,v){\n return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n },\n m: function(d,v){\n if (isNaN(d))\n return d;\n v -= 1;\n while (v < 0) v += 12;\n v %= 12;\n d.setUTCMonth(v);\n while (d.getUTCMonth() !== v)\n d.setUTCDate(d.getUTCDate()-1);\n return d;\n },\n d: function(d,v){\n return d.setUTCDate(v);\n }\n },\n val, filtered;\n setters_map['yy'] = setters_map['yyyy'];\n setters_map['M'] = setters_map['MM'] = setters_m
ap['mm'] = setters_map['m'];\n setters_map['dd'] = setters_map['d'];\n date = UTCToday();\n var fparts = format.parts.slice();\n // Remove noop parts\n if (parts.length !== fparts.length){\n fparts = $(fparts).filter(function(i,p){\n return $.inArray(p, setters_order) !== -1;\n }).toArray();\n }\n // Process remainder\n function match_part(){\n var m = this.slice(0, parts[i].length),\n p = parts[i].slice(0, m.length);\n return m.toLowerCase() === p.toLowerCase();\n }\n if (parts.length === fparts.length){\n var cnt;\n for (i=0, cnt = fparts.length; i < cnt; i++){\n val = parseInt(parts[i], 10);\n part = fparts[i];\n if (isNaN(val)){\n switch (part){\n case 'MM':\n
filtered = $(dates[language].months).filter(match_part);\n val = $.inArray(filtered[0], dates[language].months) + 1;\n break;\n case 'M':\n filtered = $(dates[language].monthsShort).filter(match_part);\n val = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n break;\n }\n }\n parsed[part] = val;\n }\n var _date, s;\n for (i=0; i < setters_order.length; i++){\n s = setters_order[i];\n if (s in parsed && !isNaN(parsed[s])){\n _date = new Date(date);\n setters_map[s](_date, parsed[s]);\n if (!isNaN(_date))\n date = _date;\n }\n }
\n }\n return date;\n },\n formatDate: function(date, format, language){\n if (!date)\n return '';\n if (typeof format === 'string')\n format = DPGlobal.parseFormat(format);\n if (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n d: date.getUTCDate(),\n D: dates[language].daysShort[date.getUTCDay()],\n DD: dates[language].days[date.getUTCDay()],\n m: date.getUTCMonth() + 1,\n M: dates[language].monthsShort[date.getUTCMonth()],\n MM: dates[language].months[date.getUTCMonth()],\n yy: date.getUTCFullYear().toString().substring(2),\n yyyy: date.getUTCFullYear()\n };\n val.dd = (val.d < 10 ? '0' : '') + val.d;\n val.mm = (val.m < 10 ? '0' : '') + val.m;\n date = [];\n var seps = $.ext
end([], format.separators);\n for (var i=0, cnt = format.parts.length; i <= cnt; i++){\n if (seps.length)\n date.push(seps.shift());\n date.push(val[format.parts[i]]);\n }\n return date.join('');\n },\n headTemplate: '<thead>'+\n '<tr>'+\n '<th colspan=\"7\" class=\"datepicker2-title\"></th>'+\n '</tr>'+\n '<tr>'+\n '<th class=\"prev\">'+defaults.templates.leftArrow+'</th>'+\n '<th colspan=\"5\" class=\"datepicker2-switch\"></th>'+\n '<th class=\"next\">'+defaults.templates.rightArrow+'</th>'+\n '</tr>'+\n '</thead>',\n contTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n footTemplate: '<tfoot>'+\n '<tr>'+\n '<th colspan=\"7\" class=\"today\"></th>'+\n '</tr>'+\n '<tr>'+\n '<th colspan=\"7\" class=\"clear\"></th>'+\n '</tr>'
+\n '</tfoot>'\n };\n DPGlobal.template = '<div class=\"datepicker2\">'+\n '<div class=\"datepicker2-days\">'+\n '<table class=\"table-condensed\">'+\n DPGlobal.headTemplate+\n '<tbody></tbody>'+\n DPGlobal.footTemplate+\n '</table>'+\n '</div>'+\n '<div class=\"datepicker2-months\">'+\n '<table class=\"table-condensed\">'+\n DPGlobal.headTemplate+\n DPGlobal.contTemplate+\n DPGlobal.footTemplate+\n '</table>'+\n '</div>'+\n '<div class=\"datepicker2-years\">'+\n '<table class=\"table-condensed\">'+\n DPGlobal.headTemplate+\n DPGlobal.contTemplate+\n DPGlobal.footTemplate+\n '</table>'+\n '</div>'+\n '<div class=\"datepicker2-decades\">'+\n '<table class=\"table-condensed\">'+\n DPGlobal.headTemplate+\n DPGlobal.contTemplate+\n DPGlobal.footTemplate+\n '</table>'+\n '</div>'+\n '<div class=\"
datepicker2-centuries\">'+\n '<table class=\"table-condensed\">'+\n DPGlobal.headTemplate+\n DPGlobal.contTemplate+\n DPGlobal.footTemplate+\n '</table>'+\n '</div>'+\n '</div>';\n\n $.fn.datepicker2.DPGlobal = DPGlobal;\n\n\n /* DATEPICKER NO CONFLICT\n * =================== */\n\n $.fn.datepicker2.noConflict = function(){\n $.fn.datepicker2 = old;\n return this;\n };\n\n /* DATEPICKER VERSION\n * =================== */\n $.fn.datepicker2.version = '1.9.0';\n\n $.fn.datepicker2.deprecated = function(msg){\n var console = window.console;\n if (console && console.warn) {\n console.warn('DEPRECATED: ' + msg);\n }\n };\n\n\n /* DATEPICKER DATA-API\n * ================== */\n\n $(document).on(\n 'focus.datepicker2.data-api click.datepicker2.data-api',\n '[data-provide=\"datepicker2\"]',\n function(e){\n var $this = $(this);\n if ($this.d
ata('datepicker2'))\n return;\n e.preventDefault();\n // component click requires us to explicitly show it\n datepicker2Plugin.call($this, 'show');\n }\n );\n $(function(){\n datepicker2Plugin.call($('[data-provide=\"datepicker2-inline\"]'));\n });\n\n}));\n"],"names":["factory","$","undefined","UTCDate","Date","UTC","apply","arguments","UTCToday","today","getFullYear","getMonth","getDate","isUTCEquals","date1","date2","getUTCFullYear","getUTCMonth","getUTCDate","alias","method","deprecationMsg","fn","datepicker2","deprecated","this","extras","DateArray","get","i","slice","contains","d","val","valueOf","l","length","remove","splice","replace","new_array","isArray","clear","push","copy","a","extend","Datepicker2","element","options","data","_events","_secondaryEvents","_process_options","dates","viewDate","o","defaultViewDate","focusDate","isInput","is","inputField","find","component","hasClass","isInline","picker","DPGlobal","template","_
check_template","templates","leftArrow","html","rightArrow","_buildEvents","_attachEvents","addClass","appendTo","rtl","calendarWeeks","attr","Number","startDate","_o","endDate","daysOfWeekDisabled","daysOfWeekHighlighted","datesDisabled","_allow_update","setViewMode","startView","fillDow","fillMonths","update","show","prototype","constructor","_resolveViewName","view","each","viewModes","viewMode","inArray","names","_resolveDaysOfWeek","daysOfWeek","split","map","tmp","match","ex","opts","lang","language","defaults","minViewMode","maxViewMode","Math","max","min","multidate","multidateSeparator","String","weekStart","weekEnd","format","parseFormat","_local_to_utc","_zero_time","parseDate","assumeNearbyYear","Infinity","plc","orientation","toLowerCase","_plc","grep","word","test","x","y","year","month","day","_applyEvents","evs","el","ch","ev","on","_unapplyEvents","off","events","keyup","proxy","e","keyCode","keydown","paste","showOnFocus","focus","click","blur","_focused_from","target","immediateUpdates","d
ate","navArrowsClick","dayCellClick","window","resize","place","document","hide","_detachEvents","_attachSecondaryEvents","_detachSecondaryEvents","_trigger","event","altdate","local_date","_utc_to_local","trigger","type","ix","formatDate","prop","enableOnReadonly","container","navigator","msMaxTouchPoints","disableTouchKeyboard","detach","forceParse","setValue","destroy","dateString","originalEvent","clipboardData","types","getData","setDate","preventDefault","utc","local","getTime","getTimezoneOffset","_zero_utc_time","getDates","getUTCDates","selected_date","clearDates","autoclose","setDates","args","setUTCDates","setUTCDate","formatted","getFormattedDate","join","getStartDate","setStartDate","updateNavArrows","getEndDate","setEndDate","setDaysOfWeekDisabled","setDaysOfWeekHighlighted","setDatesDisabled","calendarWidth","outerWidth","calendarHeight","outerHeight","windowWidth","width","scrollTop","appendOffset","offset","parentsZindex","parents","itemZIndex","css","zIndex","zIndexOffset","parent","height"
,"left","top","removeClass","yorient","parseInt","right","oldDates","fromArgs","dateWithinRange","updateViewDate","change","fill","showWeekDays","dowCnt","daysMin","append","localDate","monthsShort","setRange","range","getClassNames","cls","todayHighlight","dateIsDisabled","getUTCDay","_fill_yearsView","selector","cssClass","factor","startYear","endYear","beforeFn","classes","tooltip","before","step","startVal","floor","endVal","focusedVal","selected","currVal","noop","enabled","concat","text","startMonth","endMonth","todaytxt","cleartxt","titleFormat","todayDate","titleBtnVisible","todayBtn","weekOfDateIsDisabled","isNaN","clearBtn","title","prevMonth","nextMonth","setUTCFullYear","weekDay","clsName","ws","th","yth","calWeek","content","beforeShowDay","isFunction","uniqueSort","unique","toString","monthsTitle","months","end","eq","beforeShowMonth","that","moDate","beforeShowYear","beforeShowDecade","beforeShowCentury","prevIsDisabled","nextIsDisabled","toggleClass","stopPropagation","_setDate","index","setU
TCMonth","timestamp","currentTarget","dir","navStep","moveMonth","_toggle_multidate","toggleActive","which","moveDay","newDate","moveWeek","new_month","new_date","mag","abs","moveYear","moveAvailableDate","newViewDate","dateChanged","keyboardNavigation","ctrlKey","shiftKey","children","filter","DateRangePicker","inputs","jquery","keepEmptyValues","datepicker2Plugin","call","dateUpdated","pickers","updateDates","opts_from_el","prefix","out","RegExp","re_lower","_","key","opts_from_locale","locale_opts","k","updateRanges","p","updating","dp","keep_empty_values","j","old","option","internal_return","Array","shift","$this","elopts","locopts","toArray","Error","Constructor","en","days","daysShort","validParts","nonpunctuation","toValue","toDisplay","separators","parts","assumeNearby","part","fn_map","m","w","dateAliases","yesterday","tomorrow","filtered","parsed","setters_order","setters_map","yyyy","v","threshold","fparts","match_part","cnt","_date","s","D","DD","M","MM","yy","substring","dd","mm","seps","headTe
mplate","contTemplate","footTemplate","noConflict","version","msg","console","warn","define","amd","exports","require","jQuery"],"mappings":"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"}