{ "version": 3, "sources": ["../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/cookie_consent_controller.js", "../../../node_modules/@stimulus-components/rails-nested-form/dist/stimulus-rails-nested-form.mjs", "../../javascript/controllers/nested_form_controller.js", "../../javascript/controllers/dates_calculator_controller.js", "../../javascript/controllers/timezones_controller.js", "../../javascript/controllers/index.js", "../../../vendor/assets/javascripts/jquery_ujs.js", "../../../vendor/assets/javascripts/jquery.countdown.js", "../../../vendor/assets/javascripts/jquery_sticky.js", "../../../vendor/assets/javascripts/jquery_superfish_menu.js", "../../../vendor/assets/javascripts/jquery_sidr.js", "../../../node_modules/bootstrap-sass/vendor/assets/javascripts/bootstrap/button.js", "../../../node_modules/bootstrap-sass/vendor/assets/javascripts/bootstrap/collapse.js", "../../../node_modules/bootstrap-sass/vendor/assets/javascripts/bootstrap/dropdown.js", "../../../node_modules/bootstrap-sass/vendor/assets/javascripts/bootstrap/transition.js", "../../../node_modules/bootstrap-sass/vendor/assets/javascripts/bootstrap/tooltip.js", "../../../node_modules/bootstrap-sass/vendor/assets/javascripts/bootstrap/popover.js", "../../../vendor/assets/javascripts/bootstrap-datepicker/bootstrap-datepicker.js", "../../../vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.de.js", "../../javascript/custom/main.js"], "sourcesContent": ["/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n", "import {Controller} from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this._checkGtagFunction();\n }\n\n grant(_event) {\n gtag('consent', 'update', {\n 'ad_user_data': 'granted',\n 'ad_personalization': 'granted',\n 'ad_storage': 'granted',\n 'analytics_storage': 'granted'\n })\n }\n\n deny(_event) {\n gtag('consent', 'update', {\n 'ad_user_data': 'denied',\n 'ad_personalization': 'denied',\n 'ad_storage': 'denied',\n 'analytics_storage': 'denied'\n })\n }\n\n _checkGtagFunction() {\n if (typeof gtag === 'undefined') {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function () {\n dataLayer.push(arguments)\n }\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nconst _RailsNestedForm = class _RailsNestedForm extends Controller {\n add(e) {\n e.preventDefault();\n const content = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, (/* @__PURE__ */ new Date()).getTime().toString());\n this.targetTarget.insertAdjacentHTML(\"beforebegin\", content);\n const event = new CustomEvent(\"rails-nested-form:add\", { bubbles: !0 });\n this.element.dispatchEvent(event);\n }\n remove(e) {\n e.preventDefault();\n const wrapper = e.target.closest(this.wrapperSelectorValue);\n if (wrapper.dataset.newRecord === \"true\")\n wrapper.remove();\n else {\n wrapper.style.display = \"none\";\n const input = wrapper.querySelector(\"input[name*='_destroy']\");\n input.value = \"1\";\n }\n const event = new CustomEvent(\"rails-nested-form:remove\", { bubbles: !0 });\n this.element.dispatchEvent(event);\n }\n};\n_RailsNestedForm.targets = [\"target\", \"template\"], _RailsNestedForm.values = {\n wrapperSelector: {\n type: String,\n default: \".nested-form-wrapper\"\n }\n};\nlet RailsNestedForm = _RailsNestedForm;\nexport {\n RailsNestedForm as default\n};\n", "import NestedForm from '@stimulus-components/rails-nested-form'\n\nexport default class extends NestedForm {\n connect() {\n super.connect()\n console.log('Do what you want here.')\n }\n}", "import {Controller} from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n calculate() {\n let date = new Date(this.element.querySelector('#start_date').value);\n let alternativeDate = new Date(this.element.querySelector('#start_date').value);\n const addOrSubtract = this.element.querySelector('#add_or_subtract').value;\n const days = this.findElementAndSafelyParseInt('days');\n const weeks = this.findElementAndSafelyParseInt('weeks');\n const months = this.findElementAndSafelyParseInt('months');\n const years = this.findElementAndSafelyParseInt('years');\n\n const resultWrapper = this.element.querySelector('#dates_calculator_result_wrapper');\n\n if (addOrSubtract === 'Minus') {\n date.setMonth(date.getMonth() - months);\n date.setFullYear(date.getFullYear() - years);\n date.setDate(date.getDate() - days - (7 * weeks));\n alternativeDate.setDate(alternativeDate.getDate() - days - (7 * weeks));\n alternativeDate.setMonth(alternativeDate.getMonth() - months);\n alternativeDate.setFullYear(alternativeDate.getFullYear() - years);\n } else {\n date.setMonth(date.getMonth() + months);\n date.setFullYear(date.getFullYear() + years);\n date.setDate(date.getDate() + days + (7 * weeks));\n alternativeDate.setDate(alternativeDate.getDate() + days + (7 * weeks));\n alternativeDate.setMonth(alternativeDate.getMonth() + months);\n alternativeDate.setFullYear(alternativeDate.getFullYear() + years);\n }\n\n const formattedDate = this.formatDate(date);\n const formattedAlternativeDate = this.formatDate(alternativeDate);\n\n if (formattedDate === formattedAlternativeDate) {\n resultWrapper.innerHTML = `\n

\n \n ${formattedDate}\n \n

\n `;\n } else {\n resultWrapper.innerHTML = `\n

\n \n Zwei Ergebnisse m\u00F6glich:\n \n

\n
\n

${formattedDate}

\n \n Die Monate und Jahre wurden vor den \n Tagen und Wochen addiert bzw. subtrahiert.\n \n
\n
\n

${formattedAlternativeDate}

\n \n Die Tage und Wochen wurden vor den \n Monaten und Jahren addiert bzw. subtrahiert.\n \n
\n `\n }\n\n console.log(date.getDate() === alternativeDate.getDate());\n }\n\n findElementAndSafelyParseInt(string) {\n const number = parseInt(this.element.querySelector(`#${string}`).value);\n if (isNaN(number)) {\n return 0\n } else {\n return number\n }\n }\n\n formatDate(date) {\n const monthNames = [\"Januar\", \"Februar\", \"M\u00E4rz\", \"April\", \"Mai\", \"Juni\",\n \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"];\n\n const day = String(date.getDate()).padStart(2, '0');\n const monthIndex = date.getMonth();\n const monthName = monthNames[monthIndex];\n const year = date.getFullYear();\n const weekday = date.toLocaleDateString(\"de-DE\", {weekday: 'long'});\n\n return `${weekday}, ${day}. ${monthName} ${year}`;\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static values = {\n utcOffset: Number\n };\n\n static targets = [\"liveTime\"];\n\n connect() {\n this.updateTime = this.updateTime.bind(this);\n this.updateTime();\n\n this.interval = setInterval(this.updateTime, 1000);\n }\n\n disconnect() {\n clearInterval(this.interval);\n }\n\n updateTime() {\n const now = new Date();\n\n const utcTime = now.getTime() + (now.getTimezoneOffset() * 60000);\n const cityTime = new Date(utcTime + this.utcOffsetValue * 1000);\n\n\n const hours = cityTime.getHours().toString().padStart(2, \"0\");\n const minutes = cityTime.getMinutes().toString().padStart(2, \"0\");\n const seconds = cityTime.getSeconds().toString().padStart(2, \"0\");\n\n const currentTime = `${hours}:${minutes}:${seconds}`;\n\n\n this.liveTimeTarget.textContent = currentTime;\n }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport CookieConsentController from \"./cookie_consent_controller\"\napplication.register(\"cookie-consent\", CookieConsentController)\n\nimport NestedFormController from \"./nested_form_controller\"\napplication.register(\"nested-form\", NestedFormController)\n\nimport DatesCalculatorController from './dates_calculator_controller'\napplication.register(\"dates_calculator\", DatesCalculatorController)\n\nimport TimezonesController from './timezones_controller'\napplication.register(\"timezones\", TimezonesController)\n", "(function($, undefined) {\n\n /**\n * Unobtrusive scripting adapter for jQuery\n * https://github.com/rails/jquery-ujs\n *\n * Requires jQuery 1.7.0 or later.\n *\n * Released under the MIT license\n *\n */\n\n // Cut down on the number of issues from people inadvertently including jquery_ujs twice\n // by detecting and raising an error when it happens.\n if ( $.rails !== undefined ) {\n $.error('jquery-ujs has already been loaded!');\n }\n\n // Shorthand to make it a little easier to call public rails functions from within rails.js\n var rails;\n var $document = $(document);\n\n $.rails = rails = {\n // Link elements bound by jquery-ujs\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote], a[data-disable-with]',\n\n // Button elements bound by jquery-ujs\n buttonClickSelector: 'button[data-remote]',\n\n // Select elements bound by jquery-ujs\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n\n // Form elements bound by jquery-ujs\n formSubmitSelector: 'form',\n\n // Form input elements bound by jquery-ujs\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])',\n\n // Form input elements disabled during form submission\n disableSelector: 'input[data-disable-with], button[data-disable-with], textarea[data-disable-with]',\n\n // Form input elements re-enabled after form submission\n enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled',\n\n // Form required input elements\n requiredInputSelector: 'input[name][required]:not([disabled]),textarea[name][required]:not([disabled])',\n\n // Form file input elements\n fileInputSelector: 'input[type=file]',\n\n // Link onClick disable selector with possible reenable after remote submission\n linkDisableSelector: 'a[data-disable-with]',\n\n // Make sure that every Ajax request sends the CSRF token\n CSRFProtection: function(xhr) {\n var token = $('meta[name=\"csrf-token\"]').attr('content');\n if (token) xhr.setRequestHeader('X-CSRF-Token', token);\n },\n\n // making sure that all forms have actual up-to-date token(cached forms contain old one)\n refreshCSRFTokens: function(){\n var csrfToken = $('meta[name=csrf-token]').attr('content');\n var csrfParam = $('meta[name=csrf-param]').attr('content');\n $('form input[name=\"' + csrfParam + '\"]').val(csrfToken);\n },\n\n // Triggers an event on an element and returns false if the event result is false\n fire: function(obj, name, data) {\n var event = $.Event(name);\n obj.trigger(event, data);\n return event.result !== false;\n },\n\n // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm\n confirm: function(message) {\n return confirm(message);\n },\n\n // Default ajax function, may be overridden with custom function in $.rails.ajax\n ajax: function(options) {\n return $.ajax(options);\n },\n\n // Default way to get an element's href. May be overridden at $.rails.href.\n href: function(element) {\n return element.attr('href');\n },\n\n // Submits \"remote\" forms and links with ajax\n handleRemote: function(element) {\n var method, url, data, elCrossDomain, crossDomain, withCredentials, dataType, options;\n\n if (rails.fire(element, 'ajax:before')) {\n elCrossDomain = element.data('cross-domain');\n crossDomain = elCrossDomain === undefined ? null : elCrossDomain;\n withCredentials = element.data('with-credentials') || null;\n dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);\n\n if (element.is('form')) {\n method = element.attr('method');\n url = element.attr('action');\n data = element.serializeArray();\n // memoized value from clicked submit button\n var button = element.data('ujs:submit-button');\n if (button) {\n data.push(button);\n element.data('ujs:submit-button', null);\n }\n } else if (element.is(rails.inputChangeSelector)) {\n method = element.data('method');\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + \"&\" + element.data('params');\n } else if (element.is(rails.buttonClickSelector)) {\n method = element.data('method') || 'get';\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + \"&\" + element.data('params');\n } else {\n method = element.data('method');\n url = rails.href(element);\n data = element.data('params') || null;\n }\n\n options = {\n type: method || 'GET', data: data, dataType: dataType,\n // stopping the \"ajax:beforeSend\" event will cancel the ajax request\n beforeSend: function(xhr, settings) {\n if (settings.dataType === undefined) {\n xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);\n }\n return rails.fire(element, 'ajax:beforeSend', [xhr, settings]);\n },\n success: function(data, status, xhr) {\n element.trigger('ajax:success', [data, status, xhr]);\n },\n complete: function(xhr, status) {\n element.trigger('ajax:complete', [xhr, status]);\n },\n error: function(xhr, status, error) {\n element.trigger('ajax:error', [xhr, status, error]);\n },\n crossDomain: crossDomain\n };\n\n // There is no withCredentials for IE6-8 when\n // \"Enable native XMLHTTP support\" is disabled\n if (withCredentials) {\n options.xhrFields = {\n withCredentials: withCredentials\n };\n }\n\n // Only pass url to `ajax` options if not blank\n if (url) { options.url = url; }\n\n var jqxhr = rails.ajax(options);\n element.trigger('ajax:send', jqxhr);\n return jqxhr;\n } else {\n return false;\n }\n },\n\n // Handles \"data-method\" on links such as:\n // Delete\n handleMethod: function(link) {\n var href = rails.href(link),\n method = link.data('method'),\n target = link.attr('target'),\n csrfToken = $('meta[name=csrf-token]').attr('content'),\n csrfParam = $('meta[name=csrf-param]').attr('content'),\n form = $('
'),\n metadataInput = '';\n\n if (csrfParam !== undefined && csrfToken !== undefined) {\n metadataInput += '';\n }\n\n if (target) { form.attr('target', target); }\n\n form.hide().append(metadataInput).appendTo('body');\n form.submit();\n },\n\n /* Disables form elements:\n - Caches element value in 'ujs:enable-with' data store\n - Replaces element text with value of 'data-disable-with' attribute\n - Sets disabled property to true\n */\n disableFormElements: function(form) {\n form.find(rails.disableSelector).each(function() {\n var element = $(this), method = element.is('button') ? 'html' : 'val';\n element.data('ujs:enable-with', element[method]());\n element[method](element.data('disable-with'));\n element.prop('disabled', true);\n });\n },\n\n /* Re-enables disabled form elements:\n - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)\n - Sets disabled property to false\n */\n enableFormElements: function(form) {\n form.find(rails.enableSelector).each(function() {\n var element = $(this), method = element.is('button') ? 'html' : 'val';\n if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));\n element.prop('disabled', false);\n });\n },\n\n /* For 'data-confirm' attribute:\n - Fires `confirm` event\n - Shows the confirmation dialog\n - Fires the `confirm:complete` event\n\n Returns `true` if no function stops the chain and user chose yes; `false` otherwise.\n Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.\n Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function\n return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.\n */\n allowAction: function(element) {\n var message = element.data('confirm'),\n answer = false, callback;\n if (!message) { return true; }\n\n if (rails.fire(element, 'confirm')) {\n answer = rails.confirm(message);\n callback = rails.fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n },\n\n // Helper function which checks for blank inputs in a form that match the specified CSS selector\n blankInputs: function(form, specifiedSelector, nonBlank) {\n var inputs = $(), input, valueToCheck,\n selector = specifiedSelector || 'input,textarea',\n allInputs = form.find(selector);\n\n allInputs.each(function() {\n input = $(this);\n valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : input.val();\n // If nonBlank and valueToCheck are both truthy, or nonBlank and valueToCheck are both falsey\n if (!valueToCheck === !nonBlank) {\n\n // Don't count unchecked required radio if other radio with same name is checked\n if (input.is('input[type=radio]') && allInputs.filter('input[type=radio]:checked[name=\"' + input.attr('name') + '\"]').length) {\n return true; // Skip to next input\n }\n\n inputs = inputs.add(input);\n }\n });\n return inputs.length ? inputs : false;\n },\n\n // Helper function which checks for non-blank inputs in a form that match the specified CSS selector\n nonBlankInputs: function(form, specifiedSelector) {\n return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank\n },\n\n // Helper function, needed to provide consistent behavior in IE\n stopEverything: function(e) {\n $(e.target).trigger('ujs:everythingStopped');\n e.stopImmediatePropagation();\n return false;\n },\n\n // replace element's html with the 'data-disable-with' after storing original html\n // and prevent clicking on it\n disableElement: function(element) {\n element.data('ujs:enable-with', element.html()); // store enabled state\n element.html(element.data('disable-with')); // set to disabled state\n element.bind('click.railsDisable', function(e) { // prevent further clicking\n return rails.stopEverything(e);\n });\n },\n\n // restore element to its original state which was disabled by 'disableElement' above\n enableElement: function(element) {\n if (element.data('ujs:enable-with') !== undefined) {\n element.html(element.data('ujs:enable-with')); // set to old enabled state\n element.removeData('ujs:enable-with'); // clean up cache\n }\n element.unbind('click.railsDisable'); // enable element\n }\n\n };\n\n if (rails.fire($document, 'rails:attachBindings')) {\n\n $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});\n\n $document.delegate(rails.linkDisableSelector, 'ajax:complete', function() {\n rails.enableElement($(this));\n });\n\n $document.delegate(rails.linkClickSelector, 'click.rails', function(e) {\n var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;\n if (!rails.allowAction(link)) return rails.stopEverything(e);\n\n if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);\n\n if (link.data('remote') !== undefined) {\n if (metaClick && (!method || method === 'GET') && !data) { return true; }\n\n var handleRemote = rails.handleRemote(link);\n // response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableElement(link);\n } else {\n handleRemote.error( function() { rails.enableElement(link); } );\n }\n return false;\n\n } else if (link.data('method')) {\n rails.handleMethod(link);\n return false;\n }\n });\n\n $document.delegate(rails.buttonClickSelector, 'click.rails', function(e) {\n var button = $(this);\n if (!rails.allowAction(button)) return rails.stopEverything(e);\n\n rails.handleRemote(button);\n return false;\n });\n\n $document.delegate(rails.inputChangeSelector, 'change.rails', function(e) {\n var link = $(this);\n if (!rails.allowAction(link)) return rails.stopEverything(e);\n\n rails.handleRemote(link);\n return false;\n });\n\n $document.delegate(rails.formSubmitSelector, 'submit.rails', function(e) {\n var form = $(this),\n remote = form.data('remote') !== undefined,\n blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector),\n nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);\n\n if (!rails.allowAction(form)) return rails.stopEverything(e);\n\n // skip other logic when required values are missing or file upload is present\n if (blankRequiredInputs && form.attr(\"novalidate\") == undefined && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {\n return rails.stopEverything(e);\n }\n\n if (remote) {\n if (nonBlankFileInputs) {\n // slight timeout so that the submit button gets properly serialized\n // (make it easy for event handler to serialize form without disabled values)\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);\n\n // re-enable form elements if event bindings return false (canceling normal form submission)\n if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }\n\n return aborted;\n }\n\n rails.handleRemote(form);\n return false;\n\n } else {\n // slight timeout so that the submit button gets properly serialized\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n }\n });\n\n $document.delegate(rails.formInputClickSelector, 'click.rails', function(event) {\n var button = $(this);\n\n if (!rails.allowAction(button)) return rails.stopEverything(event);\n\n // register the pressed submit button\n var name = button.attr('name'),\n data = name ? {name:name, value:button.val()} : null;\n\n button.closest('form').data('ujs:submit-button', data);\n });\n\n $document.delegate(rails.formSubmitSelector, 'ajax:beforeSend.rails', function(event) {\n if (this == event.target) rails.disableFormElements($(this));\n });\n\n $document.delegate(rails.formSubmitSelector, 'ajax:complete.rails', function(event) {\n if (this == event.target) rails.enableFormElements($(this));\n });\n\n $(function(){\n rails.refreshCSRFTokens();\n });\n }\n\n})( jQuery );", "/*\n * jQuery The Final Countdown plugin v1.0.0 beta\n * http://github.com/hilios/jquery.countdown\n *\n * Copyright (c) 2011 Edson Hilios\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n(function($) {\n \n $.fn.countdown = function(toDate, callback) {\n var handlers = ['seconds', 'minutes', 'hours', 'days', 'weeks', 'daysLeft'];\n \n function delegate(scope, method) {\n return function() { return method.call(scope) }\n }\n \n return this.each(function() {\n // Convert\n if(!(toDate instanceof Date)) {\n if(String(toDate).match(/^[0-9]*$/)) {\n toDate = new Date(toDate);\n } else if( toDate.match(/([0-9]{1,2})\\/([0-9]{1,2})\\/([0-9]{2,4})\\s([0-9]{1,2})\\:([0-9]{2})\\:([0-9]{2})/) ||\n toDate.match(/([0-9]{2,4})\\/([0-9]{1,2})\\/([0-9]{1,2})\\s([0-9]{1,2})\\:([0-9]{2})\\:([0-9]{2})/)\n ) {\n toDate = new Date(toDate);\n } else if(toDate.match(/([0-9]{1,2})\\/([0-9]{1,2})\\/([0-9]{2,4})/) || \n toDate.match(/([0-9]{2,4})\\/([0-9]{1,2})\\/([0-9]{1,2})/)\n ) {\n toDate = new Date(toDate)\n } else {\n throw new Error(\"Doesn't seen to be a valid date object or string\")\n }\n }\n \n var $this = $(this),\n values = {},\n lasting = {},\n interval = $this.data('countdownInterval'),\n currentDate = new Date(),\n secondsLeft = Math.floor((toDate.valueOf() - currentDate.valueOf()) / 1000);\n \n function triggerEvents() {\n secondsLeft--;\n if(secondsLeft < 0) {\n secondsLeft = 0;\n }\n lasting = {\n seconds : secondsLeft % 60,\n minutes : Math.floor(secondsLeft / 60) % 60,\n hours : Math.floor(secondsLeft / 60 / 60) % 24,\n days : Math.floor(secondsLeft / 60 / 60 / 24),\n weeks : Math.floor(secondsLeft / 60 / 60 / 24 / 7),\n daysLeft: Math.floor(secondsLeft / 60 / 60 / 24) % 7\n }\n for(var i=0; i dwh) ? dwh - scrollTop : 0;\n\n for (var i = 0; i < sticked.length; i++) {\n var s = sticked[i],\n elementTop = s.stickyWrapper.offset().top,\n etse = elementTop - s.topSpacing - extra;\n\n if (scrollTop <= etse) {\n if (s.currentTop !== null) {\n s.stickyElement\n .css('position', '')\n .css('top', '');\n s.stickyElement.parent().removeClass(s.className);\n s.currentTop = null;\n }\n }\n else {\n var newTop = documentHeight - s.stickyElement.outerHeight()\n - s.topSpacing - s.bottomSpacing - scrollTop - extra;\n if (newTop < 0) {\n newTop = newTop + s.topSpacing;\n } else {\n newTop = s.topSpacing;\n }\n if (s.currentTop != newTop) {\n s.stickyElement\n .css('position', 'fixed')\n .css('top', newTop);\n\n if (typeof s.getWidthFrom !== 'undefined') {\n s.stickyElement.css('width', $(s.getWidthFrom).width());\n }\n\n s.stickyElement.parent().addClass(s.className);\n s.currentTop = newTop;\n }\n }\n }\n },\n resizer = function () {\n windowHeight = $window.height();\n },\n methods = {\n init: function (options) {\n var o = $.extend(defaults, options);\n return this.each(function () {\n var stickyElement = $(this);\n\n var stickyId = stickyElement.attr('id');\n var wrapper = $('
')\n .attr('id', stickyId + '-sticky-wrapper')\n .addClass(o.wrapperClassName);\n stickyElement.wrapAll(wrapper);\n\n if (o.center) {\n stickyElement.parent().css({\n width: stickyElement.outerWidth(),\n marginLeft: \"auto\",\n marginRight: \"auto\"\n });\n }\n\n if (stickyElement.css(\"float\") == \"right\") {\n stickyElement.css({\"float\": \"none\"}).parent().css({\"float\": \"right\"});\n }\n\n var stickyWrapper = stickyElement.parent();\n stickyWrapper.css('height', stickyElement.outerHeight());\n sticked.push({\n topSpacing: o.topSpacing,\n bottomSpacing: o.bottomSpacing,\n stickyElement: stickyElement,\n currentTop: null,\n stickyWrapper: stickyWrapper,\n className: o.className,\n getWidthFrom: o.getWidthFrom\n });\n });\n },\n update: scroller\n };\n\n // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):\n if (window.addEventListener) {\n window.addEventListener('scroll', scroller, false);\n window.addEventListener('resize', resizer, false);\n } else if (window.attachEvent) {\n window.attachEvent('onscroll', scroller);\n window.attachEvent('onresize', resizer);\n }\n\n $.fn.sticky = function (method) {\n if (methods[method]) {\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n } else if (typeof method === 'object' || !method) {\n return methods.init.apply(this, arguments);\n } else {\n $.error('Method ' + method + ' does not exist on jQuery.sticky');\n }\n };\n $(function () {\n setTimeout(scroller, 0);\n });\n})(jQuery);", "/*\n * jQuery Superfish Menu Plugin - v1.7.4\n * Copyright (c) 2013 Joel Birch\n *\n * Dual licensed under the MIT and GPL licenses:\n *\thttp://www.opensource.org/licenses/mit-license.php\n *\thttp://www.gnu.org/licenses/gpl.html\n */\n\n;(function (e) {\n \"use strict\";\n var s = function () {\n var s = {\n bcClass: \"sf-breadcrumb\",\n menuClass: \"sf-js-enabled\",\n anchorClass: \"sf-with-ul\",\n menuArrowClass: \"sf-arrows\"\n }, o = function () {\n var s = /iPhone|iPad|iPod/i.test(navigator.userAgent);\n return s && e(window).load(function () {\n e(\"body\").children().on(\"click\", e.noop)\n }), s\n }(), n = function () {\n var e = document.documentElement.style;\n return \"behavior\" in e && \"fill\" in e && /iemobile/i.test(navigator.userAgent)\n }(), t = function (e, o) {\n var n = s.menuClass;\n o.cssArrows && (n += \" \" + s.menuArrowClass), e.toggleClass(n)\n }, i = function (o, n) {\n return o.find(\"li.\" + n.pathClass).slice(0, n.pathLevels).addClass(n.hoverClass + \" \" + s.bcClass).filter(function () {\n return e(this).children(n.popUpSelector).hide().show().length\n }).removeClass(n.pathClass)\n }, r = function (e) {\n e.children(\"a\").toggleClass(s.anchorClass)\n }, a = function (e) {\n var s = e.css(\"ms-touch-action\");\n s = \"pan-y\" === s ? \"auto\" : \"pan-y\", e.css(\"ms-touch-action\", s)\n }, l = function (s, t) {\n var i = \"li:has(\" + t.popUpSelector + \")\";\n e.fn.hoverIntent && !t.disableHI ? s.hoverIntent(u, p, i) : s.on(\"mouseenter.superfish\", i, u).on(\"mouseleave.superfish\", i, p);\n var r = \"MSPointerDown.superfish\";\n o || (r += \" touchend.superfish\"), n && (r += \" mousedown.superfish\"), s.on(\"focusin.superfish\", \"li\", u).on(\"focusout.superfish\", \"li\", p).on(r, \"a\", t, h)\n }, h = function (s) {\n var o = e(this), n = o.siblings(s.data.popUpSelector);\n n.length > 0 && n.is(\":hidden\") && (o.one(\"click.superfish\", !1), \"MSPointerDown\" === s.type ? o.trigger(\"focus\") : e.proxy(u, o.parent(\"li\"))())\n }, u = function () {\n var s = e(this), o = d(s);\n clearTimeout(o.sfTimer), s.siblings().superfish(\"hide\").end().superfish(\"show\")\n }, p = function () {\n var s = e(this), n = d(s);\n o ? e.proxy(f, s, n)() : (clearTimeout(n.sfTimer), n.sfTimer = setTimeout(e.proxy(f, s, n), n.delay))\n }, f = function (s) {\n s.retainPath = e.inArray(this[0], s.$path) > -1, this.superfish(\"hide\"), this.parents(\".\" + s.hoverClass).length || (s.onIdle.call(c(this)), s.$path.length && e.proxy(u, s.$path)())\n }, c = function (e) {\n return e.closest(\".\" + s.menuClass)\n }, d = function (e) {\n return c(e).data(\"sf-options\")\n };\n return {\n hide: function (s) {\n if (this.length) {\n var o = this, n = d(o);\n if (!n)return this;\n var t = n.retainPath === !0 ? n.$path : \"\", i = o.find(\"li.\" + n.hoverClass).add(this).not(t).removeClass(n.hoverClass).children(n.popUpSelector), r = n.speedOut;\n s && (i.show(), r = 0), n.retainPath = !1, n.onBeforeHide.call(i), i.stop(!0, !0).animate(n.animationOut, r, function () {\n var s = e(this);\n n.onHide.call(s)\n })\n }\n return this\n }, show: function () {\n var e = d(this);\n if (!e)return this;\n var s = this.addClass(e.hoverClass), o = s.children(e.popUpSelector);\n return e.onBeforeShow.call(o), o.stop(!0, !0).animate(e.animation, e.speed, function () {\n e.onShow.call(o)\n }), this\n }, destroy: function () {\n return this.each(function () {\n var o, n = e(this), i = n.data(\"sf-options\");\n return i ? (o = n.find(i.popUpSelector).parent(\"li\"), clearTimeout(i.sfTimer), t(n, i), r(o), a(n), n.off(\".superfish\").off(\".hoverIntent\"), o.children(i.popUpSelector).attr(\"style\", function (e, s) {\n return s.replace(/display[^;]+;?/g, \"\")\n }), i.$path.removeClass(i.hoverClass + \" \" + s.bcClass).addClass(i.pathClass), n.find(\".\" + i.hoverClass).removeClass(i.hoverClass), i.onDestroy.call(n), n.removeData(\"sf-options\"), void 0) : !1\n })\n }, init: function (o) {\n return this.each(function () {\n var n = e(this);\n if (n.data(\"sf-options\"))return !1;\n var h = e.extend({}, e.fn.superfish.defaults, o), u = n.find(h.popUpSelector).parent(\"li\");\n h.$path = i(n, h), n.data(\"sf-options\", h), t(n, h), r(u), a(n), l(n, h), u.not(\".\" + s.bcClass).superfish(\"hide\", !0), h.onInit.call(this)\n })\n }\n }\n }();\n e.fn.superfish = function (o) {\n return s[o] ? s[o].apply(this, Array.prototype.slice.call(arguments, 1)) : \"object\" != typeof o && o ? e.error(\"Method \" + o + \" does not exist on jQuery.fn.superfish\") : s.init.apply(this, arguments)\n }, e.fn.superfish.defaults = {\n popUpSelector: \"ul,.sf-mega\",\n hoverClass: \"sfHover\",\n pathClass: \"overrideThisToUse\",\n pathLevels: 1,\n delay: 800,\n animation: {opacity: \"show\"},\n animationOut: {opacity: \"hide\"},\n speed: \"normal\",\n speedOut: \"fast\",\n cssArrows: !0,\n disableHI: !1,\n onInit: e.noop,\n onBeforeShow: e.noop,\n onShow: e.noop,\n onBeforeHide: e.noop,\n onHide: e.noop,\n onIdle: e.noop,\n onDestroy: e.noop\n }, e.fn.extend({hideSuperfishUl: s.hide, showSuperfishUl: s.show})\n})(jQuery);\n", "/*! Sidr - v1.2.1 - 2013-11-06\n * https://github.com/artberri/sidr\n * Copyright (c) 2013 Alberto Varela; Licensed MIT */\n(function (e) {\n var t = !1, i = !1, n = {\n isUrl: function (e) {\n var t = RegExp(\"^(https?:\\\\/\\\\/)?((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*(\\\\?[;&a-z\\\\d%_.~+=-]*)?(\\\\#[-a-z\\\\d_]*)?$\", \"i\");\n return t.test(e) ? !0 : !1\n }, loadContent: function (e, t) {\n e.html(t)\n }, addPrefix: function (e) {\n var t = e.attr(\"id\"), i = e.attr(\"class\");\n \"string\" == typeof t && \"\" !== t && e.attr(\"id\", t.replace(/([A-Za-z0-9_.\\-]+)/g, \"sidr-id-$1\")), \"string\" == typeof i && \"\" !== i && \"sidr-inner\" !== i && e.attr(\"class\", i.replace(/([A-Za-z0-9_.\\-]+)/g, \"sidr-class-$1\")), e.removeAttr(\"style\")\n }, execute: function (n, s, a) {\n \"function\" == typeof s ? (a = s, s = \"sidr\") : s || (s = \"sidr\");\n var r, d, l, c = e(\"#\" + s), u = e(c.data(\"body\")), f = e(\"html\"), p = c.outerWidth(!0), g = c.data(\"speed\"), h = c.data(\"side\"), m = c.data(\"displace\"), v = c.data(\"onOpen\"), y = c.data(\"onClose\"), x = \"sidr\" === s ? \"sidr-open\" : \"sidr-open \" + s + \"-open\";\n if (\"open\" === n || \"toggle\" === n && !c.is(\":visible\")) {\n if (c.is(\":visible\") || t)return;\n if (i !== !1)return o.close(i, function () {\n o.open(s)\n }), void 0;\n t = !0, \"left\" === h ? (r = {left: p + \"px\"}, d = {left: \"0px\"}) : (r = {right: p + \"px\"}, d = {right: \"0px\"}), u.is(\"body\") && (l = f.scrollTop(), f.css(\"overflow-x\", \"hidden\").scrollTop(l)), m ? u.addClass(\"sidr-animating\").css({\n width: u.width(),\n position: \"absolute\"\n }).animate(r, g, function () {\n e(this).addClass(x)\n }) : setTimeout(function () {\n e(this).addClass(x)\n }, g), c.css(\"display\", \"block\").animate(d, g, function () {\n t = !1, i = s, \"function\" == typeof a && a(s), u.removeClass(\"sidr-animating\")\n }), v()\n } else {\n if (!c.is(\":visible\") || t)return;\n t = !0, \"left\" === h ? (r = {left: 0}, d = {left: \"-\" + p + \"px\"}) : (r = {right: 0}, d = {right: \"-\" + p + \"px\"}), u.is(\"body\") && (l = f.scrollTop(), f.removeAttr(\"style\").scrollTop(l)), u.addClass(\"sidr-animating\").animate(r, g).removeClass(x), c.animate(d, g, function () {\n c.removeAttr(\"style\").hide(), u.removeAttr(\"style\"), e(\"html\").removeAttr(\"style\"), t = !1, i = !1, \"function\" == typeof a && a(s), u.removeClass(\"sidr-animating\")\n }), y()\n }\n }\n }, o = {\n open: function (e, t) {\n n.execute(\"open\", e, t)\n }, close: function (e, t) {\n n.execute(\"close\", e, t)\n }, toggle: function (e, t) {\n n.execute(\"toggle\", e, t)\n }, toogle: function (e, t) {\n n.execute(\"toggle\", e, t)\n }\n };\n e.sidr = function (t) {\n return o[t] ? o[t].apply(this, Array.prototype.slice.call(arguments, 1)) : \"function\" != typeof t && \"string\" != typeof t && t ? (e.error(\"Method \" + t + \" does not exist on jQuery.sidr\"), void 0) : o.toggle.apply(this, arguments)\n }, e.fn.sidr = function (t) {\n var i = e.extend({\n name: \"sidr\",\n speed: 200,\n side: \"left\",\n source: null,\n renaming: !0,\n body: \"body\",\n displace: !0,\n onOpen: function () {\n },\n onClose: function () {\n }\n }, t), s = i.name, a = e(\"#\" + s);\n if (0 === a.length && (a = e(\"
\").attr(\"id\", s).appendTo(e(\"body\"))), a.addClass(\"sidr\").addClass(i.side).data({\n speed: i.speed,\n side: i.side,\n body: i.body,\n displace: i.displace,\n onOpen: i.onOpen,\n onClose: i.onClose\n }), \"function\" == typeof i.source) {\n var r = i.source(s);\n n.loadContent(a, r)\n } else if (\"string\" == typeof i.source && n.isUrl(i.source))e.get(i.source, function (e) {\n n.loadContent(a, e)\n }); else if (\"string\" == typeof i.source) {\n var d = \"\", l = i.source.split(\",\");\n if (e.each(l, function (t, i) {\n d += '
' + e(i).html() + \"
\"\n }), i.renaming) {\n var c = e(\"
\").html(d);\n c.find(\"*\").each(function (t, i) {\n var o = e(i);\n n.addPrefix(o)\n }), d = c.html()\n }\n n.loadContent(a, d)\n } else null !== i.source && e.error(\"Invalid Sidr Source\");\n return this.each(function () {\n var t = e(this), i = t.data(\"sidr\");\n i || (t.data(\"sidr\", s), \"ontouchstart\" in document.documentElement ? (t.bind(\"touchstart\", function (e) {\n e.originalEvent.touches[0], this.touched = e.timeStamp\n }), t.bind(\"touchend\", function (e) {\n var t = Math.abs(e.timeStamp - this.touched);\n 200 > t && (e.preventDefault(), o.toggle(s))\n })) : t.click(function (e) {\n e.preventDefault(), o.toggle(s)\n }))\n })\n }\n})(jQuery);\n", "/* ========================================================================\n * Bootstrap: button.js v3.1.1\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state = state + 'Text'\n\n if (!data.resetText) $el.data('resetText', $el[val]())\n\n $el[val](data[state] || this.options[state])\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n else $parent.find('.active').removeClass('active')\n }\n if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document).on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n Plugin.call($btn, 'toggle')\n e.preventDefault()\n })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: collapse.js v3.1.1\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.transitioning = null\n\n if (this.options.parent) this.$parent = $(this.options.parent)\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n if (actives && actives.length) {\n var hasData = actives.data('bs.collapse')\n if (hasData && hasData.transitioning) return\n Plugin.call(actives, 'hide')\n hasData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n\n this.transitioning = 1\n\n var complete = function (e) {\n if (e && e.target != this.$element[0]) {\n this.$element\n .one($.support.transition.end, $.proxy(complete, this))\n return\n }\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .off($.support.transition.end + '.bs.collapse')\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .on($.support.transition.end + '.bs.collapse', $.proxy(complete, this))\n .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse')\n .removeClass('in')\n\n this.transitioning = 1\n\n var complete = function (e) {\n if (e && e.target != this.$element[0]) {\n this.$element\n .one($.support.transition.end, $.proxy(complete, this))\n return\n }\n this.transitioning = 0\n this.$element\n .trigger('hidden.bs.collapse')\n .removeClass('collapsing')\n .addClass('collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && option == 'show') option = !option\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this), href\n var target = $this.attr('data-target')\n || e.preventDefault()\n || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n var $target = $(target)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n var parent = $this.attr('data-parent')\n var $parent = parent && $(parent)\n\n if (!data || !data.transitioning) {\n if ($parent) $parent.find('[data-toggle=\"collapse\"][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n }\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: dropdown.js v3.1.1\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $('
').insertAfter($(this)).on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.trigger('focus')\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown', relatedTarget)\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27)/.test(e.keyCode)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive || (isActive && e.keyCode == 27)) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.divider):visible a'\n var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n if (!$items.length) return\n\n var index = $items.index($items.filter(':focus'))\n\n if (e.keyCode == 38 && index > 0) index-- // up\n if (e.keyCode == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $parent = getParent($(this))\n var relatedTarget = { relatedTarget: this }\n if (!$parent.hasClass('open')) return\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n if (e.isDefaultPrevented()) return\n $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n })\n }\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle + ', [role=\"menu\"], [role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: transition.js v3.1.1\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false, $el = this\n $(this).one($.support.transition.end, function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n })\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: tooltip.js v3.1.1\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n var that = this;\n\n var $tip = this.tip()\n\n this.setContent()\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var $parent = this.$element.parent()\n var parentDim = this.getPosition($parent)\n\n placement = placement == 'bottom' && pos.top + pos.height + actualHeight - parentDim.scroll > parentDim.height ? 'top' :\n placement == 'top' && pos.top - parentDim.scroll - actualHeight < 0 ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > parentDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < parentDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n this.hoverState = null\n\n var complete = function() {\n that.$element.trigger('shown.bs.' + that.type)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top = offset.top + marginTop\n offset.left = offset.left + marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var arrowDelta = delta.left ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowPosition = delta.left ? 'left' : 'top'\n var arrowOffsetPosition = delta.left ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], arrowPosition)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, position) {\n this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function () {\n var that = this\n var $tip = this.tip()\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n that.$element.trigger('hidden.bs.' + that.type)\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : null, {\n scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(),\n width: isBody ? $(window).width() : $element.outerWidth(),\n height: isBody ? $(window).height() : $element.outerHeight()\n }, isBody ? {top: 0, left: 0} : $element.offset())\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.tip = function () {\n return this.$tip = this.$tip || $(this.options.template)\n }\n\n Tooltip.prototype.arrow = function () {\n return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')\n }\n\n Tooltip.prototype.validate = function () {\n if (!this.$element[0].parentNode) {\n this.hide()\n this.$element = null\n this.options = null\n }\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n clearTimeout(this.timeout)\n this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && option == 'destroy') return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n", "/* ========================================================================\n * Bootstrap: popover.js v3.1.1\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').empty()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return this.$arrow = this.$arrow || this.tip().find('.arrow')\n }\n\n Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && option == 'destroy') return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n", "/* =========================================================\n * bootstrap-datepicker.js\n * Repo: https://github.com/eternicode/bootstrap-datepicker/\n * Demo: http://eternicode.github.io/bootstrap-datepicker/\n * Docs: http://bootstrap-datepicker.readthedocs.org/\n * Forked from http://www.eyecon.ro/bootstrap-datepicker\n * =========================================================\n * Started by Stefan Petre; improvements by Andrew Rowls + contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n(function($, undefined){\n\n\tvar $window = $(window);\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction alias(method){\n\t\treturn function(){\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n\t\t\t\t\tif (this[i].valueOf() === val)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.splice(0);\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = UTCToday();\n\t\tthis.focusDate = null;\n\n\t\tthis._process_options(options);\n\n\t\tthis.element = $(element);\n\t\tthis.isInline = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\n\t\tthis.picker = $(DPGlobal.template);\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tthis.viewMode = this.o.startView;\n\n\t\tif (this.o.calendarWeeks)\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t\t});\n\n\t\tthis._allow_update = false;\n\n\t\tthis.setStartDate(this._o.startDate);\n\t\tthis.setEndDate(this._o.endDate);\n\t\tthis.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis._allow_update = true;\n\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\tswitch (o.startView){\n\t\t\t\tcase 2:\n\t\t\t\tcase 'decade':\n\t\t\t\t\to.startView = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'year':\n\t\t\t\t\to.startView = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.startView = 0;\n\t\t\t}\n\n\t\t\tswitch (o.minViewMode){\n\t\t\t\tcase 1:\n\t\t\t\tcase 'months':\n\t\t\t\t\to.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'years':\n\t\t\t\t\to.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.minViewMode = 0;\n\t\t\t}\n\n\t\t\to.startView = Math.max(o.startView, o.minViewMode);\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t\telse\n\t\t\t\t\to.multidate = 1;\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = ((o.weekStart + 6) % 7);\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled||[];\n\t\t\tif (!$.isArray(o.daysOfWeekDisabled))\n\t\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\\s]*/);\n\t\t\to.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn (/^auto|left|right|top|bottom$/).test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn (/^left|right$/).test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn (/^top|bottom$/).test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t},\n\t\t_events: [],\n\t\t_secondaryEvents: [],\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n\t\t\tif (this.isInput){ // single input\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(function(e){\n\t\t\t\t\t\t\tif ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.component && this.hasInput){ // component: input + button\n\t\t\t\tthis._events = [\n\t\t\t\t\t// For components that are not readonly, allow keyboard nav\n\t\t\t\t\t[this.element.find('input'), {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(function(e){\n\t\t\t\t\t\t\tif ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}],\n\t\t\t\t\t[this.component, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.element.is('div')){ // inline datepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo('body');\n\t\t\tthis.picker.show();\n\t\t\tthis.place();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn;\n\t\t\tif (!this.picker.is(':visible'))\n\t\t\t\treturn;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.viewMode = this.o.startView;\n\t\t\tthis.showMode();\n\n\t\t\tif (\n\t\t\t\tthis.o.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val() ||\n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t},\n\n\t\tremove: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\treturn utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\treturn new Date(this.dates.get(-1));\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, $.map(args, this._utc_to_local));\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput){\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').val(formatted).change();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.element.val(formatted).change();\n\t\t\t}\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\twindowWidth = $window.width(),\n\t\t\t\twindowHeight = $window.height(),\n\t\t\t\tscrollTop = $window.scrollTop();\n\n\t\t\tvar zIndex = parseInt(this.element.parents().filter(function(){\n\t\t\t\t\treturn $(this).css('z-index') !== 'auto';\n\t\t\t\t}).first().css('z-index'))+10;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left,\n\t\t\t\ttop = offset.top;\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\t// Default to left\n\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\tif (offset.left < 0)\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\telse if (offset.left + calendarWidth > windowWidth)\n\t\t\t\t\tleft = windowWidth - calendarWidth - visualPadding;\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow, bottom_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + offset.top - calendarHeight;\n\t\t\t\tbottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);\n\t\t\t\tif (Math.max(top_overflow, bottom_overflow) === bottom_overflow)\n\t\t\t\t\tyorient = 'top';\n\t\t\t\telse\n\t\t\t\t\tyorient = 'bottom';\n\t\t\t}\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop += height;\n\t\t\telse\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\n\t\t\tthis.picker.css({\n\t\t\t\ttop: top,\n\t\t\t\tleft: left,\n\t\t\t\tzIndex: zIndex\n\t\t\t});\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.element.find('input').val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\tdate < this.o.startDate ||\n\t\t\t\t\tdate > this.o.endDate ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.dates.length)\n\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t}\n\t\t\telse if (dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates))\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length)\n\t\t\t\tthis._trigger('clearDate');\n\n\t\t\tthis.fill();\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\tvar cell = ' ';\n\t\t\t\thtml += cell;\n\t\t\t\tthis.picker.find('.datepicker-days thead tr:first-child').prepend(cell);\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += ''+dates[this.o.language].daysMin[(dowCnt++)%7]+'';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12){\n\t\t\t\thtml += ''+dates[this.o.language].monthsShort[i++]+'';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = new Date();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t}\n\t\t\telse if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\tif (this.o.todayHighlight &&\n\t\t\t\tdate.getUTCFullYear() === today.getFullYear() &&\n\t\t\t\tdate.getUTCMonth() === today.getMonth() &&\n\t\t\t\tdate.getUTCDate() === today.getDate()){\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||\n\t\t\t\t$.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n\t\t\t\ttooltip;\n\t\t\tthis.picker.find('.datepicker-days thead th.datepicker-switch')\n\t\t\t\t\t\t.text(dates[this.o.language].months[month]+' '+year);\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.text(todaytxt)\n\t\t\t\t\t\t.toggle(this.o.todayBtn !== false);\n\t\t\tthis.picker.find('tfoot th.clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.toggle(this.o.clearBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t\tprevMonth.setUTCDate(day);\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tvar before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof(before) === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof(before) === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t}\n\n\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\thtml.push(''+prevMonth.getUTCDate() + '');\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tvar years = $.map(this.dates, function(d){\n\t\t\t\t\treturn d.getUTCFullYear();\n\t\t\t\t}),\n\t\t\t\tclasses;\n\t\t\tfor (var i = -1; i < 11; i++){\n\t\t\t\tclasses = ['year'];\n\t\t\t\tif (i === -1)\n\t\t\t\t\tclasses.push('old');\n\t\t\t\telse if (i === 10)\n\t\t\t\t\tclasses.push('new');\n\t\t\t\tif ($.inArray(year, years) !== -1)\n\t\t\t\t\tclasses.push('active');\n\t\t\t\tif (year < startYear || year > endYear)\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\thtml += ''+year+'';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth();\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th'),\n\t\t\t\tyear, month, day;\n\t\t\tif (target.length === 1){\n\t\t\t\tswitch (target[0].nodeName.toLowerCase()){\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch (target[0].className){\n\t\t\t\t\t\t\tcase 'datepicker-switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch (this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tif (this.viewMode === 1)\n\t\t\t\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\n\t\t\t\t\t\t\t\tthis.showMode(-2);\n\t\t\t\t\t\t\t\tvar which = this.o.todayBtn === 'linked' ? null : 'view';\n\t\t\t\t\t\t\t\tthis._setDate(date, which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'clear':\n\t\t\t\t\t\t\t\tvar element;\n\t\t\t\t\t\t\t\tif (this.isInput)\n\t\t\t\t\t\t\t\t\telement = this.element;\n\t\t\t\t\t\t\t\telse if (this.component)\n\t\t\t\t\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t\t\t\t\tif (element)\n\t\t\t\t\t\t\t\t\telement.val(\"\").change();\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.is('.disabled')){\n\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\tif (target.is('.month')){\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 1){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 2){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day') && !target.is('.disabled')){\n\t\t\t\t\t\t\tday = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth();\n\t\t\t\t\t\t\tif (target.is('.old')){\n\t\t\t\t\t\t\t\tif (month === 0){\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (target.is('.new')){\n\t\t\t\t\t\t\t\tif (month === 11){\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\t$(this._focused_from).focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\t\t\telse if (ix !== -1){\n\t\t\t\tthis.dates.remove(ix);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif (!which || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tthis._trigger('changeDate');\n\t\t\tvar element;\n\t\t\tif (this.isInput){\n\t\t\t\telement = this.element;\n\t\t\t}\n\t\t\telse if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element){\n\t\t\t\telement.change();\n\t\t\t}\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (this.picker.is(':not(:visible)')){\n\t\t\t\tif (e.keyCode === 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newDate, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 38 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir * 7);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32: // spacebar\n\t\t\t\t\t// Spacebar is used in manually typing dates in some formats.\n\t\t\t\t\t// As such, its behavior should not be hijacked.\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\tdateChanged = true;\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput){\n\t\t\t\t\telement = this.element;\n\t\t\t\t}\n\t\t\t\telse if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element){\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir){\n\t\t\tif (dir){\n\t\t\t\tthis.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));\n\t\t\t}\n\t\t\tthis.picker\n\t\t\t\t.find('>div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)\n\t\t\t\t\t.css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\t$(this.inputs)\n\t\t\t.datepicker(options)\n\t\t\t.bind('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $(i).data('datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $(e.target).data('datepicker'),\n\t\t\t\tnew_date = dp.getUTCDate(),\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate())\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[i]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (i >= 0 && new_date < this.dates[i]){\n\t\t\t\t\tthis.pickers[i--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (new_date > this.dates[i]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (i < l && new_date > this.dates[i]){\n\t\t\t\t\tthis.pickers[i++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tremove: function(){\n\t\t\t$.map(this.pickers, function(p){ p.remove(); });\n\t\t\tdelete this.element.data().datepicker;\n\t\t}\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\t$.fn.datepicker = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.is('.input-daterange') || opts.inputs){\n\t\t\t\t\tvar ropts = {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t};\n\t\t\t\t\t$this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$this.data('datepicker', (data = new Datepicker(this, opts)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t\tif (internal_return !== undefined)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (internal_return !== undefined)\n\t\t\treturn internal_return;\n\t\telse\n\t\t\treturn this;\n\t};\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tweekStart: 0\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function(year){\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n\t\t},\n\t\tgetDaysInMonth: function(year, month){\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n\t\t},\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar part_re = /([\\-+]\\d+)([dmwy])/,\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/g),\n\t\t\t\tpart, dir, i;\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/.test(date)){\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch (part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);\n\t\t\t}\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\t\t\tdate = new Date();\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(v);\n\t\t\t\t\t},\n\t\t\t\t\tyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(2000+v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m === p;\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t'«'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t'»'+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t''\n\t};\n\tDPGlobal.template = '
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\t$this.datepicker('show');\n\t\t}\n\t);\n\t$(function(){\n\t\t$('[data-provide=\"datepicker-inline\"]').datepicker();\n\t});\n\n}(window.jQuery));\n", "/**\n * German translation for bootstrap-datepicker\n * Sam Zurcher \n */\n;(function($){\n\t$.fn.datepicker.dates['de'] = {\n\t\tdays: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\", \"Sonntag\"],\n\t\tdaysShort: [\"Son\", \"Mon\", \"Die\", \"Mit\", \"Don\", \"Fre\", \"Sam\", \"Son\"],\n\t\tdaysMin: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\", \"So\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"M\u00E4rz\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"M\u00E4r\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Heute\",\n\t\tclear: \"L\u00F6schen\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n", "$(function () {\n /**\n * sidr initialization\n * navbar for mobile\n */\n $('#menu-toggle').sidr({\n name: 'sidr-off-canvas',\n side: 'right',\n source: '.main-navigation'\n });\n\n\n /**\n * scroll to top\n */\n var didScroll = false,\n $arrow = $('#back-to-top');\n\n $arrow.click(function (e) {\n $('body,html').animate({scrollTop: \"0\"}, 750);\n e.preventDefault();\n });\n\n $(window).scroll(function () {\n didScroll = true;\n });\n\n setInterval(function () {\n if (didScroll) {\n didScroll = false;\n\n if ($(window).scrollTop() > 200) {\n $arrow.fadeIn();\n } else {\n $arrow.fadeOut();\n }\n }\n }, 250);\n\n\n /**\n * bootstrap tooltip\n */\n $('[rel^=tooltip]').tooltip();\n $('[data-toggle=\"tooltip\"]').tooltip();\n\n /**\n * initialize superfish menu, our main navbar\n */\n $('.sf-menu').superfish({\n delay: 200,\n animation: {opacity: 'show', height: 'show'},\n speed: 'fast',\n cssArrows: false,\n disableHI: true\n });\n $(\".main-navigation > ul > li:has(ul)\").find(\"a:first\").append(\" \");\n $(\".main-navigation > ul > li > ul > li:has(ul)\").find(\"a:first\").append(\" \");\n $(\".main-navigation > ul > li > ul > li > ul > li:has(ul)\").find(\"a:first\").append(\" \");\n\n // Centering the dropdown menus\n $(\".main-navigation ul li\").mouseover(function () {\n var the_width = $(this).find(\"a\").width();\n var child_width = $(this).find(\"ul\").width();\n var width = parseInt((child_width - the_width) / 2);\n $(this).find(\"ul\").css('left', -width);\n });\n\n /**\n * sticky nav\n */\n if ($(window).width() > 992) {\n $(\".lower-header\").sticky({topSpacing: 0});\n }\n\n /**\n * navbar countdown\n */\n // FrontPage Time Counter\n var counter = $('#counter');\n var expiryDate = counter.data('date');\n var target = new Date(expiryDate),\n finished = false;\n\n function callback(event) {\n var $this = $(this);\n switch (event.type) {\n case \"seconds\":\n case \"minutes\":\n case \"hours\":\n case \"days\":\n case \"weeks\":\n case \"daysLeft\":\n $this.find('div span#' + event.type).html(event.value);\n if (finished) {\n $this.fadeTo(0, 1);\n finished = false;\n }\n\n break;\n case \"finished\":\n $this.fadeTo('slow', .5);\n finished = true;\n break;\n }\n }\n\n counter.countdown(target.valueOf(), callback);\n\n /**\n * misc\n */\n // Heading Styles\n $(\".title\").each(function () {\n $(this).wrapInner(\"
\");\n });\n\n // fix featured projects width\n var width = $(\".featured-project-block\").width();\n $(\".project-overlay\").css(\"width\", width);\n});"], "mappings": "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", "names": ["EventListener", "eventTarget", "eventName", "eventOptions", "binding", "event", "extendedEvent", "extendEvent", "left", "right", "leftIndex", "rightIndex", "stopImmediatePropagation", "Dispatcher", "application", "eventListener", "listeners", "map", "clearEventListeners", "error", "message", "detail", "eventListenerMap", "cacheKey", "parts", "key", "defaultActionDescriptorFilters", "value", "element", "descriptorPattern", "parseActionDescriptorString", "descriptorString", "matches", "keyFilter", "parseEventTarget", "parseEventOptions", "eventTargetName", "options", "token", "stringifyEventTarget", "camelize", "_", "char", "namespaceCamelize", "capitalize", "dasherize", "tokenize", "isSomething", "object", "hasProperty", "property", "allModifiers", "Action", "index", "descriptor", "schema", "getDefaultEventNameForElement", "eventFilter", "filters", "standardFilter", "params", "pattern", "name", "match", "typecast", "meta", "ctrl", "alt", "shift", "modifier", "defaultEventNames", "e", "tagName", "Binding", "context", "action", "actionEvent", "method", "actionDescriptorFilters", "controller", "passes", "filter", "target", "currentTarget", "identifier", "ElementObserver", "delegate", "mutations", "callback", "mutation", "attributeName", "nodes", "node", "tree", "processor", "AttributeObserver", "add", "fetch", "del", "prune", "values", "Multimap", "set", "size", "_key", "_values", "SelectorObserver", "element", "selector", "delegate", "details", "ElementObserver", "Multimap", "callback", "matches", "tree", "match", "selectors", "_attributeName", "matchedBefore", "StringMapObserver", "mutations", "attributeName", "mutation", "oldValue", "key", "value", "attribute", "TokenListObserver", "AttributeObserver", "unmatchedTokens", "matchedTokens", "tokens", "token", "previousTokens", "currentTokens", "firstDifferingIndex", "zip", "previousToken", "currentToken", "tokensAreEqual", "tokenString", "parseTokenString", "content", "index", "left", "right", "length", "_", "ValueListObserver", "parseResult", "valuesByToken", "error", "BindingObserver", "context", "action", "binding", "Binding", "Action", "ValueObserver", "receiver", "descriptor", "name", "defaultValue", "writer", "rawValue", "rawOldValue", "changedMethodName", "changedMethod", "valueDescriptorMap", "descriptors", "hasMethodName", "capitalize", "TargetObserver", "_a", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "values", "getOwnStaticArrayValues", "readInheritableStaticObjectPairs", "pairs", "getOwnStaticObjectPairs", "definition", "OutletObserver", "outletName", "observer", "_selector", "outlet", "hasOutlet", "hasOutletController", "_element", "selectorObserver", "attributeObserver", "dependencies", "module", "identifiers", "Context", "scope", "functionName", "detail", "identifier", "controller", "message", "namespaceCamelize", "methodName", "args", "bless", "shadow", "getBlessedProperties", "properties", "shadowConstructor", "extend", "shadowProperties", "getShadowProperties", "blessedProperties", "blessing", "prototype", "getOwnKeys", "getShadowedDescriptor", "shadowingDescriptor", "object", "extendWithReflect", "extended", "testReflectExtension", "b", "blessDefinition", "Module", "application", "ClassMap", "tokenize", "DataMap", "dasherize", "Guide", "logger", "warnedKeys", "attributeValueContainsToken", "TargetSet", "targetName", "targetNames", "target", "targets", "targetDescriptor", "revisedAttributeName", "OutletSet", "controllerElement", "outletNames", "outlets", "controllerAttribute", "Scope", "_Scope", "schema", "ScopeObserver", "scopesByIdentifier", "referenceCount", "Router", "contexts", "afterLoad", "defaultSchema", "objectFromEntries", "c", "n", "array", "memo", "k", "v", "Application", "Dispatcher", "defaultActionDescriptorFilters", "domReady", "controllerConstructor", "filter", "head", "rest", "resolve", "ClassPropertiesBlessing", "classDefinition", "propertiesForClassDefinition", "classes", "OutletPropertiesBlessing", "outletDefinition", "propertiesForOutletDefinition", "getOutletController", "getControllerAndEnsureConnectedScope", "outletController", "camelizedName", "outletElement", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "propertiesForValueDefinitionPair", "read", "write", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "parseValueTypeDefault", "parseValueTypeObject", "payload", "typeObject", "hasType", "isSomething", "hasDefault", "fullObject", "onlyType", "onlyDefault", "typeFromObject", "typeFromDefaultValue", "propertyPath", "parseValueTypeDefinition", "typeFromConstant", "type", "defaultValueForDefinition", "defaultValuesByType", "hasProperty", "constantFromType", "camelize", "readers", "writers", "writeString", "writeJSON", "Controller", "_identifier", "_application", "eventName", "prefix", "bubbles", "cancelable", "event", "application", "Application", "cookie_consent_controller_default", "Controller", "_event", "_RailsNestedForm", "Controller", "e", "content", "event", "wrapper", "input", "RailsNestedForm", "nested_form_controller_default", "RailsNestedForm", "dates_calculator_controller_default", "Controller", "date", "alternativeDate", "addOrSubtract", "days", "weeks", "months", "years", "resultWrapper", "formattedDate", "formattedAlternativeDate", "string", "number", "monthNames", "day", "monthIndex", "monthName", "year", "timezones_controller_default", "Controller", "now", "utcTime", "cityTime", "hours", "minutes", "seconds", "currentTime", "__publicField", "application", "cookie_consent_controller_default", "nested_form_controller_default", "dates_calculator_controller_default", "timezones_controller_default", "$", "undefined", "rails", "$document", "xhr", "token", "csrfToken", "csrfParam", "obj", "name", "data", "event", "message", "options", "element", "method", "url", "elCrossDomain", "crossDomain", "withCredentials", "dataType", "button", "settings", "status", "error", "jqxhr", "link", "href", "target", "form", "metadataInput", "answer", "callback", "specifiedSelector", "nonBlank", "inputs", "input", "valueToCheck", "selector", "allInputs", "e", "originalOptions", "metaClick", "handleRemote", "remote", "blankRequiredInputs", "nonBlankFileInputs", "aborted", "$", "toDate", "callback", "handlers", "delegate", "scope", "method", "$this", "values", "lasting", "interval", "currentDate", "secondsLeft", "triggerEvents", "i", "eventName", "dispatchEvent", "stop", "event", "start", "removeEvent", "removeFunction", "$", "defaults", "$window", "$document", "sticked", "windowHeight", "scroller", "scrollTop", "documentHeight", "dwh", "extra", "i", "s", "elementTop", "etse", "newTop", "resizer", "methods", "options", "o", "stickyElement", "stickyId", "wrapper", "stickyWrapper", "method", "e", "s", "o", "t", "n", "i", "r", "a", "l", "u", "p", "h", "d", "f", "c", "e", "i", "n", "t", "s", "a", "r", "l", "c", "u", "f", "p", "g", "h", "m", "v", "y", "x", "o", "d", "$", "Button", "element", "options", "state", "d", "$el", "val", "data", "changed", "$parent", "$input", "Plugin", "option", "$this", "old", "e", "$btn", "$", "Collapse", "element", "options", "hasWidth", "startEvent", "actives", "hasData", "Plugin", "dimension", "complete", "e", "scrollSize", "option", "$this", "data", "old", "href", "target", "$target", "parent", "$parent", "$", "backdrop", "toggle", "Dropdown", "element", "e", "$this", "$parent", "getParent", "isActive", "clearMenus", "relatedTarget", "desc", "$items", "index", "selector", "Plugin", "option", "data", "old", "$", "transitionEnd", "el", "transEndEventNames", "name", "duration", "called", "$el", "callback", "$", "Tooltip", "element", "options", "type", "triggers", "i", "trigger", "eventIn", "eventOut", "defaults", "key", "value", "obj", "self", "e", "that", "$tip", "placement", "autoToken", "autoPlace", "pos", "actualWidth", "actualHeight", "orgPlacement", "$parent", "parentDim", "calculatedOffset", "complete", "offset", "width", "height", "marginTop", "marginLeft", "props", "delta", "arrowDelta", "arrowPosition", "arrowOffsetPosition", "dimension", "position", "title", "$e", "$element", "el", "isBody", "viewportPadding", "viewportDimensions", "topEdgeOffset", "bottomEdgeOffset", "leftEdgeOffset", "rightEdgeOffset", "o", "Plugin", "option", "$this", "data", "old", "$", "Popover", "element", "options", "$tip", "title", "content", "$e", "o", "Plugin", "option", "$this", "data", "old", "$", "undefined", "$window", "UTCDate", "UTCToday", "today", "alias", "method", "DateArray", "extras", "i", "d", "val", "l", "new_array", "Datepicker", "element", "options", "DPGlobal", "opts", "o", "lang", "dates", "defaults", "format", "plc", "_plc", "word", "evs", "el", "ch", "ev", "e", "event", "altdate", "date", "local_date", "ix", "utc", "local", "args", "formatted", "startDate", "endDate", "daysOfWeekDisabled", "calendarWidth", "calendarHeight", "visualPadding", "windowWidth", "windowHeight", "scrollTop", "zIndex", "offset", "height", "width", "left", "top", "yorient", "top_overflow", "bottom_overflow", "oldDates", "fromArgs", "dowCnt", "html", "cell", "range", "cls", "year", "month", "startYear", "startMonth", "endYear", "endMonth", "todaytxt", "cleartxt", "tooltip", "prevMonth", "day", "nextMonth", "clsName", "ws", "th", "yth", "calWeek", "before", "months", "yearCont", "years", "classes", "target", "dir", "which", "new_date", "mag", "new_month", "test", "dateChanged", "newDate", "newViewDate", "focusDate", "DateRangePicker", "p", "dp", "opts_from_el", "prefix", "data", "out", "inkey", "replace", "re_lower", "_", "a", "key", "opts_from_locale", "locale_opts", "k", "old", "option", "internal_return", "$this", "elopts", "xopts", "locopts", "ropts", "separators", "parts", "language", "part_re", "part", "parsed", "setters_order", "setters_map", "v", "filtered", "fparts", "match_part", "m", "cnt", "_date", "s", "seps", "$", "didScroll", "$arrow", "e", "the_width", "child_width", "width", "counter", "expiryDate", "target", "finished", "callback", "event", "$this"] }