{"version":3,"file":"scripts/chunks/plugins-ae5ac45a.bea3271ba9c8b1f42725.js","mappings":"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","sources":["webpack://disp0001/./src/plugins/semantic-calendar/calendar.js","webpack://disp0001/./src/plugins/semantic/accordion.js"],"sourcesContent":["/*\r\n * # Semantic UI 0.0.8 - Calendar\r\n * http://github.com/semantic-org/semantic-ui/\r\n *\r\n * https://github.com/mdehoog/Semantic-UI-Calendar\r\n *\r\n * Released under the MIT license\r\n * http://opensource.org/licenses/MIT\r\n */\r\n\r\n;\r\n(function ($, window, document, undefined) {\r\n\r\n  \"use strict\";\r\n\r\n  window = (typeof window != 'undefined' && window.Math == Math)\r\n    ? window\r\n    : (typeof self != 'undefined' && self.Math == Math)\r\n    ? self\r\n    : Function('return this')()\r\n  ;\r\n\r\n  $.fn.calendar = function (parameters) {\r\n\r\n    var\r\n      $allModules = $(this),\r\n\r\n      moduleSelector = $allModules.selector || '',\r\n\r\n      time = new Date().getTime(),\r\n      performance = [],\r\n\r\n      query = arguments[0],\r\n      methodInvoked = (typeof query == 'string'),\r\n      queryArguments = [].slice.call(arguments, 1),\r\n      returnedValue\r\n      ;\r\n\r\n    $allModules\r\n      .each(function () {\r\n        var\r\n          settings = ( $.isPlainObject(parameters) )\r\n            ? $.extend(true, {}, $.fn.calendar.settings, parameters)\r\n            : $.extend({}, $.fn.calendar.settings),\r\n\r\n          className = settings.className,\r\n          namespace = settings.namespace,\r\n          selector = settings.selector,\r\n          formatter = settings.formatter,\r\n          parser = settings.parser,\r\n          metadata = settings.metadata,\r\n          error = settings.error,\r\n\r\n          eventNamespace = '.' + namespace,\r\n          moduleNamespace = 'module-' + namespace,\r\n\r\n          $module = $(this),\r\n          $input = $module.find(selector.input),\r\n          $container = $module.find(selector.popup),\r\n          $activator = $module.find(selector.activator),\r\n\r\n          element = this,\r\n          instance = $module.data(moduleNamespace),\r\n\r\n          isTouch,\r\n          isTouchDown = false,\r\n          focusDateUsedForRange = false,\r\n          module\r\n          ;\r\n\r\n        module = {\r\n\r\n          initialize: function () {\r\n            module.debug('Initializing calendar for', element);\r\n\r\n            isTouch = module.get.isTouch();\r\n            module.setup.popup();\r\n            module.setup.inline();\r\n            module.setup.input();\r\n            module.setup.date();\r\n            module.create.calendar();\r\n\r\n            module.bind.events();\r\n            module.instantiate();\r\n          },\r\n\r\n          instantiate: function () {\r\n            module.verbose('Storing instance of calendar');\r\n            instance = module;\r\n            $module.data(moduleNamespace, instance);\r\n          },\r\n\r\n          destroy: function () {\r\n            module.verbose('Destroying previous calendar for', element);\r\n            $module.removeData(moduleNamespace);\r\n            module.unbind.events();\r\n          },\r\n\r\n          setup: {\r\n            popup: function () {\r\n              if (settings.inline) {\r\n                return;\r\n              }\r\n              if (!$activator.length) {\r\n                $activator = $module.children().first();\r\n                if (!$activator.length) {\r\n                  return;\r\n                }\r\n              }\r\n              if ($.fn.popup === undefined) {\r\n                module.error(error.popup);\r\n                return;\r\n              }\r\n              if (!$container.length) {\r\n                //prepend the popup element to the activator's parent so that it has less chance of messing with\r\n                //the styling (eg input action button needs to be the last child to have correct border radius)\r\n                $container = $('<div/>').addClass(className.popup).prependTo($activator.parent());\r\n              }\r\n              $container.addClass(className.calendar);\r\n              var onVisible = settings.onVisible;\r\n              var onHidden = settings.onHidden;\r\n              if (!$input.length) {\r\n                //no input, $container has to handle focus/blur\r\n                $container.attr('tabindex', '0');\r\n                onVisible = function () {\r\n                  module.focus();\r\n                  return settings.onVisible.apply($container, arguments);\r\n                };\r\n                onHidden = function () {\r\n                  module.blur();\r\n                  return settings.onHidden.apply($container, arguments);\r\n                };\r\n              }\r\n              var onShow = function () {\r\n                //reset the focus date onShow\r\n                module.set.focusDate(module.get.date());\r\n                module.set.mode(settings.startMode);\r\n                return settings.onShow.apply($container, arguments);\r\n              };\r\n              var on = settings.on || ($input.length ? 'focus' : 'click');\r\n              var options = $.extend({}, settings.popupOptions, {\r\n                popup: $container,\r\n                on: on,\r\n                hoverable: on === 'hover',\r\n                onShow: onShow,\r\n                onVisible: onVisible,\r\n                onHide: settings.onHide,\r\n                onHidden: onHidden\r\n              });\r\n              module.popup(options);\r\n            },\r\n            inline: function () {\r\n              if ($activator.length && !settings.inline) {\r\n                return;\r\n              }\r\n              $container = $('<div/>').addClass(className.calendar).appendTo($module);\r\n              if (!$input.length) {\r\n                $container.attr('tabindex', '0');\r\n              }\r\n            },\r\n            input: function () {\r\n              if (settings.touchReadonly && $input.length && isTouch) {\r\n                $input.prop('readonly', true);\r\n              }\r\n            },\r\n            date: function () {\r\n              if ($input.length) {\r\n                var val = $input.val();\r\n                var date = parser.date(val, settings);\r\n                module.set.date(date, settings.formatInput, false);\r\n              }\r\n            }\r\n          },\r\n\r\n          create: {\r\n            calendar: function () {\r\n              var i, r, c, p, row, cell, pageGrid;\r\n\r\n              var mode = module.get.mode();\r\n              var today = new Date();\r\n              var date = module.get.date();\r\n              var focusDate = module.get.focusDate();\r\n              var display = focusDate || date || settings.initialDate || today;\r\n              display = module.helper.dateInRange(display);\r\n\r\n              if (!focusDate) {\r\n                focusDate = display;\r\n                module.set.focusDate(focusDate, false, false);\r\n              }\r\n\r\n              var isYear = mode === 'year';\r\n              var isMonth = mode === 'month';\r\n              var isDay = mode === 'day';\r\n              var isHour = mode === 'hour';\r\n              var isMinute = mode === 'minute';\r\n              var isTimeOnly = settings.type === 'time';\r\n\r\n              var multiMonth = Math.max(settings.multiMonth, 1);\r\n              var monthOffset = !isDay ? 0 : module.get.monthOffset();\r\n\r\n              var minute = display.getMinutes();\r\n              var hour = display.getHours();\r\n              var day = display.getDate();\r\n              var startMonth = display.getMonth() + monthOffset;\r\n              var year = display.getFullYear();\r\n\r\n              var columns = isDay ? 7 : isHour ? 4 : 3;\r\n              var columnsString = columns === 7 ? 'seven' : columns === 4 ? 'four' : 'three';\r\n              var rows = isDay || isHour ? 6 : 4;\r\n              var pages = isDay ? multiMonth : 1;\r\n\r\n              var container = $container;\r\n              container.empty();\r\n              if (pages > 1) {\r\n                pageGrid = $('<div/>').addClass(className.grid).appendTo(container);\r\n              }\r\n\r\n              for (p = 0; p < pages; p++) {\r\n                if (pages > 1) {\r\n                  var pageColumn = $('<div/>').addClass(className.column).appendTo(pageGrid);\r\n                  container = pageColumn;\r\n                }\r\n\r\n                var month = startMonth + p;\r\n                var firstMonthDayColumn = (new Date(year, month, 1).getDay() - settings.firstDayOfWeek % 7 + 7) % 7;\r\n                if (!settings.constantHeight && isDay) {\r\n                  var requiredCells = new Date(year, month + 1, 0).getDate() + firstMonthDayColumn;\r\n                  rows = Math.ceil(requiredCells / 7);\r\n                }\r\n\r\n                var yearChange = isYear ? 10 : isMonth ? 1 : 0;\r\n                var monthChange = isDay ? 1 : 0;\r\n                var dayChange = isHour || isMinute ? 1 : 0;\r\n                var prevNextDay = isHour || isMinute ? day : 1;\r\n                var prevDate = new Date(year - yearChange, month - monthChange, prevNextDay - dayChange, hour);\r\n                var nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour);\r\n\r\n                var prevLast = isYear ? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0) :\r\n                  isMonth ? new Date(year, 0, 0) : isDay ? new Date(year, month, 0) : new Date(year, month, day, -1);\r\n                var nextFirst = isYear ? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1) :\r\n                  isMonth ? new Date(year + 1, 0, 1) : isDay ? new Date(year, month + 1, 1) : new Date(year, month, day + 1);\r\n\r\n                var table = $('<table/>').addClass(className.table).addClass(columnsString + ' column').addClass(mode).appendTo(container);\r\n\r\n                //no header for time-only mode\r\n                if (!isTimeOnly) {\r\n                  var thead = $('<thead/>').appendTo(table);\r\n\r\n                  row = $('<tr/>').appendTo(thead);\r\n                  cell = $('<th/>').attr('colspan', '' + columns).appendTo(row);\r\n\r\n                  var headerDate = isYear || isMonth ? new Date(year, 0, 1) :\r\n                    isDay ? new Date(year, month, 1) : new Date(year, month, day, hour, minute);\r\n                  var headerText = $('<span/>').addClass(className.link).appendTo(cell);\r\n                  headerText.text(formatter.header(headerDate, mode, settings));\r\n                  var newMode = isMonth ? (settings.disableYear ? 'day' : 'year') :\r\n                    isDay ? (settings.disableMonth ? 'year' : 'month') : 'day';\r\n                  headerText.data(metadata.mode, newMode);\r\n\r\n                  if (p === 0) {\r\n                    var prev = $('<span/>').addClass(className.prev).appendTo(cell);\r\n                    prev.data(metadata.focusDate, prevDate);\r\n                    prev.toggleClass(className.disabledCell, !module.helper.isDateInRange(prevLast, mode));\r\n                    $('<i/>').addClass(className.prevIcon).appendTo(prev);\r\n                  }\r\n\r\n                  if (p === pages - 1) {\r\n                    var next = $('<span/>').addClass(className.next).appendTo(cell);\r\n                    next.data(metadata.focusDate, nextDate);\r\n                    next.toggleClass(className.disabledCell, !module.helper.isDateInRange(nextFirst, mode));\r\n                    $('<i/>').addClass(className.nextIcon).appendTo(next);\r\n                  }\r\n\r\n                  if (isDay) {\r\n                    row = $('<tr/>').appendTo(thead);\r\n                    for (i = 0; i < columns; i++) {\r\n                      cell = $('<th/>').appendTo(row);\r\n                      cell.text(formatter.dayColumnHeader((i + settings.firstDayOfWeek) % 7, settings));\r\n                    }\r\n                  }\r\n                }\r\n\r\n                var tbody = $('<tbody/>').appendTo(table);\r\n                i = isYear ? Math.ceil(year / 10) * 10 - 9 : isDay ? 1 - firstMonthDayColumn : 0;\r\n                for (r = 0; r < rows; r++) {\r\n                  row = $('<tr/>').appendTo(tbody);\r\n                  for (c = 0; c < columns; c++, i++) {\r\n                    var cellDate = isYear ? new Date(i, month, 1, hour, minute) :\r\n                      isMonth ? new Date(year, i, 1, hour, minute) : isDay ? new Date(year, month, i, hour, minute) :\r\n                        isHour ? new Date(year, month, day, i) : new Date(year, month, day, hour, i * 5);\r\n                    var cellText = isYear ? i :\r\n                      isMonth ? settings.text.monthsShort[i] : isDay ? cellDate.getDate() :\r\n                        formatter.time(cellDate, settings, true);\r\n                    cell = $('<td/>').addClass(className.cell).appendTo(row);\r\n                    cell.text(cellText);\r\n                    cell.data(metadata.date, cellDate);\r\n                    var adjacent = isDay && cellDate.getMonth() !== ((month + 12) % 12);\r\n                    var disabled = adjacent || !module.helper.isDateInRange(cellDate, mode) || settings.isDisabled(cellDate, mode);\r\n                    var active = module.helper.dateEqual(cellDate, date, mode);\r\n                    var isToday = module.helper.dateEqual(cellDate, today, mode);\r\n                    cell.toggleClass(className.adjacentCell, adjacent);\r\n                    cell.toggleClass(className.disabledCell, disabled);\r\n                    cell.toggleClass(className.activeCell, active && !adjacent);\r\n                    if (!isHour && !isMinute) {\r\n                      cell.toggleClass(className.todayCell, !adjacent && isToday);\r\n                    }\r\n\r\n                    // Allow for external modifications of each cell\r\n                    var cellOptions = {\r\n                      mode: mode,\r\n                      adjacent: adjacent,\r\n                      disabled: disabled,\r\n                      active: active,\r\n                      today: isToday\r\n                    };\r\n                    formatter.cell(cell, cellDate, cellOptions);\r\n\r\n                    if (module.helper.dateEqual(cellDate, focusDate, mode)) {\r\n                      //ensure that the focus date is exactly equal to the cell date\r\n                      //so that, if selected, the correct value is set\r\n                      module.set.focusDate(cellDate, false, false);\r\n                    }\r\n                  }\r\n                }\r\n\r\n                if (settings.today) {\r\n                  var todayRow = $('<tr/>').appendTo(tbody);\r\n                  var todayButton = $('<td/>').attr('colspan', '' + columns).addClass(className.today).appendTo(todayRow);\r\n                  todayButton.text(formatter.today(settings));\r\n                  todayButton.data(metadata.date, today);\r\n                }\r\n\r\n                module.update.focus(false, table);\r\n              }\r\n            }\r\n          },\r\n\r\n          update: {\r\n            focus: function (updateRange, container) {\r\n              container = container || $container;\r\n              var mode = module.get.mode();\r\n              var date = module.get.date();\r\n              var focusDate = module.get.focusDate();\r\n              var startDate = module.get.startDate();\r\n              var endDate = module.get.endDate();\r\n              var rangeDate = (updateRange ? focusDate : null) || date || (!isTouch ? focusDate : null);\r\n\r\n              container.find('td').each(function () {\r\n                var cell = $(this);\r\n                var cellDate = cell.data(metadata.date);\r\n                if (!cellDate) {\r\n                  return;\r\n                }\r\n                var disabled = cell.hasClass(className.disabledCell);\r\n                var active = cell.hasClass(className.activeCell);\r\n                var adjacent = cell.hasClass(className.adjacentCell);\r\n                var focused = module.helper.dateEqual(cellDate, focusDate, mode);\r\n                var inRange = !rangeDate ? false :\r\n                  ((!!startDate && module.helper.isDateInRange(cellDate, mode, startDate, rangeDate)) ||\r\n                  (!!endDate && module.helper.isDateInRange(cellDate, mode, rangeDate, endDate)));\r\n                cell.toggleClass(className.focusCell, focused && (!isTouch || isTouchDown) && !adjacent);\r\n                cell.toggleClass(className.rangeCell, inRange && !active && !disabled);\r\n              });\r\n            }\r\n          },\r\n\r\n          refresh: function () {\r\n            module.create.calendar();\r\n          },\r\n\r\n          bind: {\r\n            events: function () {\r\n              $container.on('mousedown' + eventNamespace, module.event.mousedown);\r\n              $container.on('touchstart' + eventNamespace, module.event.mousedown);\r\n              $container.on('mouseup' + eventNamespace, module.event.mouseup);\r\n              $container.on('touchend' + eventNamespace, module.event.mouseup);\r\n              $container.on('mouseover' + eventNamespace, module.event.mouseover);\r\n              if ($input.length) {\r\n                $input.on('input' + eventNamespace, module.event.inputChange);\r\n                $input.on('focus' + eventNamespace, module.event.inputFocus);\r\n                $input.on('blur' + eventNamespace, module.event.inputBlur);\r\n                $input.on('click' + eventNamespace, module.event.inputClick);\r\n                $input.on('keydown' + eventNamespace, module.event.keydown);\r\n              } else {\r\n                $container.on('keydown' + eventNamespace, module.event.keydown);\r\n              }\r\n            }\r\n          },\r\n\r\n          unbind: {\r\n            events: function () {\r\n              $container.off(eventNamespace);\r\n              if ($input.length) {\r\n                $input.off(eventNamespace);\r\n              }\r\n            }\r\n          },\r\n\r\n          event: {\r\n            mouseover: function (event) {\r\n              var target = $(event.target);\r\n              var date = target.data(metadata.date);\r\n              var mousedown = event.buttons === 1;\r\n              if (date) {\r\n                module.set.focusDate(date, false, true, mousedown);\r\n              }\r\n            },\r\n            mousedown: function (event) {\r\n              if ($input.length) {\r\n                //prevent the mousedown on the calendar causing the input to lose focus\r\n                event.preventDefault();\r\n              }\r\n              isTouchDown = event.type.indexOf('touch') >= 0;\r\n              var target = $(event.target);\r\n              var date = target.data(metadata.date);\r\n              if (date) {\r\n                module.set.focusDate(date, false, true, true);\r\n              }\r\n            },\r\n            mouseup: function (event) {\r\n              //ensure input has focus so that it receives keydown events for calendar navigation\r\n              module.focus();\r\n              event.preventDefault();\r\n              event.stopPropagation();\r\n              isTouchDown = false;\r\n              var target = $(event.target);\r\n              var parent = target.parent();\r\n              if (parent.data(metadata.date) || parent.data(metadata.focusDate) || parent.data(metadata.mode)) {\r\n                //clicked on a child element, switch to parent (used when clicking directly on prev/next <i> icon element)\r\n                target = parent;\r\n              }\r\n              var date = target.data(metadata.date);\r\n              var focusDate = target.data(metadata.focusDate);\r\n              var mode = target.data(metadata.mode);\r\n              if (date) {\r\n                var forceSet = target.hasClass(className.today);\r\n                module.selectDate(date, forceSet);\r\n              }\r\n              else if (focusDate) {\r\n                module.set.focusDate(focusDate);\r\n              }\r\n              else if (mode) {\r\n                module.set.mode(mode);\r\n              }\r\n            },\r\n            keydown: function (event) {\r\n              if (event.keyCode === 27 || event.keyCode === 9) {\r\n                //esc || tab\r\n                module.popup('hide');\r\n              }\r\n\r\n              if (module.popup('is visible')) {\r\n                if (event.keyCode === 37 || event.keyCode === 38 || event.keyCode === 39 || event.keyCode === 40) {\r\n                  //arrow keys\r\n                  var mode = module.get.mode();\r\n                  var bigIncrement = mode === 'day' ? 7 : mode === 'hour' ? 4 : 3;\r\n                  var increment = event.keyCode === 37 ? -1 : event.keyCode === 38 ? -bigIncrement : event.keyCode == 39 ? 1 : bigIncrement;\r\n                  increment *= mode === 'minute' ? 5 : 1;\r\n                  var focusDate = module.get.focusDate() || module.get.date() || new Date();\r\n                  var year = focusDate.getFullYear() + (mode === 'year' ? increment : 0);\r\n                  var month = focusDate.getMonth() + (mode === 'month' ? increment : 0);\r\n                  var day = focusDate.getDate() + (mode === 'day' ? increment : 0);\r\n                  var hour = focusDate.getHours() + (mode === 'hour' ? increment : 0);\r\n                  var minute = focusDate.getMinutes() + (mode === 'minute' ? increment : 0);\r\n                  var newFocusDate = new Date(year, month, day, hour, minute);\r\n                  if (settings.type === 'time') {\r\n                    newFocusDate = module.helper.mergeDateTime(focusDate, newFocusDate);\r\n                  }\r\n                  if (module.helper.isDateInRange(newFocusDate, mode)) {\r\n                    module.set.focusDate(newFocusDate);\r\n                  }\r\n                } else if (event.keyCode === 13) {\r\n                  //enter\r\n                  var mode = module.get.mode();\r\n                  var date = module.get.focusDate();\r\n                  if (date && !settings.isDisabled(date, mode)) {\r\n                    module.selectDate(date);\r\n                  }\r\n                  //disable form submission:\r\n                  event.preventDefault();\r\n                  event.stopPropagation();\r\n                }\r\n              }\r\n\r\n              if (event.keyCode === 38 || event.keyCode === 40) {\r\n                //arrow-up || arrow-down\r\n                event.preventDefault(); //don't scroll\r\n                module.popup('show');\r\n              }\r\n            },\r\n            inputChange: function () {\r\n              var val = $input.val();\r\n              var date = parser.date(val, settings);\r\n              module.set.date(date, false);\r\n            },\r\n            inputFocus: function () {\r\n              $container.addClass(className.active);\r\n            },\r\n            inputBlur: function () {\r\n              $container.removeClass(className.active);\r\n              if (settings.formatInput) {\r\n                var date = module.get.date();\r\n                var text = formatter.datetime(date, settings);\r\n                $input.val(text);\r\n              }\r\n            },\r\n            inputClick: function () {\r\n              module.popup('show');\r\n            }\r\n          },\r\n\r\n          get: {\r\n            date: function () {\r\n              return $module.data(metadata.date) || null;\r\n            },\r\n            focusDate: function () {\r\n              return $module.data(metadata.focusDate) || null;\r\n            },\r\n            startDate: function () {\r\n              var startModule = module.get.calendarModule(settings.startCalendar);\r\n              return (startModule ? startModule.get.date() : $module.data(metadata.startDate)) || null;\r\n            },\r\n            endDate: function () {\r\n              var endModule = module.get.calendarModule(settings.endCalendar);\r\n              return (endModule ? endModule.get.date() : $module.data(metadata.endDate)) || null;\r\n            },\r\n            monthOffset: function () {\r\n              return $module.data(metadata.monthOffset) || 0;\r\n            },\r\n            mode: function () {\r\n              //only returns valid modes for the current settings\r\n              var mode = $module.data(metadata.mode) || settings.startMode;\r\n              var validModes = module.get.validModes();\r\n              if ($.inArray(mode, validModes) >= 0) {\r\n                return mode;\r\n              }\r\n              return settings.type === 'time' ? 'hour' :\r\n                settings.type === 'month' ? 'month' :\r\n                  settings.type === 'year' ? 'year' : 'day';\r\n            },\r\n            validModes: function () {\r\n              var validModes = [];\r\n              if (settings.type !== 'time') {\r\n                if (!settings.disableYear || settings.type === 'year') {\r\n                  validModes.push('year');\r\n                }\r\n                if (!(settings.disableMonth || settings.type === 'year') || settings.type === 'month') {\r\n                  validModes.push('month');\r\n                }\r\n                if (settings.type.indexOf('date') >= 0) {\r\n                  validModes.push('day');\r\n                }\r\n              }\r\n              if (settings.type.indexOf('time') >= 0) {\r\n                validModes.push('hour');\r\n                if (!settings.disableMinute) {\r\n                  validModes.push('minute');\r\n                }\r\n              }\r\n              return validModes;\r\n            },\r\n            isTouch: function () {\r\n              try {\r\n                document.createEvent('TouchEvent');\r\n                return true;\r\n              }\r\n              catch (e) {\r\n                return false;\r\n              }\r\n            },\r\n            calendarModule: function (selector) {\r\n              if (!selector) {\r\n                return null;\r\n              }\r\n              if (!(selector instanceof $)) {\r\n                selector = $module.parent().children(selector).first();\r\n              }\r\n              //assume range related calendars are using the same namespace\r\n              return selector.data(moduleNamespace);\r\n            }\r\n          },\r\n\r\n          set: {\r\n            date: function (date, updateInput, fireChange) {\r\n              updateInput = updateInput !== false;\r\n              fireChange = fireChange !== false;\r\n              date = module.helper.sanitiseDate(date);\r\n              date = module.helper.dateInRange(date);\r\n\r\n              var mode = module.get.mode();\r\n              var text = formatter.datetime(date, settings);\r\n              if (fireChange && settings.onChange.call(element, date, text, mode) === false) {\r\n                return false;\r\n              }\r\n\r\n              module.set.focusDate(date);\r\n\r\n              if (settings.isDisabled(date, mode)) {\r\n                return false;\r\n              }\r\n\r\n              var endDate = module.get.endDate();\r\n              if (!!endDate && !!date && date > endDate) {\r\n                //selected date is greater than end date in range, so clear end date\r\n                module.set.endDate(undefined);\r\n              }\r\n              module.set.dataKeyValue(metadata.date, date);\r\n\r\n              if (updateInput && $input.length) {\r\n                $input.val(text);\r\n              }\r\n            },\r\n            startDate: function (date, refreshCalendar) {\r\n              date = module.helper.sanitiseDate(date);\r\n              var startModule = module.get.calendarModule(settings.startCalendar);\r\n              if (startModule) {\r\n                startModule.set.date(date);\r\n              }\r\n              module.set.dataKeyValue(metadata.startDate, date, refreshCalendar);\r\n            },\r\n            endDate: function (date, refreshCalendar) {\r\n              date = module.helper.sanitiseDate(date);\r\n              var endModule = module.get.calendarModule(settings.endCalendar);\r\n              if (endModule) {\r\n                endModule.set.date(date);\r\n              }\r\n              module.set.dataKeyValue(metadata.endDate, date, refreshCalendar);\r\n            },\r\n            focusDate: function (date, refreshCalendar, updateFocus, updateRange) {\r\n              date = module.helper.sanitiseDate(date);\r\n              date = module.helper.dateInRange(date);\r\n              var isDay = module.get.mode() === 'day';\r\n              var oldFocusDate = module.get.focusDate();\r\n              if (isDay && date && oldFocusDate) {\r\n                var yearDelta = date.getFullYear() - oldFocusDate.getFullYear();\r\n                var monthDelta = yearDelta * 12 + date.getMonth() - oldFocusDate.getMonth();\r\n                if (monthDelta) {\r\n                  var monthOffset = module.get.monthOffset() - monthDelta;\r\n                  module.set.monthOffset(monthOffset, false);\r\n                }\r\n              }\r\n              var changed = module.set.dataKeyValue(metadata.focusDate, date, refreshCalendar);\r\n              updateFocus = (updateFocus !== false && changed && refreshCalendar === false) || focusDateUsedForRange != updateRange;\r\n              focusDateUsedForRange = updateRange;\r\n              if (updateFocus) {\r\n                module.update.focus(updateRange);\r\n              }\r\n            },\r\n            monthOffset: function (monthOffset, refreshCalendar) {\r\n              var multiMonth = Math.max(settings.multiMonth, 1);\r\n              monthOffset = Math.max(1 - multiMonth, Math.min(0, monthOffset));\r\n              module.set.dataKeyValue(metadata.monthOffset, monthOffset, refreshCalendar);\r\n            },\r\n            mode: function (mode, refreshCalendar) {\r\n              module.set.dataKeyValue(metadata.mode, mode, refreshCalendar);\r\n            },\r\n            dataKeyValue: function (key, value, refreshCalendar) {\r\n              var oldValue = $module.data(key);\r\n              var equal = oldValue === value || (oldValue <= value && oldValue >= value); //equality test for dates and string objects\r\n              if (value) {\r\n                $module.data(key, value);\r\n              } else {\r\n                $module.removeData(key);\r\n              }\r\n              refreshCalendar = refreshCalendar !== false && !equal;\r\n              if (refreshCalendar) {\r\n                module.create.calendar();\r\n              }\r\n              return !equal;\r\n            }\r\n          },\r\n\r\n          selectDate: function (date, forceSet) {\r\n            var mode = module.get.mode();\r\n            var complete = forceSet || mode === 'minute' ||\r\n              (settings.disableMinute && mode === 'hour') ||\r\n              (settings.type === 'date' && mode === 'day') ||\r\n              (settings.type === 'month' && mode === 'month') ||\r\n              (settings.type === 'year' && mode === 'year');\r\n            if (complete) {\r\n              var canceled = module.set.date(date) === false;\r\n              if (!canceled && settings.closable) {\r\n                module.popup('hide');\r\n                //if this is a range calendar, show the end date calendar popup and focus the input\r\n                var endModule = module.get.calendarModule(settings.endCalendar);\r\n                if (endModule) {\r\n                  endModule.popup('show');\r\n                  endModule.focus();\r\n                }\r\n              }\r\n            } else {\r\n              var newMode = mode === 'year' ? (!settings.disableMonth ? 'month' : 'day') :\r\n                mode === 'month' ? 'day' : mode === 'day' ? 'hour' : 'minute';\r\n              module.set.mode(newMode);\r\n              if (mode === 'hour' || (mode === 'day' && module.get.date())) {\r\n                //the user has chosen enough to consider a valid date/time has been chosen\r\n                module.set.date(date);\r\n              } else {\r\n                module.set.focusDate(date);\r\n              }\r\n            }\r\n          },\r\n\r\n          changeDate: function (date) {\r\n            module.set.date(date);\r\n          },\r\n\r\n          clear: function () {\r\n            module.set.date(undefined);\r\n          },\r\n\r\n          popup: function () {\r\n            return $activator.popup.apply($activator, arguments);\r\n          },\r\n\r\n          focus: function () {\r\n            if ($input.length) {\r\n              $input.focus();\r\n            } else {\r\n              $container.focus();\r\n            }\r\n          },\r\n          blur: function () {\r\n            if ($input.length) {\r\n              $input.blur();\r\n            } else {\r\n              $container.blur();\r\n            }\r\n          },\r\n\r\n          helper: {\r\n            sanitiseDate: function (date) {\r\n              if (!date) {\r\n                return undefined;\r\n              }\r\n              if (!(date instanceof Date)) {\r\n                date = parser.date('' + date, settings);\r\n              }\r\n              if (isNaN(date.getTime())) {\r\n                return undefined;\r\n              }\r\n              return date;\r\n            },\r\n            dateDiff: function (date1, date2, mode) {\r\n              mode = mode || 'day';\r\n              var isTimeOnly = settings.type === 'time';\r\n              var isYear = mode === 'year';\r\n              var isYearOrMonth = isYear || mode === 'month';\r\n              var isMinute = mode === 'minute';\r\n              var isHourOrMinute = isMinute || mode === 'hour';\r\n              //only care about a minute accuracy of 5\r\n              date1 = new Date(\r\n                isTimeOnly ? 2000 : date1.getFullYear(),\r\n                isTimeOnly ? 0 : isYear ? 0 : date1.getMonth(),\r\n                isTimeOnly ? 1 : isYearOrMonth ? 1 : date1.getDate(),\r\n                !isHourOrMinute ? 0 : date1.getHours(),\r\n                !isMinute ? 0 : 5 * Math.floor(date1.getMinutes() / 5));\r\n              date2 = new Date(\r\n                isTimeOnly ? 2000 : date2.getFullYear(),\r\n                isTimeOnly ? 0 : isYear ? 0 : date2.getMonth(),\r\n                isTimeOnly ? 1 : isYearOrMonth ? 1 : date2.getDate(),\r\n                !isHourOrMinute ? 0 : date2.getHours(),\r\n                !isMinute ? 0 : 5 * Math.floor(date2.getMinutes() / 5));\r\n              return date2.getTime() - date1.getTime();\r\n            },\r\n            dateEqual: function (date1, date2, mode) {\r\n              return !!date1 && !!date2 && module.helper.dateDiff(date1, date2, mode) === 0;\r\n            },\r\n            isDateInRange: function (date, mode, minDate, maxDate) {\r\n              if (!minDate && !maxDate) {\r\n                var startDate = module.get.startDate();\r\n                minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;\r\n                maxDate = settings.maxDate;\r\n              }\r\n              minDate = minDate && new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), minDate.getHours(), 5 * Math.ceil(minDate.getMinutes() / 5));\r\n              return !(!date ||\r\n              (minDate && module.helper.dateDiff(date, minDate, mode) > 0) ||\r\n              (maxDate && module.helper.dateDiff(maxDate, date, mode) > 0));\r\n            },\r\n            dateInRange: function (date, minDate, maxDate) {\r\n              if (!minDate && !maxDate) {\r\n                var startDate = module.get.startDate();\r\n                minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;\r\n                maxDate = settings.maxDate;\r\n              }\r\n              minDate = minDate && new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), minDate.getHours(), 5 * Math.ceil(minDate.getMinutes() / 5));\r\n              var isTimeOnly = settings.type === 'time';\r\n              return !date ? date :\r\n                (minDate && module.helper.dateDiff(date, minDate, 'minute') > 0) ?\r\n                  (isTimeOnly ? module.helper.mergeDateTime(date, minDate) : minDate) :\r\n                  (maxDate && module.helper.dateDiff(maxDate, date, 'minute') > 0) ?\r\n                    (isTimeOnly ? module.helper.mergeDateTime(date, maxDate) : maxDate) :\r\n                    date;\r\n            },\r\n            mergeDateTime: function (date, time) {\r\n              return (!date || !time) ? time :\r\n                new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes());\r\n            }\r\n          },\r\n\r\n          setting: function (name, value) {\r\n            module.debug('Changing setting', name, value);\r\n            if ($.isPlainObject(name)) {\r\n              $.extend(true, settings, name);\r\n            }\r\n            else if (value !== undefined) {\r\n              if ($.isPlainObject(settings[name])) {\r\n                $.extend(true, settings[name], value);\r\n              }\r\n              else {\r\n                settings[name] = value;\r\n              }\r\n            }\r\n            else {\r\n              return settings[name];\r\n            }\r\n          },\r\n          internal: function (name, value) {\r\n            module.debug('Changing internal', name, value);\r\n            if (value !== undefined) {\r\n              if ($.isPlainObject(name)) {\r\n                $.extend(true, module, name);\r\n              }\r\n              else {\r\n                module[name] = value;\r\n              }\r\n            }\r\n            else {\r\n              return module[name];\r\n            }\r\n          },\r\n          debug: function () {\r\n            if (!settings.silent && settings.debug) {\r\n              if (settings.performance) {\r\n                module.performance.log(arguments);\r\n              }\r\n              else {\r\n                module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\r\n                module.debug.apply(console, arguments);\r\n              }\r\n            }\r\n          },\r\n          verbose: function () {\r\n            if (!settings.silent && settings.verbose && settings.debug) {\r\n              if (settings.performance) {\r\n                module.performance.log(arguments);\r\n              }\r\n              else {\r\n                module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\r\n                module.verbose.apply(console, arguments);\r\n              }\r\n            }\r\n          },\r\n          error: function () {\r\n            if (!settings.silent) {\r\n              module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\r\n              module.error.apply(console, arguments);\r\n            }\r\n          },\r\n          performance: {\r\n            log: function (message) {\r\n              var\r\n                currentTime,\r\n                executionTime,\r\n                previousTime\r\n                ;\r\n              if (settings.performance) {\r\n                currentTime = new Date().getTime();\r\n                previousTime = time || currentTime;\r\n                executionTime = currentTime - previousTime;\r\n                time = currentTime;\r\n                performance.push({\r\n                  'Name': message[0],\r\n                  'Arguments': [].slice.call(message, 1) || '',\r\n                  'Element': element,\r\n                  'Execution Time': executionTime\r\n                });\r\n              }\r\n              clearTimeout(module.performance.timer);\r\n              module.performance.timer = setTimeout(module.performance.display, 500);\r\n            },\r\n            display: function () {\r\n              var\r\n                title = settings.name + ':',\r\n                totalTime = 0\r\n                ;\r\n              time = false;\r\n              clearTimeout(module.performance.timer);\r\n              $.each(performance, function (index, data) {\r\n                totalTime += data['Execution Time'];\r\n              });\r\n              title += ' ' + totalTime + 'ms';\r\n              if (moduleSelector) {\r\n                title += ' \\'' + moduleSelector + '\\'';\r\n              }\r\n              if ((console.group !== undefined || console.table !== undefined) && performance.length > 0) {\r\n                console.groupCollapsed(title);\r\n                if (console.table) {\r\n                  console.table(performance);\r\n                }\r\n                else {\r\n                  $.each(performance, function (index, data) {\r\n                    console.log(data['Name'] + ': ' + data['Execution Time'] + 'ms');\r\n                  });\r\n                }\r\n                console.groupEnd();\r\n              }\r\n              performance = [];\r\n            }\r\n          },\r\n          invoke: function (query, passedArguments, context) {\r\n            var\r\n              object = instance,\r\n              maxDepth,\r\n              found,\r\n              response\r\n              ;\r\n            passedArguments = passedArguments || queryArguments;\r\n            context = element || context;\r\n            if (typeof query == 'string' && object !== undefined) {\r\n              query = query.split(/[\\. ]/);\r\n              maxDepth = query.length - 1;\r\n              $.each(query, function (depth, value) {\r\n                var camelCaseValue = (depth != maxDepth)\r\n                    ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\r\n                    : query\r\n                  ;\r\n                if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {\r\n                  object = object[camelCaseValue];\r\n                }\r\n                else if (object[camelCaseValue] !== undefined) {\r\n                  found = object[camelCaseValue];\r\n                  return false;\r\n                }\r\n                else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {\r\n                  object = object[value];\r\n                }\r\n                else if (object[value] !== undefined) {\r\n                  found = object[value];\r\n                  return false;\r\n                }\r\n                else {\r\n                  module.error(error.method, query);\r\n                  return false;\r\n                }\r\n              });\r\n            }\r\n            if ($.isFunction(found)) {\r\n              response = found.apply(context, passedArguments);\r\n            }\r\n            else if (found !== undefined) {\r\n              response = found;\r\n            }\r\n            if ($.isArray(returnedValue)) {\r\n              returnedValue.push(response);\r\n            }\r\n            else if (returnedValue !== undefined) {\r\n              returnedValue = [returnedValue, response];\r\n            }\r\n            else if (response !== undefined) {\r\n              returnedValue = response;\r\n            }\r\n            return found;\r\n          }\r\n        };\r\n\r\n        if (methodInvoked) {\r\n          if (instance === undefined) {\r\n            module.initialize();\r\n          }\r\n          module.invoke(query);\r\n        }\r\n        else {\r\n          if (instance !== undefined) {\r\n            instance.invoke('destroy');\r\n          }\r\n          module.initialize();\r\n        }\r\n      })\r\n    ;\r\n    return (returnedValue !== undefined)\r\n      ? returnedValue\r\n      : this\r\n      ;\r\n  };\r\n\r\n  $.fn.calendar.settings = {\r\n\r\n    name: 'Calendar',\r\n    namespace: 'calendar',\r\n\r\n    silent: false,\r\n    debug: false,\r\n    verbose: false,\r\n    performance: false,\r\n\r\n    type: 'datetime',     // picker type, can be 'datetime', 'date', 'time', 'month', or 'year'\r\n    firstDayOfWeek: 0,    // day for first day column (0 = Sunday)\r\n    constantHeight: true, // add rows to shorter months to keep day calendar height consistent (6 rows)\r\n    today: false,         // show a 'today/now' button at the bottom of the calendar\r\n    closable: true,       // close the popup after selecting a date/time\r\n    monthFirst: true,     // month before day when parsing/converting date from/to text\r\n    touchReadonly: true,  // set input to readonly on touch devices\r\n    inline: false,        // create the calendar inline instead of inside a popup\r\n    on: null,             // when to show the popup (defaults to 'focus' for input, 'click' for others)\r\n    initialDate: null,    // date to display initially when no date is selected (null = now)\r\n    startMode: false,     // display mode to start in, can be 'year', 'month', 'day', 'hour', 'minute' (false = 'day')\r\n    minDate: null,        // minimum date/time that can be selected, dates/times before are disabled\r\n    maxDate: null,        // maximum date/time that can be selected, dates/times after are disabled\r\n    ampm: true,           // show am/pm in time mode\r\n    disableYear: false,   // disable year selection mode\r\n    disableMonth: false,  // disable month selection mode\r\n    disableMinute: false, // disable minute selection mode\r\n    formatInput: true,    // format the input text upon input blur and module creation\r\n    startCalendar: null,  // jquery object or selector for another calendar that represents the start date of a date range\r\n    endCalendar: null,    // jquery object or selector for another calendar that represents the end date of a date range\r\n    multiMonth: 1,        // show multiple months when in 'day' mode\r\n\r\n    // popup options ('popup', 'on', 'hoverable', and show/hide callbacks are overridden)\r\n    popupOptions: {\r\n      position: 'bottom left',\r\n      lastResort: 'bottom left',\r\n      prefer: 'opposite',\r\n      hideOnScroll: false\r\n    },\r\n\r\n    text: {\r\n      days: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\r\n      months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n      monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n      today: 'Today',\r\n      now: 'Now',\r\n      am: 'AM',\r\n      pm: 'PM'\r\n    },\r\n\r\n    formatter: {\r\n      header: function (date, mode, settings) {\r\n        return mode === 'year' ? settings.formatter.yearHeader(date, settings) :\r\n          mode === 'month' ? settings.formatter.monthHeader(date, settings) :\r\n            mode === 'day' ? settings.formatter.dayHeader(date, settings) :\r\n              mode === 'hour' ? settings.formatter.hourHeader(date, settings) :\r\n                settings.formatter.minuteHeader(date, settings);\r\n      },\r\n      yearHeader: function (date, settings) {\r\n        var decadeYear = Math.ceil(date.getFullYear() / 10) * 10;\r\n        return (decadeYear - 9) + ' - ' + (decadeYear + 2);\r\n      },\r\n      monthHeader: function (date, settings) {\r\n        return date.getFullYear();\r\n      },\r\n      dayHeader: function (date, settings) {\r\n        var month = settings.text.months[date.getMonth()];\r\n        var year = date.getFullYear();\r\n        return month + ' ' + year;\r\n      },\r\n      hourHeader: function (date, settings) {\r\n        return settings.formatter.date(date, settings);\r\n      },\r\n      minuteHeader: function (date, settings) {\r\n        return settings.formatter.date(date, settings);\r\n      },\r\n      dayColumnHeader: function (day, settings) {\r\n        return settings.text.days[day];\r\n      },\r\n      datetime: function (date, settings) {\r\n        if (!date) {\r\n          return '';\r\n        }\r\n        var day = settings.type === 'time' ? '' : settings.formatter.date(date, settings);\r\n        var time = settings.type.indexOf('time') < 0 ? '' : settings.formatter.time(date, settings, false);\r\n        var separator = settings.type === 'datetime' ? ' ' : '';\r\n        return day + separator + time;\r\n      },\r\n      date: function (date, settings) {\r\n        if (!date) {\r\n          return '';\r\n        }\r\n        var day = date.getDate();\r\n        var month = settings.text.months[date.getMonth()];\r\n        var year = date.getFullYear();\r\n        return settings.type === 'year' ? year :\r\n          settings.type === 'month' ? month + ' ' + year :\r\n          (settings.monthFirst ? month + ' ' + day : day + ' ' + month) + ', ' + year;\r\n      },\r\n      time: function (date, settings, forCalendar) {\r\n        if (!date) {\r\n          return '';\r\n        }\r\n        var hour = date.getHours();\r\n        var minute = date.getMinutes();\r\n        var ampm = '';\r\n        if (settings.ampm) {\r\n          ampm = ' ' + (hour < 12 ? settings.text.am : settings.text.pm);\r\n          hour = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;\r\n        }\r\n        return hour + ':' + (minute < 10 ? '0' : '') + minute + ampm;\r\n      },\r\n      today: function (settings) {\r\n        return settings.type === 'date' ? settings.text.today : settings.text.now;\r\n      },\r\n      cell: function (cell, date, cellOptions) {\r\n      }\r\n    },\r\n\r\n    parser: {\r\n      date: function (text, settings) {\r\n        if (!text) {\r\n          return null;\r\n        }\r\n        text = ('' + text).trim().toLowerCase();\r\n        if (text.length === 0) {\r\n          return null;\r\n        }\r\n\r\n        var i, j, k;\r\n        var minute = -1, hour = -1, day = -1, month = -1, year = -1;\r\n        var isAm = undefined;\r\n\r\n        var isTimeOnly = settings.type === 'time';\r\n        var isDateOnly = settings.type.indexOf('time') < 0;\r\n\r\n        var words = text.split(settings.regExp.dateWords);\r\n        var numbers = text.split(settings.regExp.dateNumbers);\r\n\r\n        if (!isDateOnly) {\r\n          //am/pm\r\n          isAm = $.inArray(settings.text.am.toLowerCase(), words) >= 0 ? true :\r\n            $.inArray(settings.text.pm.toLowerCase(), words) >= 0 ? false : undefined;\r\n\r\n          //time with ':'\r\n          for (i = 0; i < numbers.length; i++) {\r\n            var number = numbers[i];\r\n            if (number.indexOf(':') >= 0) {\r\n              if (hour < 0 || minute < 0) {\r\n                var parts = number.split(':');\r\n                for (k = 0; k < Math.min(2, parts.length); k++) {\r\n                  j = parseInt(parts[k]);\r\n                  if (isNaN(j)) {\r\n                    j = 0;\r\n                  }\r\n                  if (k === 0) {\r\n                    hour = j % 24;\r\n                  } else {\r\n                    minute = j % 60;\r\n                  }\r\n                }\r\n              }\r\n              numbers.splice(i, 1);\r\n            }\r\n          }\r\n        }\r\n\r\n        if (!isTimeOnly) {\r\n          //textual month\r\n          for (i = 0; i < words.length; i++) {\r\n            var word = words[i];\r\n            if (word.length <= 0) {\r\n              continue;\r\n            }\r\n            word = word.substring(0, Math.min(word.length, 3));\r\n            for (j = 0; j < settings.text.months.length; j++) {\r\n              var monthString = settings.text.months[j];\r\n              monthString = monthString.substring(0, Math.min(word.length, Math.min(monthString.length, 3))).toLowerCase();\r\n              if (monthString === word) {\r\n                month = j + 1;\r\n                break;\r\n              }\r\n            }\r\n            if (month >= 0) {\r\n              break;\r\n            }\r\n          }\r\n\r\n          //year > 59\r\n          for (i = 0; i < numbers.length; i++) {\r\n            j = parseInt(numbers[i]);\r\n            if (isNaN(j)) {\r\n              continue;\r\n            }\r\n            if (j > 59) {\r\n              year = j;\r\n              numbers.splice(i, 1);\r\n              break;\r\n            }\r\n          }\r\n\r\n          //numeric month\r\n          if (month < 0) {\r\n            for (i = 0; i < numbers.length; i++) {\r\n              k = i > 1 || settings.monthFirst ? i : i === 1 ? 0 : 1;\r\n              j = parseInt(numbers[k]);\r\n              if (isNaN(j)) {\r\n                continue;\r\n              }\r\n              if (1 <= j && j <= 12) {\r\n                month = j;\r\n                numbers.splice(k, 1);\r\n                break;\r\n              }\r\n            }\r\n          }\r\n\r\n          //day\r\n          for (i = 0; i < numbers.length; i++) {\r\n            j = parseInt(numbers[i]);\r\n            if (isNaN(j)) {\r\n              continue;\r\n            }\r\n            if (1 <= j && j <= 31) {\r\n              day = j;\r\n              numbers.splice(i, 1);\r\n              break;\r\n            }\r\n          }\r\n\r\n          //year <= 59\r\n          if (year < 0) {\r\n            for (i = numbers.length - 1; i >= 0; i--) {\r\n              j = parseInt(numbers[i]);\r\n              if (isNaN(j)) {\r\n                continue;\r\n              }\r\n              if (j < 99) {\r\n                j += 2000;\r\n              }\r\n              year = j;\r\n              numbers.splice(i, 1);\r\n              break;\r\n            }\r\n          }\r\n        }\r\n\r\n        if (!isDateOnly) {\r\n          //hour\r\n          if (hour < 0) {\r\n            for (i = 0; i < numbers.length; i++) {\r\n              j = parseInt(numbers[i]);\r\n              if (isNaN(j)) {\r\n                continue;\r\n              }\r\n              if (0 <= j && j <= 23) {\r\n                hour = j;\r\n                numbers.splice(i, 1);\r\n                break;\r\n              }\r\n            }\r\n          }\r\n\r\n          //minute\r\n          if (minute < 0) {\r\n            for (i = 0; i < numbers.length; i++) {\r\n              j = parseInt(numbers[i]);\r\n              if (isNaN(j)) {\r\n                continue;\r\n              }\r\n              if (0 <= j && j <= 59) {\r\n                minute = j;\r\n                numbers.splice(i, 1);\r\n                break;\r\n              }\r\n            }\r\n          }\r\n        }\r\n\r\n        if (minute < 0 && hour < 0 && day < 0 && month < 0 && year < 0) {\r\n          return null;\r\n        }\r\n\r\n        if (minute < 0) {\r\n          minute = 0;\r\n        }\r\n        if (hour < 0) {\r\n          hour = 0;\r\n        }\r\n        if (day < 0) {\r\n          day = 1;\r\n        }\r\n        if (month < 0) {\r\n          month = 1;\r\n        }\r\n        if (year < 0) {\r\n          year = new Date().getFullYear();\r\n        }\r\n\r\n        if (isAm !== undefined) {\r\n          if (isAm) {\r\n            if (hour === 12) {\r\n              hour = 0;\r\n            }\r\n          } else if (hour < 12) {\r\n            hour += 12;\r\n          }\r\n        }\r\n\r\n        var date = new Date(year, month - 1, day, hour, minute);\r\n        if (date.getMonth() !== month - 1 || date.getFullYear() !== year) {\r\n          //month or year don't match up, switch to last day of the month\r\n          date = new Date(year, month, 0, hour, minute);\r\n        }\r\n        return isNaN(date.getTime()) ? null : date;\r\n      }\r\n    },\r\n\r\n    // callback when date changes, return false to cancel the change\r\n    onChange: function (date, text, mode) {\r\n      return true;\r\n    },\r\n\r\n    // callback before show animation, return false to prevent show\r\n    onShow: function () {\r\n    },\r\n\r\n    // callback after show animation\r\n    onVisible: function () {\r\n    },\r\n\r\n    // callback before hide animation, return false to prevent hide\r\n    onHide: function () {\r\n    },\r\n\r\n    // callback after hide animation\r\n    onHidden: function () {\r\n    },\r\n\r\n    // is the given date disabled?\r\n    isDisabled: function (date, mode) {\r\n      return false;\r\n    },\r\n\r\n    selector: {\r\n      popup: '.ui.popup',\r\n      input: 'input',\r\n      activator: 'input'\r\n    },\r\n\r\n    regExp: {\r\n      dateWords: /[^A-Za-z\\u00C0-\\u024F]+/g,\r\n      dateNumbers: /[^\\d:]+/g\r\n    },\r\n\r\n    error: {\r\n      popup: 'UI Popup, a required component is not included in this page',\r\n      method: 'The method you called is not defined.'\r\n    },\r\n\r\n    className: {\r\n      calendar: 'calendar',\r\n      active: 'active',\r\n      popup: 'ui popup',\r\n      grid: 'ui equal width grid',\r\n      column: 'column',\r\n      table: 'ui celled center aligned unstackable table',\r\n      prev: 'prev link',\r\n      next: 'next link',\r\n      prevIcon: 'chevron left icon',\r\n      nextIcon: 'chevron right icon',\r\n      link: 'link',\r\n      cell: 'link',\r\n      disabledCell: 'disabled',\r\n      adjacentCell: 'adjacent',\r\n      activeCell: 'active',\r\n      rangeCell: 'range',\r\n      focusCell: 'focus',\r\n      todayCell: 'today',\r\n      today: 'today link'\r\n    },\r\n\r\n    metadata: {\r\n      date: 'date',\r\n      focusDate: 'focusDate',\r\n      startDate: 'startDate',\r\n      endDate: 'endDate',\r\n      mode: 'mode',\r\n      monthOffset: 'monthOffset'\r\n    }\r\n  };\r\n\r\n})(jQuery, window, document);\r\n","/*!\r\n * # Semantic UI 2.4.2 - Accordion\r\n * http://github.com/semantic-org/semantic-ui/\r\n *\r\n *\r\n * Released under the MIT license\r\n * http://opensource.org/licenses/MIT\r\n *\r\n */\r\n\r\n;(function ($, window, document, undefined) {\r\n\r\n'use strict';\r\n\r\nwindow = (typeof window != 'undefined' && window.Math == Math)\r\n  ? window\r\n  : (typeof self != 'undefined' && self.Math == Math)\r\n    ? self\r\n    : Function('return this')()\r\n;\r\n\r\n$.fn.accordion = function(parameters) {\r\n  var\r\n    $allModules     = $(this),\r\n\r\n    time            = new Date().getTime(),\r\n    performance     = [],\r\n\r\n    query           = arguments[0],\r\n    methodInvoked   = (typeof query == 'string'),\r\n    queryArguments  = [].slice.call(arguments, 1),\r\n\r\n    requestAnimationFrame = window.requestAnimationFrame\r\n      || window.mozRequestAnimationFrame\r\n      || window.webkitRequestAnimationFrame\r\n      || window.msRequestAnimationFrame\r\n      || function(callback) { setTimeout(callback, 0); },\r\n\r\n    returnedValue\r\n  ;\r\n  $allModules\r\n    .each(function() {\r\n      var\r\n        settings        = ( $.isPlainObject(parameters) )\r\n          ? $.extend(true, {}, $.fn.accordion.settings, parameters)\r\n          : $.extend({}, $.fn.accordion.settings),\r\n\r\n        className       = settings.className,\r\n        namespace       = settings.namespace,\r\n        selector        = settings.selector,\r\n        error           = settings.error,\r\n\r\n        eventNamespace  = '.' + namespace,\r\n        moduleNamespace = 'module-' + namespace,\r\n        moduleSelector  = $allModules.selector || '',\r\n\r\n        $module  = $(this),\r\n        $title   = $module.find(selector.title),\r\n        $content = $module.find(selector.content),\r\n\r\n        element  = this,\r\n        instance = $module.data(moduleNamespace),\r\n        observer,\r\n        module\r\n      ;\r\n\r\n      module = {\r\n\r\n        initialize: function() {\r\n          module.debug('Initializing', $module);\r\n          module.bind.events();\r\n          if(settings.observeChanges) {\r\n            module.observeChanges();\r\n          }\r\n          module.instantiate();\r\n        },\r\n\r\n        instantiate: function() {\r\n          instance = module;\r\n          $module\r\n            .data(moduleNamespace, module)\r\n          ;\r\n        },\r\n\r\n        destroy: function() {\r\n          module.debug('Destroying previous instance', $module);\r\n          $module\r\n            .off(eventNamespace)\r\n            .removeData(moduleNamespace)\r\n          ;\r\n        },\r\n\r\n        refresh: function() {\r\n          $title   = $module.find(selector.title);\r\n          $content = $module.find(selector.content);\r\n        },\r\n\r\n        observeChanges: function() {\r\n          if('MutationObserver' in window) {\r\n            observer = new MutationObserver(function(mutations) {\r\n              module.debug('DOM tree modified, updating selector cache');\r\n              module.refresh();\r\n            });\r\n            observer.observe(element, {\r\n              childList : true,\r\n              subtree   : true\r\n            });\r\n            module.debug('Setting up mutation observer', observer);\r\n          }\r\n        },\r\n\r\n        bind: {\r\n          events: function() {\r\n            module.debug('Binding delegated events');\r\n            $module\r\n              .on(settings.on + eventNamespace, selector.trigger, module.event.click)\r\n            ;\r\n          }\r\n        },\r\n\r\n        event: {\r\n          click: function() {\r\n            module.toggle.call(this);\r\n          }\r\n        },\r\n\r\n        toggle: function(query) {\r\n          var\r\n            $activeTitle = (query !== undefined)\r\n              ? (typeof query === 'number')\r\n                ? $title.eq(query)\r\n                : $(query).closest(selector.title)\r\n              : $(this).closest(selector.title),\r\n            $activeContent = $activeTitle.next($content),\r\n            isAnimating = $activeContent.hasClass(className.animating),\r\n            isActive    = $activeContent.hasClass(className.active),\r\n            isOpen      = (isActive && !isAnimating),\r\n            isOpening   = (!isActive && isAnimating)\r\n          ;\r\n          module.debug('Toggling visibility of content', $activeTitle);\r\n          if(isOpen || isOpening) {\r\n            if(settings.collapsible) {\r\n              module.close.call($activeTitle);\r\n            }\r\n            else {\r\n              module.debug('Cannot close accordion content collapsing is disabled');\r\n            }\r\n          }\r\n          else {\r\n            module.open.call($activeTitle);\r\n          }\r\n        },\r\n\r\n        open: function(query) {\r\n          var\r\n            $activeTitle = (query !== undefined)\r\n              ? (typeof query === 'number')\r\n                ? $title.eq(query)\r\n                : $(query).closest(selector.title)\r\n              : $(this).closest(selector.title),\r\n            $activeContent = $activeTitle.next($content),\r\n            isAnimating = $activeContent.hasClass(className.animating),\r\n            isActive    = $activeContent.hasClass(className.active),\r\n            isOpen      = (isActive || isAnimating)\r\n          ;\r\n          if(isOpen) {\r\n            module.debug('Accordion already open, skipping', $activeContent);\r\n            return;\r\n          }\r\n          module.debug('Opening accordion content', $activeTitle);\r\n          settings.onOpening.call($activeContent);\r\n          settings.onChanging.call($activeContent);\r\n          if(settings.exclusive) {\r\n            module.closeOthers.call($activeTitle);\r\n          }\r\n          $activeTitle\r\n            .addClass(className.active)\r\n          ;\r\n          $activeContent\r\n            .stop(true, true)\r\n            .addClass(className.animating)\r\n          ;\r\n          if(settings.animateChildren) {\r\n            if($.fn.transition !== undefined && $module.transition('is supported')) {\r\n              $activeContent\r\n                .children()\r\n                  .transition({\r\n                    animation   : 'fade in',\r\n                    queue       : false,\r\n                    useFailSafe : true,\r\n                    debug       : settings.debug,\r\n                    verbose     : settings.verbose,\r\n                    duration    : settings.duration\r\n                  })\r\n              ;\r\n            }\r\n            else {\r\n              $activeContent\r\n                .children()\r\n                  .stop(true, true)\r\n                  .animate({\r\n                    opacity: 1\r\n                  }, settings.duration, module.resetOpacity)\r\n              ;\r\n            }\r\n          }\r\n          $activeContent\r\n            .slideDown(settings.duration, settings.easing, function() {\r\n              $activeContent\r\n                .removeClass(className.animating)\r\n                .addClass(className.active)\r\n              ;\r\n              module.reset.display.call(this);\r\n              settings.onOpen.call(this);\r\n              settings.onChange.call(this);\r\n            })\r\n          ;\r\n        },\r\n\r\n        close: function(query) {\r\n          var\r\n            $activeTitle = (query !== undefined)\r\n              ? (typeof query === 'number')\r\n                ? $title.eq(query)\r\n                : $(query).closest(selector.title)\r\n              : $(this).closest(selector.title),\r\n            $activeContent = $activeTitle.next($content),\r\n            isAnimating    = $activeContent.hasClass(className.animating),\r\n            isActive       = $activeContent.hasClass(className.active),\r\n            isOpening      = (!isActive && isAnimating),\r\n            isClosing      = (isActive && isAnimating)\r\n          ;\r\n          if((isActive || isOpening) && !isClosing) {\r\n            module.debug('Closing accordion content', $activeContent);\r\n            settings.onClosing.call($activeContent);\r\n            settings.onChanging.call($activeContent);\r\n            $activeTitle\r\n              .removeClass(className.active)\r\n            ;\r\n            $activeContent\r\n              .stop(true, true)\r\n              .addClass(className.animating)\r\n            ;\r\n            if(settings.animateChildren) {\r\n              if($.fn.transition !== undefined && $module.transition('is supported')) {\r\n                $activeContent\r\n                  .children()\r\n                    .transition({\r\n                      animation   : 'fade out',\r\n                      queue       : false,\r\n                      useFailSafe : true,\r\n                      debug       : settings.debug,\r\n                      verbose     : settings.verbose,\r\n                      duration    : settings.duration\r\n                    })\r\n                ;\r\n              }\r\n              else {\r\n                $activeContent\r\n                  .children()\r\n                    .stop(true, true)\r\n                    .animate({\r\n                      opacity: 0\r\n                    }, settings.duration, module.resetOpacity)\r\n                ;\r\n              }\r\n            }\r\n            $activeContent\r\n              .slideUp(settings.duration, settings.easing, function() {\r\n                $activeContent\r\n                  .removeClass(className.animating)\r\n                  .removeClass(className.active)\r\n                ;\r\n                module.reset.display.call(this);\r\n                settings.onClose.call(this);\r\n                settings.onChange.call(this);\r\n              })\r\n            ;\r\n          }\r\n        },\r\n\r\n        closeOthers: function(index) {\r\n          var\r\n            $activeTitle = (index !== undefined)\r\n              ? $title.eq(index)\r\n              : $(this).closest(selector.title),\r\n            $parentTitles    = $activeTitle.parents(selector.content).prev(selector.title),\r\n            $activeAccordion = $activeTitle.closest(selector.accordion),\r\n            activeSelector   = selector.title + '.' + className.active + ':visible',\r\n            activeContent    = selector.content + '.' + className.active + ':visible',\r\n            $openTitles,\r\n            $nestedTitles,\r\n            $openContents\r\n          ;\r\n          if(settings.closeNested) {\r\n            $openTitles   = $activeAccordion.find(activeSelector).not($parentTitles);\r\n            $openContents = $openTitles.next($content);\r\n          }\r\n          else {\r\n            $openTitles   = $activeAccordion.find(activeSelector).not($parentTitles);\r\n            $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles);\r\n            $openTitles   = $openTitles.not($nestedTitles);\r\n            $openContents = $openTitles.next($content);\r\n          }\r\n          if( ($openTitles.length > 0) ) {\r\n            module.debug('Exclusive enabled, closing other content', $openTitles);\r\n            $openTitles\r\n              .removeClass(className.active)\r\n            ;\r\n            $openContents\r\n              .removeClass(className.animating)\r\n              .stop(true, true)\r\n            ;\r\n            if(settings.animateChildren) {\r\n              if($.fn.transition !== undefined && $module.transition('is supported')) {\r\n                $openContents\r\n                  .children()\r\n                    .transition({\r\n                      animation   : 'fade out',\r\n                      useFailSafe : true,\r\n                      debug       : settings.debug,\r\n                      verbose     : settings.verbose,\r\n                      duration    : settings.duration\r\n                    })\r\n                ;\r\n              }\r\n              else {\r\n                $openContents\r\n                  .children()\r\n                    .stop(true, true)\r\n                    .animate({\r\n                      opacity: 0\r\n                    }, settings.duration, module.resetOpacity)\r\n                ;\r\n              }\r\n            }\r\n            $openContents\r\n              .slideUp(settings.duration , settings.easing, function() {\r\n                $(this).removeClass(className.active);\r\n                module.reset.display.call(this);\r\n              })\r\n            ;\r\n          }\r\n        },\r\n\r\n        reset: {\r\n\r\n          display: function() {\r\n            module.verbose('Removing inline display from element', this);\r\n            $(this).css('display', '');\r\n            if( $(this).attr('style') === '') {\r\n              $(this)\r\n                .attr('style', '')\r\n                .removeAttr('style')\r\n              ;\r\n            }\r\n          },\r\n\r\n          opacity: function() {\r\n            module.verbose('Removing inline opacity from element', this);\r\n            $(this).css('opacity', '');\r\n            if( $(this).attr('style') === '') {\r\n              $(this)\r\n                .attr('style', '')\r\n                .removeAttr('style')\r\n              ;\r\n            }\r\n          },\r\n\r\n        },\r\n\r\n        setting: function(name, value) {\r\n          module.debug('Changing setting', name, value);\r\n          if( $.isPlainObject(name) ) {\r\n            $.extend(true, settings, name);\r\n          }\r\n          else if(value !== undefined) {\r\n            if($.isPlainObject(settings[name])) {\r\n              $.extend(true, settings[name], value);\r\n            }\r\n            else {\r\n              settings[name] = value;\r\n            }\r\n          }\r\n          else {\r\n            return settings[name];\r\n          }\r\n        },\r\n        internal: function(name, value) {\r\n          module.debug('Changing internal', name, value);\r\n          if(value !== undefined) {\r\n            if( $.isPlainObject(name) ) {\r\n              $.extend(true, module, name);\r\n            }\r\n            else {\r\n              module[name] = value;\r\n            }\r\n          }\r\n          else {\r\n            return module[name];\r\n          }\r\n        },\r\n        debug: function() {\r\n          if(!settings.silent && settings.debug) {\r\n            if(settings.performance) {\r\n              module.performance.log(arguments);\r\n            }\r\n            else {\r\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\r\n              module.debug.apply(console, arguments);\r\n            }\r\n          }\r\n        },\r\n        verbose: function() {\r\n          if(!settings.silent && settings.verbose && settings.debug) {\r\n            if(settings.performance) {\r\n              module.performance.log(arguments);\r\n            }\r\n            else {\r\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\r\n              module.verbose.apply(console, arguments);\r\n            }\r\n          }\r\n        },\r\n        error: function() {\r\n          if(!settings.silent) {\r\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\r\n            module.error.apply(console, arguments);\r\n          }\r\n        },\r\n        performance: {\r\n          log: function(message) {\r\n            var\r\n              currentTime,\r\n              executionTime,\r\n              previousTime\r\n            ;\r\n            if(settings.performance) {\r\n              currentTime   = new Date().getTime();\r\n              previousTime  = time || currentTime;\r\n              executionTime = currentTime - previousTime;\r\n              time          = currentTime;\r\n              performance.push({\r\n                'Name'           : message[0],\r\n                'Arguments'      : [].slice.call(message, 1) || '',\r\n                'Element'        : element,\r\n                'Execution Time' : executionTime\r\n              });\r\n            }\r\n            clearTimeout(module.performance.timer);\r\n            module.performance.timer = setTimeout(module.performance.display, 500);\r\n          },\r\n          display: function() {\r\n            var\r\n              title = settings.name + ':',\r\n              totalTime = 0\r\n            ;\r\n            time = false;\r\n            clearTimeout(module.performance.timer);\r\n            $.each(performance, function(index, data) {\r\n              totalTime += data['Execution Time'];\r\n            });\r\n            title += ' ' + totalTime + 'ms';\r\n            if(moduleSelector) {\r\n              title += ' \\'' + moduleSelector + '\\'';\r\n            }\r\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\r\n              console.groupCollapsed(title);\r\n              if(console.table) {\r\n                console.table(performance);\r\n              }\r\n              else {\r\n                $.each(performance, function(index, data) {\r\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\r\n                });\r\n              }\r\n              console.groupEnd();\r\n            }\r\n            performance = [];\r\n          }\r\n        },\r\n        invoke: function(query, passedArguments, context) {\r\n          var\r\n            object = instance,\r\n            maxDepth,\r\n            found,\r\n            response\r\n          ;\r\n          passedArguments = passedArguments || queryArguments;\r\n          context         = element         || context;\r\n          if(typeof query == 'string' && object !== undefined) {\r\n            query    = query.split(/[\\. ]/);\r\n            maxDepth = query.length - 1;\r\n            $.each(query, function(depth, value) {\r\n              var camelCaseValue = (depth != maxDepth)\r\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\r\n                : query\r\n              ;\r\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\r\n                object = object[camelCaseValue];\r\n              }\r\n              else if( object[camelCaseValue] !== undefined ) {\r\n                found = object[camelCaseValue];\r\n                return false;\r\n              }\r\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\r\n                object = object[value];\r\n              }\r\n              else if( object[value] !== undefined ) {\r\n                found = object[value];\r\n                return false;\r\n              }\r\n              else {\r\n                module.error(error.method, query);\r\n                return false;\r\n              }\r\n            });\r\n          }\r\n          if ( $.isFunction( found ) ) {\r\n            response = found.apply(context, passedArguments);\r\n          }\r\n          else if(found !== undefined) {\r\n            response = found;\r\n          }\r\n          if($.isArray(returnedValue)) {\r\n            returnedValue.push(response);\r\n          }\r\n          else if(returnedValue !== undefined) {\r\n            returnedValue = [returnedValue, response];\r\n          }\r\n          else if(response !== undefined) {\r\n            returnedValue = response;\r\n          }\r\n          return found;\r\n        }\r\n      };\r\n      if(methodInvoked) {\r\n        if(instance === undefined) {\r\n          module.initialize();\r\n        }\r\n        module.invoke(query);\r\n      }\r\n      else {\r\n        if(instance !== undefined) {\r\n          instance.invoke('destroy');\r\n        }\r\n        module.initialize();\r\n      }\r\n    })\r\n  ;\r\n  return (returnedValue !== undefined)\r\n    ? returnedValue\r\n    : this\r\n  ;\r\n};\r\n\r\n$.fn.accordion.settings = {\r\n\r\n  name            : 'Accordion',\r\n  namespace       : 'accordion',\r\n\r\n  silent          : false,\r\n  debug           : false,\r\n  verbose         : false,\r\n  performance     : true,\r\n\r\n  on              : 'click', // event on title that opens accordion\r\n\r\n  observeChanges  : true,  // whether accordion should automatically refresh on DOM insertion\r\n\r\n  exclusive       : true,  // whether a single accordion content panel should be open at once\r\n  collapsible     : true,  // whether accordion content can be closed\r\n  closeNested     : false, // whether nested content should be closed when a panel is closed\r\n  animateChildren : true,  // whether children opacity should be animated\r\n\r\n  duration        : 350, // duration of animation\r\n  easing          : 'easeOutQuad', // easing equation for animation\r\n\r\n  onOpening       : function(){}, // callback before open animation\r\n  onClosing       : function(){}, // callback before closing animation\r\n  onChanging      : function(){}, // callback before closing or opening animation\r\n\r\n  onOpen          : function(){}, // callback after open animation\r\n  onClose         : function(){}, // callback after closing animation\r\n  onChange        : function(){}, // callback after closing or opening animation\r\n\r\n  error: {\r\n    method : 'The method you called is not defined'\r\n  },\r\n\r\n  className   : {\r\n    active    : 'active',\r\n    animating : 'animating'\r\n  },\r\n\r\n  selector    : {\r\n    accordion : '.accordion',\r\n    title     : '.title',\r\n    trigger   : '.title',\r\n    content   : '.content'\r\n  }\r\n\r\n};\r\n\r\n// Adds easing\r\n$.extend( $.easing, {\r\n  easeOutQuad: function (x, t, b, c, d) {\r\n    return -c *(t/=d)*(t-2) + b;\r\n  }\r\n});\r\n\r\n})( jQuery, window, document );\r\n\r\n"],"names":["$","window","document","undefined","Math","self","Function","fn","calendar","parameters","returnedValue","$allModules","this","moduleSelector","selector","time","Date","getTime","performance","query","arguments","methodInvoked","queryArguments","slice","call","each","isTouch","module","settings","isPlainObject","extend","className","namespace","formatter","parser","metadata","error","eventNamespace","moduleNamespace","$module","$input","find","input","$container","popup","$activator","activator","element","instance","data","isTouchDown","focusDateUsedForRange","initialize","debug","get","setup","inline","date","create","bind","events","instantiate","verbose","destroy","removeData","unbind","length","children","first","addClass","prependTo","parent","onVisible","onHidden","attr","focus","apply","blur","on","options","popupOptions","hoverable","onShow","set","focusDate","mode","startMode","onHide","appendTo","touchReadonly","prop","val","formatInput","i","r","c","p","row","cell","pageGrid","today","display","initialDate","helper","dateInRange","isYear","isMonth","isDay","isHour","isMinute","isTimeOnly","type","multiMonth","max","monthOffset","minute","getMinutes","hour","getHours","day","getDate","startMonth","getMonth","year","getFullYear","columns","columnsString","rows","pages","container","empty","grid","column","month","firstMonthDayColumn","getDay","firstDayOfWeek","constantHeight","requiredCells","ceil","yearChange","monthChange","dayChange","prevNextDay","prevDate","nextDate","prevLast","nextFirst","table","thead","headerDate","headerText","link","text","header","newMode","disableYear","disableMonth","prev","toggleClass","disabledCell","isDateInRange","prevIcon","next","nextIcon","dayColumnHeader","tbody","cellDate","cellText","monthsShort","adjacent","disabled","isDisabled","active","dateEqual","isToday","adjacentCell","activeCell","todayCell","cellOptions","todayRow","todayButton","update","updateRange","startDate","endDate","rangeDate","hasClass","focused","inRange","focusCell","rangeCell","refresh","event","mousedown","mouseup","mouseover","inputChange","inputFocus","inputBlur","inputClick","keydown","off","target","buttons","preventDefault","indexOf","stopPropagation","forceSet","selectDate","keyCode","bigIncrement","increment","newFocusDate","mergeDateTime","removeClass","datetime","startModule","calendarModule","startCalendar","endModule","endCalendar","validModes","inArray","push","disableMinute","createEvent","e","updateInput","fireChange","sanitiseDate","onChange","dataKeyValue","refreshCalendar","updateFocus","oldFocusDate","monthDelta","changed","min","key","value","oldValue","equal","closable","changeDate","clear","isNaN","dateDiff","date1","date2","isYearOrMonth","isHourOrMinute","floor","minDate","maxDate","setting","name","internal","silent","log","prototype","console","info","message","currentTime","executionTime","clearTimeout","timer","setTimeout","title","totalTime","index","group","groupCollapsed","groupEnd","invoke","passedArguments","context","maxDepth","found","response","object","split","depth","camelCaseValue","charAt","toUpperCase","method","isFunction","isArray","monthFirst","ampm","position","lastResort","prefer","hideOnScroll","days","months","now","am","pm","yearHeader","monthHeader","dayHeader","hourHeader","minuteHeader","decadeYear","forCalendar","trim","toLowerCase","j","k","isAm","isDateOnly","words","regExp","dateWords","numbers","dateNumbers","number","parts","parseInt","splice","word","substring","monthString","jQuery","accordion","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","observer","$title","$content","content","observeChanges","MutationObserver","mutations","observe","childList","subtree","trigger","click","toggle","$activeTitle","eq","closest","$activeContent","isAnimating","animating","isActive","isOpen","isOpening","collapsible","close","open","onOpening","onChanging","exclusive","closeOthers","stop","animateChildren","transition","animation","queue","useFailSafe","duration","animate","opacity","resetOpacity","slideDown","easing","reset","onOpen","onClosing","slideUp","onClose","$openTitles","$nestedTitles","$openContents","$parentTitles","parents","$activeAccordion","activeSelector","activeContent","closeNested","not","css","removeAttr","easeOutQuad","x","t","b","d"],"sourceRoot":""}