{"version":3,"sources":["daterangepicker.js"],"names":["root","factory","define","amd","moment","jquery","fn","hasOwnProperty","module","exports","jQuery","window","undefined","require","daterangepicker","this","$","DateRangePicker","element","options","cb","parentEl","startDate","startOf","endDate","endOf","minDate","maxDate","maxSpan","autoApply","singleDatePicker","showDropdowns","minYear","subtract","format","maxYear","add","showWeekNumbers","showISOWeekNumbers","showCustomRangeLabel","timePicker","timePicker24Hour","timePickerIncrement","timePickerSeconds","linkedCalendars","autoUpdateInput","alwaysShowCalendars","ranges","opens","hasClass","drops","buttonClasses","applyButtonClasses","cancelButtonClasses","locale","direction","localeData","longDateFormat","separator","applyLabel","cancelLabel","weekLabel","customRangeLabel","daysOfWeek","weekdaysMin","monthNames","monthsShort","firstDay","firstDayOfWeek","callback","isShowing","leftCalendar","rightCalendar","extend","data","template","length","container","appendTo","slice","elem","document","createElement","innerHTML","rangeHtml","value","addClass","isBefore","clone","isAfter","applyClass","cancelClass","dateLimit","join","isInvalidDate","isCustomDate","iterator","push","shift","start","end","range","is","val","split","setStartDate","setEndDate","timepicker","list","find","prepend","hide","show","html","on","proxy","clickPrev","clickNext","clickDate","hoverDate","monthOrYearChanged","timeChanged","clickRange","clickApply","clickCancel","elementChanged","keydown","toggle","updateElement","prototype","constructor","minute","Math","round","floor","updateMonthsInView","previousRightTime","updateView","renderTimePicker","prop","removeClass","updateCalendars","updateFormInputs","month","date","year","hour","second","ampm","parseInt","isNaN","renderCalendar","calculateChosenLabel","side","calendar","daysInMonth","lastDay","lastMonth","lastYear","daysInLastMonth","dayOfWeek","day","i","startDay","curDate","col","row","dateHtml","currentMonth","currentYear","inMinYear","inMaxYear","monthHtml","m","yearHtml","y","each","index","maxLimit","week","isoWeek","classes","isSame","Date","isoWeekday","isCustom","Array","apply","cname","disabled","replace","selected","timeSelector","i_in_24","time","padded","am_html","pm_html","move","containerTop","parentOffset","top","left","parentRightEdge","width","offset","scrollTop","scrollLeft","clientWidth","outerHeight","scrollHeight","css","right","containerWidth","outerWidth","toggleClass","containerRight","containerLeft","e","_outsideClickProxy","outsideClick","oldStartDate","oldEndDate","trigger","chosenLabel","off","target","type","closest","showCalendars","hideCalendars","label","getAttribute","dates","parents","title","attr","substr","el","dt","stopPropagation","customRange","isLeft","leftOrRight","cal","dateString","isValid","keyCode","preventDefault","newValue","remove","removeData","implementOptions","defaultOptions"],"mappings":"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","file":"../daterangepicker.js","sourcesContent":["/**\r\n* @version: 3.1\r\n* @author: Dan Grossman http://www.dangrossman.info/\r\n* @copyright: Copyright (c) 2012-2019 Dan Grossman. All rights reserved.\r\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\r\n* @website: http://www.daterangepicker.com/\r\n*/\r\n// Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Make globaly available as well\r\n define(['moment', 'jquery'], function (moment, jquery) {\r\n if (!jquery.fn) jquery.fn = {}; // webpack server rendering\r\n if (typeof moment !== 'function' && moment.hasOwnProperty('default')) moment = moment['default']\r\n return factory(moment, jquery);\r\n });\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node / Browserify\r\n //isomorphic issue\r\n var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;\r\n if (!jQuery) {\r\n jQuery = require('jquery');\r\n if (!jQuery.fn) jQuery.fn = {};\r\n }\r\n var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment');\r\n module.exports = factory(moment, jQuery);\r\n } else {\r\n // Browser globals\r\n root.daterangepicker = factory(root.moment, root.jQuery);\r\n }\r\n}(typeof window !== 'undefined' ? window : this, function(moment, $) {\r\n var DateRangePicker = function(element, options, cb) {\r\n\r\n //default settings for options\r\n this.parentEl = 'body';\r\n this.element = $(element);\r\n this.startDate = moment().startOf('day');\r\n this.endDate = moment().endOf('day');\r\n this.minDate = false;\r\n this.maxDate = false;\r\n this.maxSpan = false;\r\n this.autoApply = false;\r\n this.singleDatePicker = false;\r\n this.showDropdowns = false;\r\n this.minYear = moment().subtract(100, 'year').format('YYYY');\r\n this.maxYear = moment().add(100, 'year').format('YYYY');\r\n this.showWeekNumbers = false;\r\n this.showISOWeekNumbers = false;\r\n this.showCustomRangeLabel = true;\r\n this.timePicker = false;\r\n this.timePicker24Hour = false;\r\n this.timePickerIncrement = 1;\r\n this.timePickerSeconds = false;\r\n this.linkedCalendars = true;\r\n this.autoUpdateInput = true;\r\n this.alwaysShowCalendars = false;\r\n this.ranges = {};\r\n\r\n this.opens = 'right';\r\n if (this.element.hasClass('pull-right'))\r\n this.opens = 'left';\r\n\r\n this.drops = 'down';\r\n if (this.element.hasClass('dropup'))\r\n this.drops = 'up';\r\n\r\n this.buttonClasses = 'btn btn-sm';\r\n this.applyButtonClasses = 'btn-primary';\r\n this.cancelButtonClasses = 'btn-default';\r\n\r\n this.locale = {\r\n direction: 'ltr',\r\n format: moment.localeData().longDateFormat('L'),\r\n separator: ' - ',\r\n applyLabel: 'Apply',\r\n cancelLabel: 'Cancel',\r\n weekLabel: 'W',\r\n customRangeLabel: 'Custom Range',\r\n daysOfWeek: moment.weekdaysMin(),\r\n monthNames: moment.monthsShort(),\r\n firstDay: moment.localeData().firstDayOfWeek()\r\n };\r\n\r\n this.callback = function() { };\r\n\r\n //some state information\r\n this.isShowing = false;\r\n this.leftCalendar = {};\r\n this.rightCalendar = {};\r\n\r\n //custom options from user\r\n if (typeof options !== 'object' || options === null)\r\n options = {};\r\n\r\n //allow setting options with data attributes\r\n //data-api options will be overwritten with custom javascript options\r\n options = $.extend(this.element.data(), options);\r\n\r\n //html template for the picker UI\r\n if (typeof options.template !== 'string' && !(options.template instanceof $))\r\n options.template =\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n\r\n this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);\r\n this.container = $(options.template).appendTo(this.parentEl);\r\n\r\n //\r\n // handle all the possible options overriding defaults\r\n //\r\n\r\n if (typeof options.locale === 'object') {\r\n\r\n if (typeof options.locale.direction === 'string')\r\n this.locale.direction = options.locale.direction;\r\n\r\n if (typeof options.locale.format === 'string')\r\n this.locale.format = options.locale.format;\r\n\r\n if (typeof options.locale.separator === 'string')\r\n this.locale.separator = options.locale.separator;\r\n\r\n if (typeof options.locale.daysOfWeek === 'object')\r\n this.locale.daysOfWeek = options.locale.daysOfWeek.slice();\r\n\r\n if (typeof options.locale.monthNames === 'object')\r\n this.locale.monthNames = options.locale.monthNames.slice();\r\n\r\n if (typeof options.locale.firstDay === 'number')\r\n this.locale.firstDay = options.locale.firstDay;\r\n\r\n if (typeof options.locale.applyLabel === 'string')\r\n this.locale.applyLabel = options.locale.applyLabel;\r\n\r\n if (typeof options.locale.cancelLabel === 'string')\r\n this.locale.cancelLabel = options.locale.cancelLabel;\r\n\r\n if (typeof options.locale.weekLabel === 'string')\r\n this.locale.weekLabel = options.locale.weekLabel;\r\n\r\n if (typeof options.locale.customRangeLabel === 'string'){\r\n //Support unicode chars in the custom range name.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = options.locale.customRangeLabel;\r\n var rangeHtml = elem.value;\r\n this.locale.customRangeLabel = rangeHtml;\r\n }\r\n }\r\n this.container.addClass(this.locale.direction);\r\n\r\n if (typeof options.startDate === 'string')\r\n this.startDate = moment(options.startDate, this.locale.format);\r\n\r\n if (typeof options.endDate === 'string')\r\n this.endDate = moment(options.endDate, this.locale.format);\r\n\r\n if (typeof options.minDate === 'string')\r\n this.minDate = moment(options.minDate, this.locale.format);\r\n\r\n if (typeof options.maxDate === 'string')\r\n this.maxDate = moment(options.maxDate, this.locale.format);\r\n\r\n if (typeof options.startDate === 'object')\r\n this.startDate = moment(options.startDate);\r\n\r\n if (typeof options.endDate === 'object')\r\n this.endDate = moment(options.endDate);\r\n\r\n if (typeof options.minDate === 'object')\r\n this.minDate = moment(options.minDate);\r\n\r\n if (typeof options.maxDate === 'object')\r\n this.maxDate = moment(options.maxDate);\r\n\r\n // sanity check for bad options\r\n if (this.minDate && this.startDate.isBefore(this.minDate))\r\n this.startDate = this.minDate.clone();\r\n\r\n // sanity check for bad options\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (typeof options.applyButtonClasses === 'string')\r\n this.applyButtonClasses = options.applyButtonClasses;\r\n\r\n if (typeof options.applyClass === 'string') //backwards compat\r\n this.applyButtonClasses = options.applyClass;\r\n\r\n if (typeof options.cancelButtonClasses === 'string')\r\n this.cancelButtonClasses = options.cancelButtonClasses;\r\n\r\n if (typeof options.cancelClass === 'string') //backwards compat\r\n this.cancelButtonClasses = options.cancelClass;\r\n\r\n if (typeof options.maxSpan === 'object')\r\n this.maxSpan = options.maxSpan;\r\n\r\n if (typeof options.dateLimit === 'object') //backwards compat\r\n this.maxSpan = options.dateLimit;\r\n\r\n if (typeof options.opens === 'string')\r\n this.opens = options.opens;\r\n\r\n if (typeof options.drops === 'string')\r\n this.drops = options.drops;\r\n\r\n if (typeof options.showWeekNumbers === 'boolean')\r\n this.showWeekNumbers = options.showWeekNumbers;\r\n\r\n if (typeof options.showISOWeekNumbers === 'boolean')\r\n this.showISOWeekNumbers = options.showISOWeekNumbers;\r\n\r\n if (typeof options.buttonClasses === 'string')\r\n this.buttonClasses = options.buttonClasses;\r\n\r\n if (typeof options.buttonClasses === 'object')\r\n this.buttonClasses = options.buttonClasses.join(' ');\r\n\r\n if (typeof options.showDropdowns === 'boolean')\r\n this.showDropdowns = options.showDropdowns;\r\n\r\n if (typeof options.minYear === 'number')\r\n this.minYear = options.minYear;\r\n\r\n if (typeof options.maxYear === 'number')\r\n this.maxYear = options.maxYear;\r\n\r\n if (typeof options.showCustomRangeLabel === 'boolean')\r\n this.showCustomRangeLabel = options.showCustomRangeLabel;\r\n\r\n if (typeof options.singleDatePicker === 'boolean') {\r\n this.singleDatePicker = options.singleDatePicker;\r\n if (this.singleDatePicker)\r\n this.endDate = this.startDate.clone();\r\n }\r\n\r\n if (typeof options.timePicker === 'boolean')\r\n this.timePicker = options.timePicker;\r\n\r\n if (typeof options.timePickerSeconds === 'boolean')\r\n this.timePickerSeconds = options.timePickerSeconds;\r\n\r\n if (typeof options.timePickerIncrement === 'number')\r\n this.timePickerIncrement = options.timePickerIncrement;\r\n\r\n if (typeof options.timePicker24Hour === 'boolean')\r\n this.timePicker24Hour = options.timePicker24Hour;\r\n\r\n if (typeof options.autoApply === 'boolean')\r\n this.autoApply = options.autoApply;\r\n\r\n if (typeof options.autoUpdateInput === 'boolean')\r\n this.autoUpdateInput = options.autoUpdateInput;\r\n\r\n if (typeof options.linkedCalendars === 'boolean')\r\n this.linkedCalendars = options.linkedCalendars;\r\n\r\n if (typeof options.isInvalidDate === 'function')\r\n this.isInvalidDate = options.isInvalidDate;\r\n\r\n if (typeof options.isCustomDate === 'function')\r\n this.isCustomDate = options.isCustomDate;\r\n\r\n if (typeof options.alwaysShowCalendars === 'boolean')\r\n this.alwaysShowCalendars = options.alwaysShowCalendars;\r\n\r\n // update day names order to firstDay\r\n if (this.locale.firstDay != 0) {\r\n var iterator = this.locale.firstDay;\r\n while (iterator > 0) {\r\n this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\r\n iterator--;\r\n }\r\n }\r\n\r\n var start, end, range;\r\n\r\n //if no start/end dates set, check if an input element contains initial values\r\n if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {\r\n if ($(this.element).is(':text')) {\r\n var val = $(this.element).val(),\r\n split = val.split(this.locale.separator);\r\n\r\n start = end = null;\r\n\r\n if (split.length == 2) {\r\n start = moment(split[0], this.locale.format);\r\n end = moment(split[1], this.locale.format);\r\n } else if (this.singleDatePicker && val !== \"\") {\r\n start = moment(val, this.locale.format);\r\n end = moment(val, this.locale.format);\r\n }\r\n if (start !== null && end !== null) {\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n }\r\n }\r\n }\r\n\r\n if (typeof options.ranges === 'object') {\r\n for (range in options.ranges) {\r\n\r\n if (typeof options.ranges[range][0] === 'string')\r\n start = moment(options.ranges[range][0], this.locale.format);\r\n else\r\n start = moment(options.ranges[range][0]);\r\n\r\n if (typeof options.ranges[range][1] === 'string')\r\n end = moment(options.ranges[range][1], this.locale.format);\r\n else\r\n end = moment(options.ranges[range][1]);\r\n\r\n // If the start or end date exceed those allowed by the minDate or maxSpan\r\n // options, shorten the range to the allowable period.\r\n if (this.minDate && start.isBefore(this.minDate))\r\n start = this.minDate.clone();\r\n\r\n var maxDate = this.maxDate;\r\n if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate))\r\n maxDate = start.clone().add(this.maxSpan);\r\n if (maxDate && end.isAfter(maxDate))\r\n end = maxDate.clone();\r\n\r\n // If the end of the range is before the minimum or the start of the range is\r\n // after the maximum, don't display this range option at all.\r\n if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day'))\r\n || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))\r\n continue;\r\n\r\n //Support unicode chars in the range names.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = range;\r\n var rangeHtml = elem.value;\r\n\r\n this.ranges[rangeHtml] = [start, end];\r\n }\r\n\r\n var list = '';\r\n this.container.find('.ranges').prepend(list);\r\n }\r\n\r\n if (typeof cb === 'function') {\r\n this.callback = cb;\r\n }\r\n\r\n if (!this.timePicker) {\r\n this.startDate = this.startDate.startOf('day');\r\n this.endDate = this.endDate.endOf('day');\r\n this.container.find('.calendar-time').hide();\r\n }\r\n\r\n //can't be used together for now\r\n if (this.timePicker && this.autoApply)\r\n this.autoApply = false;\r\n\r\n if (this.autoApply) {\r\n this.container.addClass('auto-apply');\r\n }\r\n\r\n if (typeof options.ranges === 'object')\r\n this.container.addClass('show-ranges');\r\n\r\n if (this.singleDatePicker) {\r\n this.container.addClass('single');\r\n this.container.find('.drp-calendar.left').addClass('single');\r\n this.container.find('.drp-calendar.left').show();\r\n this.container.find('.drp-calendar.right').hide();\r\n if (!this.timePicker && this.autoApply) {\r\n this.container.addClass('auto-apply');\r\n }\r\n }\r\n\r\n if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {\r\n this.container.addClass('show-calendar');\r\n }\r\n\r\n this.container.addClass('opens' + this.opens);\r\n\r\n //apply CSS classes and labels to buttons\r\n this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);\r\n if (this.applyButtonClasses.length)\r\n this.container.find('.applyBtn').addClass(this.applyButtonClasses);\r\n if (this.cancelButtonClasses.length)\r\n this.container.find('.cancelBtn').addClass(this.cancelButtonClasses);\r\n this.container.find('.applyBtn').html(this.locale.applyLabel);\r\n this.container.find('.cancelBtn').html(this.locale.cancelLabel);\r\n\r\n //\r\n // event listeners\r\n //\r\n\r\n this.container.find('.drp-calendar')\r\n .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))\r\n .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))\r\n .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))\r\n .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))\r\n .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this));\r\n\r\n this.container.find('.ranges')\r\n .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this));\r\n\r\n this.container.find('.drp-buttons')\r\n .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))\r\n .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this));\r\n\r\n if (this.element.is('input') || this.element.is('button')) {\r\n this.element.on({\r\n 'click.daterangepicker': $.proxy(this.show, this),\r\n 'focus.daterangepicker': $.proxy(this.show, this),\r\n 'keyup.daterangepicker': $.proxy(this.elementChanged, this),\r\n 'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility\r\n });\r\n } else {\r\n this.element.on('click.daterangepicker', $.proxy(this.toggle, this));\r\n this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));\r\n }\r\n\r\n //\r\n // if attached to a text input, set the initial value\r\n //\r\n\r\n this.updateElement();\r\n\r\n };\r\n\r\n DateRangePicker.prototype = {\r\n\r\n constructor: DateRangePicker,\r\n\r\n setStartDate: function(startDate) {\r\n if (typeof startDate === 'string')\r\n this.startDate = moment(startDate, this.locale.format);\r\n\r\n if (typeof startDate === 'object')\r\n this.startDate = moment(startDate);\r\n\r\n if (!this.timePicker)\r\n this.startDate = this.startDate.startOf('day');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.minDate && this.startDate.isBefore(this.minDate)) {\r\n this.startDate = this.minDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (this.maxDate && this.startDate.isAfter(this.maxDate)) {\r\n this.startDate = this.maxDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n setEndDate: function(endDate) {\r\n if (typeof endDate === 'string')\r\n this.endDate = moment(endDate, this.locale.format);\r\n\r\n if (typeof endDate === 'object')\r\n this.endDate = moment(endDate);\r\n\r\n if (!this.timePicker)\r\n this.endDate = this.endDate.endOf('day');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.endDate.isBefore(this.startDate))\r\n this.endDate = this.startDate.clone();\r\n\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate))\r\n this.endDate = this.startDate.clone().add(this.maxSpan);\r\n\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n isInvalidDate: function() {\r\n return false;\r\n },\r\n\r\n isCustomDate: function() {\r\n return false;\r\n },\r\n\r\n updateView: function() {\r\n if (this.timePicker) {\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n if (!this.endDate) {\r\n this.container.find('.right .calendar-time select').prop('disabled', true).addClass('disabled');\r\n } else {\r\n this.container.find('.right .calendar-time select').prop('disabled', false).removeClass('disabled');\r\n }\r\n }\r\n if (this.endDate)\r\n this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n this.updateMonthsInView();\r\n this.updateCalendars();\r\n this.updateFormInputs();\r\n },\r\n\r\n updateMonthsInView: function() {\r\n if (this.endDate) {\r\n\r\n //if both dates are visible already, do nothing\r\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\r\n (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n &&\r\n (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n ) {\r\n return;\r\n }\r\n\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {\r\n this.rightCalendar.month = this.endDate.clone().date(2);\r\n } else {\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n\r\n } else {\r\n if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n }\r\n if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {\r\n this.rightCalendar.month = this.maxDate.clone().date(2);\r\n this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');\r\n }\r\n },\r\n\r\n updateCalendars: function() {\r\n\r\n if (this.timePicker) {\r\n var hour, minute, second;\r\n if (this.endDate) {\r\n hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10);\r\n }\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n } else {\r\n hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10);\r\n }\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n }\r\n this.leftCalendar.month.hour(hour).minute(minute).second(second);\r\n this.rightCalendar.month.hour(hour).minute(minute).second(second);\r\n }\r\n\r\n this.renderCalendar('left');\r\n this.renderCalendar('right');\r\n\r\n //highlight any predefined range matching the current start and end dates\r\n this.container.find('.ranges li').removeClass('active');\r\n if (this.endDate == null) return;\r\n\r\n this.calculateChosenLabel();\r\n },\r\n\r\n renderCalendar: function(side) {\r\n\r\n //\r\n // Build the matrix of dates that will populate the calendar\r\n //\r\n\r\n var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;\r\n var month = calendar.month.month();\r\n var year = calendar.month.year();\r\n var hour = calendar.month.hour();\r\n var minute = calendar.month.minute();\r\n var second = calendar.month.second();\r\n var daysInMonth = moment([year, month]).daysInMonth();\r\n var firstDay = moment([year, month, 1]);\r\n var lastDay = moment([year, month, daysInMonth]);\r\n var lastMonth = moment(firstDay).subtract(1, 'month').month();\r\n var lastYear = moment(firstDay).subtract(1, 'month').year();\r\n var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\r\n var dayOfWeek = firstDay.day();\r\n\r\n //initialize a 6 rows x 7 columns array for the calendar\r\n var calendar = [];\r\n calendar.firstDay = firstDay;\r\n calendar.lastDay = lastDay;\r\n\r\n for (var i = 0; i < 6; i++) {\r\n calendar[i] = [];\r\n }\r\n\r\n //populate the calendar with date objects\r\n var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\r\n if (startDay > daysInLastMonth)\r\n startDay -= 7;\r\n\r\n if (dayOfWeek == this.locale.firstDay)\r\n startDay = daysInLastMonth - 6;\r\n\r\n var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\r\n\r\n var col, row;\r\n for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\r\n if (i > 0 && col % 7 === 0) {\r\n col = 0;\r\n row++;\r\n }\r\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\r\n curDate.hour(12);\r\n\r\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {\r\n calendar[row][col] = this.minDate.clone();\r\n }\r\n\r\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {\r\n calendar[row][col] = this.maxDate.clone();\r\n }\r\n\r\n }\r\n\r\n //make the calendar object available to hoverDate/clickDate\r\n if (side == 'left') {\r\n this.leftCalendar.calendar = calendar;\r\n } else {\r\n this.rightCalendar.calendar = calendar;\r\n }\r\n\r\n //\r\n // Display the calendar\r\n //\r\n\r\n var minDate = side == 'left' ? this.minDate : this.startDate;\r\n var maxDate = this.maxDate;\r\n var selected = side == 'left' ? this.startDate : this.endDate;\r\n var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};\r\n\r\n var html = '';\r\n html += '';\r\n html += '';\r\n\r\n // add empty cell for week number\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(\" YYYY\");\r\n\r\n if (this.showDropdowns) {\r\n var currentMonth = calendar[1][1].month();\r\n var currentYear = calendar[1][1].year();\r\n var maxYear = (maxDate && maxDate.year()) || (this.maxYear);\r\n var minYear = (minDate && minDate.year()) || (this.minYear);\r\n var inMinYear = currentYear == minYear;\r\n var inMaxYear = currentYear == maxYear;\r\n\r\n var monthHtml = '\";\r\n\r\n var yearHtml = '';\r\n\r\n dateHtml = monthHtml + yearHtml;\r\n }\r\n\r\n html += '';\r\n if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '';\r\n\r\n // add week number label\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {\r\n html += '';\r\n });\r\n\r\n html += '';\r\n html += '';\r\n html += '';\r\n\r\n //adjust maxDate to reflect the maxSpan setting in order to\r\n //grey out end dates beyond the maxSpan\r\n if (this.endDate == null && this.maxSpan) {\r\n var maxLimit = this.startDate.clone().add(this.maxSpan).endOf('day');\r\n if (!maxDate || maxLimit.isBefore(maxDate)) {\r\n maxDate = maxLimit;\r\n }\r\n }\r\n\r\n for (var row = 0; row < 6; row++) {\r\n html += '';\r\n\r\n // add week number\r\n if (this.showWeekNumbers)\r\n html += '';\r\n else if (this.showISOWeekNumbers)\r\n html += '';\r\n\r\n for (var col = 0; col < 7; col++) {\r\n\r\n var classes = [];\r\n\r\n //highlight today's date\r\n if (calendar[row][col].isSame(new Date(), \"day\"))\r\n classes.push('today');\r\n\r\n //highlight weekends\r\n if (calendar[row][col].isoWeekday() > 5)\r\n classes.push('weekend');\r\n\r\n //grey out the dates in other months displayed at beginning and end of this calendar\r\n if (calendar[row][col].month() != calendar[1][1].month())\r\n classes.push('off', 'ends');\r\n\r\n //don't allow selection of dates before the minimum date\r\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of dates after the maximum date\r\n if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of date if a custom function decides it's invalid\r\n if (this.isInvalidDate(calendar[row][col]))\r\n classes.push('off', 'disabled');\r\n\r\n //highlight the currently selected start date\r\n if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'start-date');\r\n\r\n //highlight the currently selected end date\r\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'end-date');\r\n\r\n //highlight dates in-between the selected dates\r\n if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)\r\n classes.push('in-range');\r\n\r\n //apply custom classes for this date\r\n var isCustom = this.isCustomDate(calendar[row][col]);\r\n if (isCustom !== false) {\r\n if (typeof isCustom === 'string')\r\n classes.push(isCustom);\r\n else\r\n Array.prototype.push.apply(classes, isCustom);\r\n }\r\n\r\n var cname = '', disabled = false;\r\n for (var i = 0; i < classes.length; i++) {\r\n cname += classes[i] + ' ';\r\n if (classes[i] == 'disabled')\r\n disabled = true;\r\n }\r\n if (!disabled)\r\n cname += 'available';\r\n\r\n html += '';\r\n\r\n }\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][0].isoWeek() + '' + calendar[row][col].date() + '
';\r\n\r\n this.container.find('.drp-calendar.' + side + ' .calendar-table').html(html);\r\n\r\n },\r\n\r\n renderTimePicker: function(side) {\r\n\r\n // Don't bother updating the time picker if it's currently disabled\r\n // because an end date hasn't been clicked yet\r\n if (side == 'right' && !this.endDate) return;\r\n\r\n var html, selected, minDate, maxDate = this.maxDate;\r\n\r\n if (this.maxSpan && (!this.maxDate || this.startDate.clone().add(this.maxSpan).isBefore(this.maxDate)))\r\n maxDate = this.startDate.clone().add(this.maxSpan);\r\n\r\n if (side == 'left') {\r\n selected = this.startDate.clone();\r\n minDate = this.minDate;\r\n } else if (side == 'right') {\r\n selected = this.endDate.clone();\r\n minDate = this.startDate;\r\n\r\n //Preserve the time already selected\r\n var timeSelector = this.container.find('.drp-calendar.right .calendar-time');\r\n if (timeSelector.html() != '') {\r\n\r\n selected.hour(!isNaN(selected.hour()) ? selected.hour() : timeSelector.find('.hourselect option:selected').val());\r\n selected.minute(!isNaN(selected.minute()) ? selected.minute() : timeSelector.find('.minuteselect option:selected').val());\r\n selected.second(!isNaN(selected.second()) ? selected.second() : timeSelector.find('.secondselect option:selected').val());\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = timeSelector.find('.ampmselect option:selected').val();\r\n if (ampm === 'PM' && selected.hour() < 12)\r\n selected.hour(selected.hour() + 12);\r\n if (ampm === 'AM' && selected.hour() === 12)\r\n selected.hour(0);\r\n }\r\n\r\n }\r\n\r\n if (selected.isBefore(this.startDate))\r\n selected = this.startDate.clone();\r\n\r\n if (maxDate && selected.isAfter(maxDate))\r\n selected = maxDate.clone();\r\n\r\n }\r\n\r\n //\r\n // hours\r\n //\r\n\r\n html = ' ';\r\n\r\n //\r\n // minutes\r\n //\r\n\r\n html += ': ';\r\n\r\n //\r\n // seconds\r\n //\r\n\r\n if (this.timePickerSeconds) {\r\n html += ': ';\r\n }\r\n\r\n //\r\n // AM/PM\r\n //\r\n\r\n if (!this.timePicker24Hour) {\r\n html += '';\r\n }\r\n\r\n this.container.find('.drp-calendar.' + side + ' .calendar-time').html(html);\r\n\r\n },\r\n\r\n updateFormInputs: function() {\r\n\r\n if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {\r\n this.container.find('button.applyBtn').prop('disabled', false);\r\n } else {\r\n this.container.find('button.applyBtn').prop('disabled', true);\r\n }\r\n\r\n },\r\n\r\n move: function() {\r\n var parentOffset = { top: 0, left: 0 },\r\n containerTop,\r\n drops = this.drops;\r\n\r\n var parentRightEdge = $(window).width();\r\n if (!this.parentEl.is('body')) {\r\n parentOffset = {\r\n top: this.parentEl.offset().top - this.parentEl.scrollTop(),\r\n left: this.parentEl.offset().left - this.parentEl.scrollLeft()\r\n };\r\n parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;\r\n }\r\n\r\n switch (drops) {\r\n case 'auto':\r\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\r\n if (containerTop + this.container.outerHeight() >= this.parentEl[0].scrollHeight) {\r\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\r\n drops = 'up';\r\n }\r\n break;\r\n case 'up':\r\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\r\n break;\r\n default:\r\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\r\n break;\r\n }\r\n\r\n // Force the container to it's actual width\r\n this.container.css({\r\n top: 0,\r\n left: 0,\r\n right: 'auto'\r\n });\r\n var containerWidth = this.container.outerWidth();\r\n\r\n this.container.toggleClass('drop-up', drops == 'up');\r\n\r\n if (this.opens == 'left') {\r\n var containerRight = parentRightEdge - this.element.offset().left - this.element.outerWidth();\r\n if (containerWidth + containerRight > $(window).width()) {\r\n this.container.css({\r\n top: containerTop,\r\n right: 'auto',\r\n left: 9\r\n });\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n right: containerRight,\r\n left: 'auto'\r\n });\r\n }\r\n } else if (this.opens == 'center') {\r\n var containerLeft = this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2\r\n - containerWidth / 2;\r\n if (containerLeft < 0) {\r\n this.container.css({\r\n top: containerTop,\r\n right: 'auto',\r\n left: 9\r\n });\r\n } else if (containerLeft + containerWidth > $(window).width()) {\r\n this.container.css({\r\n top: containerTop,\r\n left: 'auto',\r\n right: 0\r\n });\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n left: containerLeft,\r\n right: 'auto'\r\n });\r\n }\r\n } else {\r\n var containerLeft = this.element.offset().left - parentOffset.left;\r\n if (containerLeft + containerWidth > $(window).width()) {\r\n this.container.css({\r\n top: containerTop,\r\n left: 'auto',\r\n right: 0\r\n });\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n left: containerLeft,\r\n right: 'auto'\r\n });\r\n }\r\n }\r\n },\r\n\r\n show: function(e) {\r\n if (this.isShowing) return;\r\n\r\n // Create a click proxy that is private to this instance of datepicker, for unbinding\r\n this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);\r\n\r\n // Bind global datepicker mousedown for hiding and\r\n $(document)\r\n .on('mousedown.daterangepicker', this._outsideClickProxy)\r\n // also support mobile devices\r\n .on('touchend.daterangepicker', this._outsideClickProxy)\r\n // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them\r\n .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)\r\n // and also close when focus changes to outside the picker (eg. tabbing between controls)\r\n .on('focusin.daterangepicker', this._outsideClickProxy);\r\n\r\n // Reposition the picker if the window is resized while it's open\r\n $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));\r\n\r\n this.oldStartDate = this.startDate.clone();\r\n this.oldEndDate = this.endDate.clone();\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n this.updateView();\r\n this.container.show();\r\n this.move();\r\n this.element.trigger('show.daterangepicker', this);\r\n this.isShowing = true;\r\n },\r\n\r\n hide: function(e) {\r\n if (!this.isShowing) return;\r\n\r\n //incomplete date selection, revert to last values\r\n if (!this.endDate) {\r\n this.startDate = this.oldStartDate.clone();\r\n this.endDate = this.oldEndDate.clone();\r\n }\r\n\r\n //if a new date range was selected, invoke the user callback function\r\n if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))\r\n this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel);\r\n\r\n //if picker is attached to a text input, update it\r\n this.updateElement();\r\n\r\n $(document).off('.daterangepicker');\r\n $(window).off('.daterangepicker');\r\n this.container.hide();\r\n this.element.trigger('hide.daterangepicker', this);\r\n this.isShowing = false;\r\n },\r\n\r\n toggle: function(e) {\r\n if (this.isShowing) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n },\r\n\r\n outsideClick: function(e) {\r\n var target = $(e.target);\r\n // if the page is clicked anywhere except within the daterangerpicker/button\r\n // itself then call this.hide()\r\n if (\r\n // ie modal dialog fix\r\n e.type == \"focusin\" ||\r\n target.closest(this.element).length ||\r\n target.closest(this.container).length ||\r\n target.closest('.calendar-table').length\r\n ) return;\r\n this.hide();\r\n this.element.trigger('outsideClick.daterangepicker', this);\r\n },\r\n\r\n showCalendars: function() {\r\n this.container.addClass('show-calendar');\r\n this.move();\r\n this.element.trigger('showCalendar.daterangepicker', this);\r\n },\r\n\r\n hideCalendars: function() {\r\n this.container.removeClass('show-calendar');\r\n this.element.trigger('hideCalendar.daterangepicker', this);\r\n },\r\n\r\n clickRange: function(e) {\r\n var label = e.target.getAttribute('data-range-key');\r\n this.chosenLabel = label;\r\n if (label == this.locale.customRangeLabel) {\r\n this.showCalendars();\r\n } else {\r\n var dates = this.ranges[label];\r\n this.startDate = dates[0];\r\n this.endDate = dates[1];\r\n\r\n if (!this.timePicker) {\r\n this.startDate.startOf('day');\r\n this.endDate.endOf('day');\r\n }\r\n\r\n if (!this.alwaysShowCalendars)\r\n this.hideCalendars();\r\n this.clickApply();\r\n }\r\n },\r\n\r\n clickPrev: function(e) {\r\n var cal = $(e.target).parents('.drp-calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.subtract(1, 'month');\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month.subtract(1, 'month');\r\n } else {\r\n this.rightCalendar.month.subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n clickNext: function(e) {\r\n var cal = $(e.target).parents('.drp-calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.add(1, 'month');\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month.add(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n hoverDate: function(e) {\r\n\r\n //ignore dates that can't be selected\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.drp-calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n //highlight the dates between the start date and the date being hovered as a potential end date\r\n var leftCalendar = this.leftCalendar;\r\n var rightCalendar = this.rightCalendar;\r\n var startDate = this.startDate;\r\n if (!this.endDate) {\r\n this.container.find('.drp-calendar tbody td').each(function(index, el) {\r\n\r\n //skip week numbers, only look at dates\r\n if ($(el).hasClass('week')) return;\r\n\r\n var title = $(el).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(el).parents('.drp-calendar');\r\n var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];\r\n\r\n if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {\r\n $(el).addClass('in-range');\r\n } else {\r\n $(el).removeClass('in-range');\r\n }\r\n\r\n });\r\n }\r\n\r\n },\r\n\r\n clickDate: function(e) {\r\n\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.drp-calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n //\r\n // this function needs to do a few things:\r\n // * alternate between selecting a start and end date for the range,\r\n // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date\r\n // * if autoapply is enabled, and an end date was chosen, apply the selection\r\n // * if single date picker mode, and time picker isn't enabled, apply the selection immediately\r\n // * if one of the inputs above the calendars was focused, cancel that manual input\r\n //\r\n\r\n if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10);\r\n }\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.endDate = null;\r\n this.setStartDate(date.clone());\r\n } else if (!this.endDate && date.isBefore(this.startDate)) {\r\n //special case: clicking the same date for start/end,\r\n //but the time of the end date is before the start date\r\n this.setEndDate(this.startDate.clone());\r\n } else { // picking end\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10);\r\n }\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.setEndDate(date.clone());\r\n if (this.autoApply) {\r\n this.calculateChosenLabel();\r\n this.clickApply();\r\n }\r\n }\r\n\r\n if (this.singleDatePicker) {\r\n this.setEndDate(this.startDate);\r\n if (!this.timePicker && this.autoApply)\r\n this.clickApply();\r\n }\r\n\r\n this.updateView();\r\n\r\n //This is to cancel the blur event handler if the mouse was in one of the inputs\r\n e.stopPropagation();\r\n\r\n },\r\n\r\n calculateChosenLabel: function () {\r\n var customRange = true;\r\n var i = 0;\r\n for (var range in this.ranges) {\r\n if (this.timePicker) {\r\n var format = this.timePickerSeconds ? \"YYYY-MM-DD HH:mm:ss\" : \"YYYY-MM-DD HH:mm\";\r\n //ignore times when comparing dates if time picker seconds is not enabled\r\n if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');\r\n break;\r\n }\r\n } else {\r\n //ignore times when comparing dates if time picker is not enabled\r\n if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');\r\n break;\r\n }\r\n }\r\n i++;\r\n }\r\n if (customRange) {\r\n if (this.showCustomRangeLabel) {\r\n this.chosenLabel = this.container.find('.ranges li:last').addClass('active').attr('data-range-key');\r\n } else {\r\n this.chosenLabel = null;\r\n }\r\n this.showCalendars();\r\n }\r\n },\r\n\r\n clickApply: function(e) {\r\n this.hide();\r\n this.element.trigger('apply.daterangepicker', this);\r\n },\r\n\r\n clickCancel: function(e) {\r\n this.startDate = this.oldStartDate;\r\n this.endDate = this.oldEndDate;\r\n this.hide();\r\n this.element.trigger('cancel.daterangepicker', this);\r\n },\r\n\r\n monthOrYearChanged: function(e) {\r\n var isLeft = $(e.target).closest('.drp-calendar').hasClass('left'),\r\n leftOrRight = isLeft ? 'left' : 'right',\r\n cal = this.container.find('.drp-calendar.'+leftOrRight);\r\n\r\n // Month must be Number for new moment versions\r\n var month = parseInt(cal.find('.monthselect').val(), 10);\r\n var year = cal.find('.yearselect').val();\r\n\r\n if (!isLeft) {\r\n if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {\r\n month = this.startDate.month();\r\n year = this.startDate.year();\r\n }\r\n }\r\n\r\n if (this.minDate) {\r\n if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {\r\n month = this.minDate.month();\r\n year = this.minDate.year();\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {\r\n month = this.maxDate.month();\r\n year = this.maxDate.year();\r\n }\r\n }\r\n\r\n if (isLeft) {\r\n this.leftCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n timeChanged: function(e) {\r\n\r\n var cal = $(e.target).closest('.drp-calendar'),\r\n isLeft = cal.hasClass('left');\r\n\r\n var hour = parseInt(cal.find('.hourselect').val(), 10);\r\n var minute = parseInt(cal.find('.minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(cal.find('.minuteselect option:last').val(), 10);\r\n }\r\n var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = cal.find('.ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n\r\n if (isLeft) {\r\n var start = this.startDate.clone();\r\n start.hour(hour);\r\n start.minute(minute);\r\n start.second(second);\r\n this.setStartDate(start);\r\n if (this.singleDatePicker) {\r\n this.endDate = this.startDate.clone();\r\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\r\n this.setEndDate(start.clone());\r\n }\r\n } else if (this.endDate) {\r\n var end = this.endDate.clone();\r\n end.hour(hour);\r\n end.minute(minute);\r\n end.second(second);\r\n this.setEndDate(end);\r\n }\r\n\r\n //update the calendars so all clickable dates reflect the new time component\r\n this.updateCalendars();\r\n\r\n //update the form inputs above the calendars with the new time\r\n this.updateFormInputs();\r\n\r\n //re-render the time pickers because changing one selection can affect what's enabled in another\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n\r\n },\r\n\r\n elementChanged: function() {\r\n if (!this.element.is('input')) return;\r\n if (!this.element.val().length) return;\r\n\r\n var dateString = this.element.val().split(this.locale.separator),\r\n start = null,\r\n end = null;\r\n\r\n if (dateString.length === 2) {\r\n start = moment(dateString[0], this.locale.format);\r\n end = moment(dateString[1], this.locale.format);\r\n }\r\n\r\n if (this.singleDatePicker || start === null || end === null) {\r\n start = moment(this.element.val(), this.locale.format);\r\n end = start;\r\n }\r\n\r\n if (!start.isValid() || !end.isValid()) return;\r\n\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n this.updateView();\r\n },\r\n\r\n keydown: function(e) {\r\n //hide on tab or enter\r\n if ((e.keyCode === 9) || (e.keyCode === 13)) {\r\n this.hide();\r\n }\r\n\r\n //hide on esc and prevent propagation\r\n if (e.keyCode === 27) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.hide();\r\n }\r\n },\r\n\r\n updateElement: function() {\r\n if (this.element.is('input') && this.autoUpdateInput) {\r\n var newValue = this.startDate.format(this.locale.format);\r\n if (!this.singleDatePicker) {\r\n newValue += this.locale.separator + this.endDate.format(this.locale.format);\r\n }\r\n if (newValue !== this.element.val()) {\r\n this.element.val(newValue).trigger('change');\r\n }\r\n }\r\n },\r\n\r\n remove: function() {\r\n this.container.remove();\r\n this.element.off('.daterangepicker');\r\n this.element.removeData();\r\n }\r\n\r\n };\r\n\r\n $.fn.daterangepicker = function(options, callback) {\r\n var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options);\r\n this.each(function() {\r\n var el = $(this);\r\n if (el.data('daterangepicker'))\r\n el.data('daterangepicker').remove();\r\n el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback));\r\n });\r\n return this;\r\n };\r\n\r\n return DateRangePicker;\r\n\r\n}));\r\n"]}